by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • May 28 19:06
    snekbaev opened #4446
  • May 28 10:43
    Zetanova commented #4434
  • May 28 06:49

    dependabot-preview[bot] on nuget

    Bump Google.Protobuf from 3.12.… (compare)

  • May 28 06:49
    dependabot-preview[bot] labeled #4445
  • May 28 06:49
    dependabot-preview[bot] opened #4445
  • May 28 00:03
    Aaronontheweb commented #4434
  • May 27 23:41
    Zetanova commented #4434
  • May 27 22:57
    Zetanova commented #4434
  • May 27 22:34
    Aaronontheweb commented #4419
  • May 27 15:54
    Ralf1108 commented #4432
  • May 27 14:42
    Ralf1108 commented #4419
  • May 27 09:41
    Zetanova commented #4434
  • May 27 06:38
    dependabot-preview[bot] labeled #141
  • May 27 06:38
    dependabot-preview[bot] opened #141
  • May 27 06:38

    dependabot-preview[bot] on nuget

    Bump AkkaVersion from 1.4.6 to … (compare)

  • May 27 06:33

    dependabot-preview[bot] on nuget

    (compare)

  • May 27 06:33
    dependabot-preview[bot] closed #156
  • May 27 06:33
    dependabot-preview[bot] commented #156
  • May 27 06:33
    dependabot-preview[bot] labeled #157
  • May 27 06:33
    dependabot-preview[bot] opened #157
Aaron Stannard
@Aaronontheweb
and then it invokes the callback
so it's not literally blocking a thread
Andrey Leskov
@andreyleskov

Hi all, trying to build client to remote akka system using association. Using test:

public class AssociationErrorTest
    {
        public class EchoActor : ReceiveActor
        {
            public EchoActor(){Receive<object>(m => Sender.Tell(m));}
        }

        [Fact]
        public async Task Test_association()
        {
            var server = ActorSystem.Create("server", @"akka { actor.provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""
                                                               remote.dot-netty.tcp { port = 10001 
                                                                                      hostname = localhost}}");
            var serverActor = server.ActorOf<EchoActor>(nameof(EchoActor));
            var client = ActorSystem.Create("client", @"akka{ actor.provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""
                                                                remote.dot-netty.tcp { port = 0
                                                                                       hostname = localhost}}");
            var remoteActorRef = await client.ActorSelection(@"akka.tcp://server@localhost:10001/user/EchoActor").ResolveOne(TimeSpan.FromSeconds(5));
            await remoteActorRef.Ask<string>("Hello");
        }
    }

if I run it as single test, all is OK . But if I run it with bunch of test, actor selection hangs. Got error from internals:

17-10-05 17:50:08.366 [DBG TH193] Src:[remoting
 "Associated [akka.tcp://server@localhost:10001] <- akka.tcp://client@localhost:5703"

17-10-05 17:50:08.375 [DBG TH201] Src:[endpointWriter#116268940]
 "Associated [akka.tcp://client@localhost:5703] -> akka.tcp://server@localhost:10001"

17-10-05 17:50:08.375 [DBG TH201] Src:[endpointWriter#116268940]
 Drained buffer with maxWriteCount: 50, fullBackoffCount: 1,smallBackoffCount: 0, noBackoffCount: 0,adaptiveBackoff: 1000

17-10-05 17:50:08.388 [DBG TH201] Src:[client)
 Resolve of path sequence [/"temp/N"] failed

looks like client system cannot locate temp actor during Ask()
Can anybody suggest reasons? May be I need some additional configuration ?

Aaron Stannard
@Aaronontheweb
@andreyleskov dollars to donuts
issue is either going to be a static variable that is shared among the actor system instances and this test is running with AppDomains turned off
or one of the remote actor systems is replying to an actor who has since terminated
Andrey Leskov
@andreyleskov
sounds reasonable, but in test above I don't use anything static
may be something inside akka system itself?
Aaron Stannard
@Aaronontheweb
yeah that's what I meant
the name counter we use for naming temporary actors
might be one
Andrey Leskov
@andreyleskov
ooh
you are right
I see letter for temp actor always increasing ))
ok, will run such tests in separate domains
Stijn Herreman
@stijnherreman
I'm having trouble doing more than one transition in an FSM. Not sure if it's a problem with the FSM code or if it's a problem with the unit tests. Simple and full reproducible example at https://stackoverflow.com/questions/46588702/why-does-this-fsm-only-succeed-at-one-state-transition if anyone wants to take a look.
Andrey Leskov
@andreyleskov
thank you a lot for blazing fast answer ! @Aaronontheweb
Stijn Herreman
@stijnherreman
(Is it OK to ask for support here, by the way?)
Aaron Stannard
@Aaronontheweb
@stijnherreman yep, good to ask but it's always good to use StackOverflow so other people can find the answer when they google later
I left an answer on the SO thread
but you need to add a handler for the Done state
otherwise that state is undefined by the FSM
Stijn Herreman
@stijnherreman
@Aaronontheweb thanks! I was stuck on this for a couple of hours already, trying a bunch of different things.
Aaron Stannard
@Aaronontheweb
did that suggestion work?
Stijn Herreman
@stijnherreman
Yes, see the comment to your answer
Aaron Stannard
@Aaronontheweb
ah nice
good deal, I'd been getting behind in racking up my SO karma
Stijn Herreman
@stijnherreman
Heh :) on that topic, not that I have a shortage of rep but feel free to upvote the questions :)
Andrew Young
@ayoung
@Danthar thanks. what about with the default wire format or hyperion?
Arsene
@Tochemey
Hello can someone educate on NBench and probably what is its use and a tutorial.
Natan Vivo
@nvivo
What is the best way to detect if the node is unreachable from within the unreachable node? Will it see the other nodes as unreachable or does it set any status internally to detect this?
I was actually wondering is there is a way to completely avoid the idea of unreachable nodes, and make it just reconnect. I know currently the cluster algorithm depends on that but I'm coming to the conclusion it's simpler to not have these controls and deal with the other issues than deal with unreachable nodes
The fact is that the cloud is a very unstable place, and as the number of nodes go up, I'm having unreachable nodes twice a day now due to conditions I cannot control. These nodes eventually come back, but while that is happening the cluster gets unusable.
Natan Vivo
@nvivo
Created a discussion on #3144
would like to hear some thoughts on that
Bartosz Sypytkowski
@Horusiath
@nvivo if you think of cluster as a graph, unreachability is a property of a graph's edge, not a node itself (nor a subset of the graph)
in general if A sees B as unreachable, B should see A as unreachable too, but this may not happen at exactly the same moment
also AFAIK unreachable nodes are trying to reconnect to each other every 5s (by default)
also #3099 should help a little - it introduces an extra node status, that will allow you to use nodes even before cluster reaches full convergence (which is hard to achieve when node churn is big)
carnogursky
@carnogursky
Hi, please, could someone advise how to implement SSL certificates to the TCP communication (Akka.IO)?
Bartosz Sypytkowski
@Horusiath
@carnogursky I'm working on it. The closest approach would be to implement DotNetty's style TlsHandler as akka actor
carnogursky
@carnogursky
@Horusiath Thank you. Please, could you give me some more detailed hint? I do not know how TslHandler in DotNetty works...
Bartosz Sypytkowski
@Horusiath
@carnogursky this is a pretty complex stuff, I'm not sure if you want to dig deep into it. TLS needs its handshaking and secure stream handled - so far, only mature API for SSL in .NET is SslStream. However in akka actors and IO streams talks via ByteString. Because of that we need an adapter stream between actor and SslStream.
carnogursky
@carnogursky
@Horusiath It looks like DotNetty has a solution, which can be implemented easier? Had checked theis examples of server, you suggested it coulf be implemented as Actor?
Bartosz Sypytkowski
@Horusiath
DotNetty has a solution, but it's easier only if you want to use DotNetty directly
Jalal EL-SHAER
@jalchr
@Horusiath in DistributedData ... why would a 'Get' operation throw exception rather than returning null for a specific key ?
2017-10-09 01:17:37,203 [71] ERROR Akka.Actor.OneForOneStrategy - One or more errors occurred.
System.AggregateException: One or more errors occurred. ---> Akka.DistributedData.DataDeletedException: Cannot retrieve data under key [146324.mpg]. It has been permanently deleted and the key cannot be reused.
   at Akka.DistributedData.DistributedData.<GetAsync>d__13`1.MoveNext()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at System.Threading.Tasks.Task`1.get_Result()
   at Archive.VideoProcessing.Akka.VideoProviderWatcherActor.<Watch>b__10_4(FileFinished msg)
   at lambda_method(Closure , Object , Action`1 , Action`1 , Action`1 , Action`1 , Action`1 , Action`1 , Action`1 , Action`1 , Action`1 , Action`1 )
   at Akka.Tools.MatchHandler.PartialHandlerArgumentsCapture`11.Handle(T value)
   at Akka.Actor.ReceiveActor.ExecutePartialMessageHandler(Object message, PartialAction`1 partialAction)
   at Akka.Actor.ReceiveActor.OnReceive(Object message)
   at Akka.Actor.UntypedActor.Receive(Object message)
   at Akka.Actor.ActorBase.AroundReceive(Receive receive, Object message)
   at Akka.Actor.ActorCell.ReceiveMessage(Object message)
   at Akka.Actor.ActorCell.Invoke(Envelope envelope)
---> (Inner Exception #0) Akka.DistributedData.DataDeletedException: Cannot retrieve data under key [146324.mpg]. It has been permanently deleted and the key cannot be reused.
   at Akka.DistributedData.DistributedData.<GetAsync>d__13`1.MoveNext()<---
Stijn Herreman
@stijnherreman
@alexvaluyskiy any idea if it's possible to have packages that can target netstandard1.6 (like Akka.Remote), additionally also target netstandard2.0? The NETStandard.Library 1.6 package is a meta package and suffers from dependency bloat (few dozen dependencies), this was fixed in the 2.0 package. Since my application targets net461, I managed to work around this by first manually installing NETStandard.Library 2.0 and then updating Akka.Remote.
But probably not every users realises they can do this, so perhaps it's possible to help them out. I'm not sure though if NuGet is smart enough to pick the highest possible target, when installing a package (e.g. it should pick netstandard2.0 if possible, over netstandard1.6)
Bartosz Sypytkowski
@Horusiath
@jalchr
  1. null should be returned in v1.3.1
  2. DistributedData methods are meant to be used outside actor context, inside actors using traditional message passing is a lot faster. Also message based API is bigger and gives more power i.e. you can subscribe to receive updates of target CRDT as they come.
  3. Keep in mind that DistributedData is not meant for high volume of data. If you want to use it for message delivery, you may eventually run out of memory.
Jalal EL-SHAER
@jalchr
@Horusiath I'm using DistributedData to track state across multiple nodes that share same 'file processing'. I'm using it like a "Shared Dictionary". So its a kind of acknowledgement at the business level. The processing of files takes time, so performance is not an issue.
When you say "run-out-of-memory", do you mean that state is never cleaned ? I'm ensuring that I remove everything that is marked as "done processing". Are we safe ?