Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 06:54

    dependabot-preview[bot] on nuget

    Bump FSharp.Core from 4.5.0 to … (compare)

  • 06:54
    dependabot-preview[bot] labeled #4046
  • 06:54
    dependabot-preview[bot] opened #4046
  • Nov 17 23:00
    djm132 opened #4045
  • Nov 17 21:35
    ColinPM opened #4044
  • Nov 17 16:05
    Zetanova commented #4032
  • Nov 16 16:14
    IgorFedchenko commented #4032
  • Nov 16 13:19
    ismaelhamed synchronize #4042
  • Nov 16 13:17
    ismaelhamed commented #3863
  • Nov 16 11:47
    IgorFedchenko synchronize #4032
  • Nov 16 11:47
    IgorFedchenko commented #4032
  • Nov 16 11:21
    ismaelhamed synchronize #3863
  • Nov 16 11:17
    ismaelhamed edited #3863
  • Nov 16 11:17
    ismaelhamed synchronize #4042
  • Nov 16 09:58
    IgorFedchenko synchronize #4032
  • Nov 16 09:49
    IgorFedchenko synchronize #4032
  • Nov 16 09:45
    IgorFedchenko commented #4032
  • Nov 16 09:17
    ismaelhamed opened #4043
  • Nov 16 09:03
    ismaelhamed opened #4042
  • Nov 16 09:03
    IgorFedchenko commented #4032
Stephen Newman
@goodisontoffee
@ZoolWay same version here, the propagation of the subscriptions does take a small amount of time - are you allowing any?
Ricky Blankenaufulland
@ZoolWay
first node goes up. can wait for a minute, second node goes up (subscribe too) and publishes, the first node does not get it... it think that should be enough time
Stephen Newman
@goodisontoffee
@ZoolWay My solution was nodes one and two up and joined to a seed node. Subscription registered on node 1, took a few moments for node 2 to receive knowledge of this subscription (via gossip I presume) - eventually consistent.
Ricky Blankenaufulland
@ZoolWay
hmm, ok
when node 2 goes up maybe it will not forward to node 1 because it needs time to know about node 1 having subscribed (minutes before)
Stephen Newman
@goodisontoffee
that's my assumption, give node 2 some time to receive that knowledge
Ricky Blankenaufulland
@ZoolWay
I wanted something like "hey i am here, who else is here doing this?"
did not occur to me that I should not ask before others told node 2 they have subscribed...
I'll give it a try
Ricky Blankenaufulland
@ZoolWay
@goodisontoffee You were right. It takes some time. But it feels odd to wait 10s before publishing... either I will have to publish in intervals or there should be some kind of message when the subscription "is ready"...
Arjen Smits
@Danthar
there is an subscribeAck message that is returned once the subscription has succeeded
you can listen to that (?)
Stephen Newman
@goodisontoffee
Does that get fired once all the other nodes in the cluster have received knowledge of the subscription, or does the local pub sub mediator fire it once it's accepted the subscription?
Arjen Smits
@Danthar
that is fired once there is cluster consensus
Stephen Newman
@goodisontoffee
sweet
Arjen Smits
@Danthar
Ricky Blankenaufulland
@ZoolWay
@Danthar I disagree. I was publishing on SubscribeAck but it did not get delivered to other nodes
Either thats a bug or it is just because my own subscription is committed to the cluster - but not that I received all of the other subscriptions
Arjen Smits
@Danthar
@ZoolWay thats odd. As far as i understand it. You should receive an SubscribeAck back once the subscription process has been completed on all nodes. /cc @Horusiath
Ricky Blankenaufulland
@ZoolWay
let me sum up my observation:
node 1 starts and subscribes to topic, gets subscribe-ack, publishes and of course only itself gets the message
node 2 starts and subscribes to topic, gets subscribe-ack, publishes and only itself gets the message - after some time (just tested 10s but might work with less) publishes again and both nodes get the messages
to the SubscribeAck seems to acknoledge my new subscription but not necessarily that I got all subscription from other nodes... when you think about it, how could you ever know you got all of those?
Arjen Smits
@Danthar
@ZoolWay the local mediator publishes its state via cluster gossip to the other nodes
the interval at which it does so is configurable via de config
not sure at what interval its implemented now
Ricky Blankenaufulland
@ZoolWay
default config is 1s
but like always with time, you cannot 100% be sure
for my use case I will require to publish update regulary so I can live with that for now
Arjen Smits
@Danthar
When the node is UP, the local mediator receives the current cluster state
not sure at what time that state is received
Ricky Blankenaufulland
@ZoolWay
Does the CurrentClusterState include all cluster-known subscriptions?
Arjen Smits
@Danthar
no only the nodes
so it knows which nodes have which roles
The more i look at this, the more it becomes clear that there is a clear tradeoff between availability and consistency
if it would be highly consistent, it would mean pubsub would not be available untill it received all updates.
if you have a large cluster
that can potentially take a while
so the default implementation opts for availability
while consistency can be added fairly easy
hmm, i was thinking in terms of atleastonce delivery mechanisms on your publish messages
but that would mean on broadcast messages you would have to know how many subscribers there are
which is no good
Vagif Abilov
@object
@Horusiath We have probably found the cause for an issue in SQL adapter but something needs to be clarified, I commented here: akkadotnet/Akka.Persistence.SqlServer#46
Ricky Blankenaufulland
@ZoolWay
@Danthar Yeah, turns out you have to decide. So if you want everyone in pub-sub to know something, you have to repeat to near yourself to be eventually consistent.
Arjen Smits
@Danthar
Well i suppose if you as a publisher really want to make sure every listener has received your message. As the architect of your application, you would know where your subscribers live. So you would know that for example, there is always 1 subscriber per node. That knowledge would enable you to do an atleastonce delivery mechanism. In combination with querying the cluster state to know how many nodes there are up.
And usually if you publish a message. And a new node that is coming up, does not receive that message. Well thats to bad. It will get the next one.
Shamsul Amry
@ShamsulAmry

@ShamsulAmry if your using the local evenstream you can easily create partition spaces by prefixing the topic your subscribing and publishing on with the tenantid

@Danthar by "prefixing the topic", did you mean to add a property to the event object instance passed to Context.System.EventStream.Publish() and filter on that property when receiving the messages?

Arjen Smits
@Danthar
@ShamsulAmry Yup. that is one way. Thats the easiest way. However if you feel that creating a separate infrastructure for doing multi-tenant pub/sub is a better fit. By all means. Do so. There is no obvious right or wrong here.
Shamsul Amry
@ShamsulAmry
@Danthar Thanks. Asked in case I will be losing out on any features I didn't know about if I used new EventStream() for each tenant instead of using the one pre-created with the ActorSystem.
Голодный Монстр
@Kalinin_Aleks_twitter
Hi all! I need help! I have the problem with "EndpointDisassociatedException". If I do restart remote actor I am receiving the message in logs:
[akka://ARS-Runner-System/system/endpointManager/reliableEndpointWriter-akka.tcp%3a%2f%2fARSSystem%40127.0.0.1%3a2551-1] Association with remote system akka.tcp://ARSSystem@127.0.0.1:2551 has failed; address is now gated for 5000 ms. Reason is: [Akka.Remote.EndpointDisassociatedException: Disassociated
at Akka.Remote.EndpointWriter.PublishAndThrow(Exception reason, LogLevel level)
at Akka.Remote.EndpointWriter.Unhandled(Object message)
at Akka.Actor.ActorCell.<>cDisplayClass109_0.<Akka.Actor.IUntypedActorContext.Become>b0(Object m)
at Akka.Actor.ActorBase.AroundReceive(Receive receive, Object message)
at Akka.Actor.ActorCell.ReceiveMessage(Object message)
at Akka.Actor.ActorCell.AutoReceiveMessage(Envelope envelope)
at Akka.Actor.ActorCell.Invoke(Envelope envelope)]
And I can't catch this Exception for restarting the system because it is not "RemotingLifecycleEvent" and internal Exception. How can I handle the error? Thanks