Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Jun 17 22:05
    Aaronontheweb synchronize #5098
  • Jun 17 22:01
    Arkatufus synchronize #5099
  • Jun 17 20:31
    Aaronontheweb synchronize #5099
  • Jun 17 20:31
    Aaronontheweb labeled #5099
  • Jun 17 20:31
    Aaronontheweb labeled #5099
  • Jun 17 20:31
    Aaronontheweb milestoned #5099
  • Jun 17 20:21
    Arkatufus opened #5099
  • Jun 17 19:19
    Aaronontheweb synchronize #5098
  • Jun 17 19:17
    Aaronontheweb commented #5098
  • Jun 17 19:17
    Aaronontheweb synchronize #5098
  • Jun 17 16:29
    Aaronontheweb commented #5098
  • Jun 17 16:28
    Aaronontheweb commented #5098
  • Jun 17 16:27
    Aaronontheweb synchronize #5098
  • Jun 17 16:24
    Aaronontheweb synchronize #5098
  • Jun 17 16:00
    Aaronontheweb synchronize #5098
  • Jun 17 15:59
    Aaronontheweb commented #5098
  • Jun 17 15:49
    Aaronontheweb opened #5098
  • Jun 17 15:49
    Aaronontheweb labeled #5098
  • Jun 17 15:49
    Aaronontheweb labeled #5098
  • Jun 17 12:32

    Aaronontheweb on nuget

    (compare)

Ralf
@Ralf1108
I use this "RecieveTimout" message to passivate the actor
now if I send only a management message to the actor I dont want it to extend the "RecieveTimeout" timespan.
Andreas Dirnberger
@Zetanova
@Ralf1108 yes, if you need to free the actor because of some pressure, implement a shutdown command, that u can send from the coordinator
if the actor can passivate it will, if not it will ignore the shutdown and receivetimeout
even if u ignore on command like GetStatistics for the receivetimeout, the sender of GetStatistics dont know if its alive or not, the coordinator would need to reply or start the actor
Chris Ochs
@gamemachine
Anyone have suggestions for a good azure setup for realtime/stateful/low latency apps?
Ralf
@Ralf1108
check this scenarios:

actor A
coordinator C

Scenario 1

  • A sets RecieveTimout(5 min)
  • A recieves no message in time
  • after 5 min scheduler send A "RecieveTimout" message
  • A sends "Passivate" message to coordinator
  • ...passivating is going on

Scenario 2

  • A sets RecieveTimout(5 min)
  • A has nothing to do for 4 min
  • A recieves a "management" message (should not influence RecieveTimout but now scheduler will extend RecieveTimout to 5 min again)
  • Passivating will be postponed to further 5 min -> Scenario 2 restarts
in scenario the passivating of the actor is postponed because there a unimportant management message
Andreas Dirnberger
@Zetanova
A sets RecieveTimout(1 min) => if(--retirement == 0) Passivate()
but i would even make on ReceiveTimeout: Self.Tell(Shutdown.Instance)
On Shutdown: if(CanPassivate) Passivate()
Ralf
@Ralf1108
so with the field "retirement " i have to handle this myself?
and when to increase the "retirement" counter? on each important message?
Andreas Dirnberger
@Zetanova
somehow to make some sort of Helper Classes that extends the actor with features
but i am not there jet by myself
Ralf
@Ralf1108
maybe my assumption was wrong. Is the RecieveTimeout canceled before each message is handled and I have to call "SetRecieveTimeout" everytime?
Andreas Dirnberger
@Zetanova
No, it is firing until u pass Null to it
Ralf
@Ralf1108
but if a message was handled the timeperiod is extendend to the value of the last "SetRecieveTimeout()"?
Andreas Dirnberger
@Zetanova
yes it will extened again but also mybe fired short before after the message
i am getting them in burts
and often delayed
Ralf
@Ralf1108
ok.. my idea was only to not extend the timeout period if message with specific marker interfaces were handled
Ralf
@Ralf1108
with "system.ActorSelection("user/*")" I only get the first hierarchy level of the actors
is there a way to specify all actors below users with all children?
and subchildren and grandchildren and so on ....
Vagif Abilov
@object
Hello, now with deprecation of PersistentViews I am a bit lost about capabilities to monitor state changes of persistent actors. We want to build a Web site that visualizes both journals and snapshots, i.e. it will display the flow of state changes across all actors (possibly also state snapshots). I've found a few examples using SingalR but they were limited to receiving events for some specific actors. But is there a way to receive system-wide state changes for persistent actors?
Bartosz Sypytkowski
@Horusiath
@Ralf1108 AFAIK there has been implemented marker interface to mark messages, which are not supposed to break receive timeout. However it may be not included in the latest release.
@object persistent views will be obsoleted in the favor of akka.persistence.query, which will allow to build streams on top of event journals - depending on the journal, you will be able to track mulitple different persistence ids with it
Vagif Abilov
@object
@Horusiath and until Persistence.Query is ported there is no built-in way to track persistence changes across multiple actors? Would you recommend reading journals and snapshots right from the physical data store (i.e. SQL Server) or there are less dirty ways?
Bartosz Sypytkowski
@Horusiath
there is persistent query mechanism for sql-based journals, standard message based, but I'm hoping to obsolete it once streams + persistence query will come out
Ralf
@Ralf1108
@Horusiath thx for the info! can you give me a hint of the name from the marker interface?
Bartosz Sypytkowski
@Horusiath
@Ralf1108 this is the PR: akkadotnet/akka.net#1835 not merged yet
Jeroen de Haas
@dajero
I have created a server-client system with Akka.Remote and I am wondering what the best way is to disconnect a client from the server without seeing DissociatedExceptions in my server's log
Ralf
@Ralf1108
yes... could be that I saw this yesterday.. but didn't remember it correctly :-)
Vagif Abilov
@object
@Horusiath you mentioned "persistent query mechanism for sql-based journals", can you please point me to some docs or examples that use it?
Vagif Abilov
@object
I guess it must be Akka.Persistence.Sql.Commons.
Chris G. Stevens
@cgstevens
Akka.Cluster.Tools question.
I am doing the following and I expect that if I kill off the remote actor that it would trigger the Terminated message but it does not seem to be doing that.
Receive<ClusterManager.SubscribeToManager>(ic =>
            {
                Program.MyActorSystem.Settings.InjectTopLevelFallback(ClusterClientReceptionist.DefaultConfig());
                clusterClient = Program.MyActorSystem.ActorOf(ClusterClient.Props(ClusterClientSettings.Create(Program.MyActorSystem)));
                Context.Watch(clusterClient);
                clusterClient.Tell(new ClusterClient.Send(ActorPaths.ClusterManagerActor.Path, new ClusterManager.SubscribeToManager()));
            });

            Receive<Terminated>(ic =>
            {
                _logger.Info("Address Terminated: {0}", ic.AddressTerminated.ToString());
            });
Kris Schepers
@schepersk
Any idea when akkadotnet/Akka.Persistence.SqlServer#24 will be merged and a new nuget package will be published?
Bartosz Sypytkowski
@Horusiath
@object akkadotnet/akka.net#1306
John Nicholas
@MrTortoise
has anyone run the cluster sample recently? I just grabbed it and it seems liek the protobuff nuget package stuff is fubar ... just me?
John Nicholas
@MrTortoise
the protobuf nuget has no dll in it :/
John Nicholas
@MrTortoise
am i going insane?
Boban Pavloski
@bobanco

@Horusiath do you have any idea why Sink.FromSubscriber gives this error

[INFO][16-Apr-16 14:10:51][Thread 0008][akka://ReactiveRabbit/user/StreamSupervisor-0/Flow-0-0-unknown-operation] Message RequestMore from NoSender to akka://ReactiveRabbit/user/StreamSupervisor-0/Flow-0-0-unknown-operation was not delivered. 1 dead letters encountered.

here is how it's called

          var trailMessages = new List<string> { "message1","message2", "message3"};

            Source.From(trailMessages)
                .Map(
                    msg =>
                        new Message(Encoding.UTF8.GetBytes(msg)))
                .RunWith(Sink.FromSubscriber(connection.Publish(inboundExchange.Name, "")), mat);
btw am porting ReactiveRabbit to .net which is based on akka stream
Boban Pavloski
@bobanco
here is the Subscriber implemenration
       internal class ExchangeSubscriber : ISubscriber<Routed>
    {
        private readonly IModel _channel;
        private readonly string _exchange;
        private readonly AtomicReference<ISubscription> _active = new AtomicReference<ISubscription>();
        private int _publishingThreadRunning = 0;//can have 2 values, 0 means not running, 1 means running.
        private readonly ConcurrentQueue<Routed> _buffer = new ConcurrentQueue<Routed>();
        private int _closeRequested = 0;//can have 2 values, 0 means not requested, 1 means requested.

        public ExchangeSubscriber(IModel channel, string exchange)
        {
            if (exchange.Length >= 255)
                throw new ArgumentOutOfRangeException(nameof(exchange), exchange.Length, "exchange.Length>=255");
            _channel = channel;
            _exchange = exchange;
        }
        public void OnNext(Routed element)
        {
            if(element==null)
                throw new ArgumentNullException(nameof(element));
            _buffer.Enqueue(element);
            var running = Interlocked.Exchange(ref _publishingThreadRunning, 1);
            if (running == 0)
            {

                Task.Factory.StartNew(PublishFromBuffer, TaskCreationOptions.AttachedToParent);//revisit this
            }

        }

        private void PublishFromBuffer()
        {
            Routed element;
            if (_buffer.TryDequeue(out element))
            {
                Publish(element);
            }
            var nonEmpty = _buffer.Count > 0;
            Interlocked.Exchange(ref _publishingThreadRunning, nonEmpty ? 1 : 0);
            if(nonEmpty)
                PublishFromBuffer();
        }

        private void Publish(Routed routed)
        {
            try
            {
                _channel.BasicPublish(_exchange, routed.RoutingKey,
                    Conversions.ToBasicProperties(routed.Message),
                    routed.Message.Body);
                _active.Value.Request(1);
            }
            catch (Exception ex)
            {
                _active.Value.Cancel();
                CloseChannel();
            }
        }

        public void OnSubscribe(ISubscription subscription)
        {
            var sub = _active.CompareAndSet(null, subscription);
            if(sub)
                subscription.Request(1);
            else
            {
                subscription.Cancel();
            }
        }

        public void OnError(Exception cause)
        {
            ShutdownWhenFinished();
        }

        public void OnComplete()
        {
            ShutdownWhenFinished();
        }

        public void OnNext(object element)
        {
           OnNext((Routed)element);
        }

        private void CloseChannel()
        {
            var closedRequested = Interlocked.Exchange(ref _closeRequested, 1) == 0;
            lock (_channel)
            {
                if (closedRequested && _channel.IsOpen)
                    _channel.Close();
            }
        }

        private void ShutdownWhenFinished()
        {
            //        Future {
            //            publishingThreadRunning.single.await(!_)
            //  closeChannel()
            //}
            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    if (Thread.VolatileRead(ref _publishingThreadRunning) == 0)
                        break;
                }
            }, TaskCreationOptions.AttachedToParent).Wait();
            CloseChannel();
        }
    }
Bartosz Sypytkowski
@Horusiath
@bobanco it's not necessarily an error - it point out that actor on which your flow materializes, is probably dead. Maybe you've closed the actor system before flow has finished? (also another part is that streams are WIP, and if I remember correctly there were some problems with closing streams, detected by testkit)
dilvishjohn
@dilvishjohn
Hi, all. I have a problem to make akka work at latest ASP.NET 5, but there are no dll's fot DNX 5.0 core framework. Is there any workaroud exist about how to fix it?
Roger Johansson
@rogeralsing
no, there are a lot of parts that needs to be ported before akka.net works with .net core ... there is some progress going on, but no where near complete
Vagif Abilov
@object
Saw that 1.0.7 PR has been accepted for Akka.Persistence.SqlServer. That's a great news, I will start using it right away and hope that NuGet package will also be released soon.