Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 17:53
    Aaronontheweb closed #3972
  • 17:53
    Aaronontheweb commented #3972
  • 17:53
    Aaronontheweb closed #3976
  • 17:53
    Aaronontheweb commented #3976
  • 17:40

    Aaronontheweb on dev

    cleaned up some samples to use … (compare)

  • 17:40
    Aaronontheweb closed #3975
  • 16:33
    IgorFedchenko synchronize #3973
  • 16:31
    IgorFedchenko synchronize #3973
  • 14:04
    wsvdyk opened #3976
  • Oct 14 21:02
    Aaronontheweb synchronize #3975
  • Oct 14 21:02
    Aaronontheweb opened #3975
  • Oct 14 20:11
    IgorFedchenko commented #3973
  • Oct 14 20:10
    IgorFedchenko synchronize #3973
  • Oct 14 20:06
    IgorFedchenko synchronize #3973
  • Oct 14 20:06
    IgorFedchenko synchronize #3973
  • Oct 14 19:42
    IgorFedchenko edited #3973
  • Oct 14 18:08
    Aaronontheweb commented #3937
  • Oct 14 17:27
    Aaronontheweb commented #90
  • Oct 14 17:26
    Aaronontheweb commented #90
  • Oct 14 17:25
    Aaronontheweb assigned #90
Aaron Stannard
@Aaronontheweb
issue with FAKE?
Running build failed.
Error:
System.Exception: Start of process  failed. Cannot start process because a file name has not been provided.
   at Fake.ProcessHelper.ExecProcessWithLambdas@76-16.Invoke(String message) in C:\code\fake\src\app\FakeLib\ProcessHelp
er.fs:line 76
   at Fake.ProcessHelper.ExecProcessWithLambdas(FSharpFunc`2 configProcessStartInfoF, TimeSpan timeOut, Boolean silent,
FSharpFunc`2 errorF, FSharpFunc`2 messageF) in C:\code\fake\src\app\FakeLib\ProcessHelper.fs:line 76
   at Fake.MSTest.MSTest(FSharpFunc`2 setParams, IEnumerable`1 assemblies) in C:\code\fake\src\app\FakeLib\UnitTest\MSTe
st.fs:line 100
   at FSI_0001.Build.clo@209-14.Invoke(Unit _arg9) in D:\Repositories\olympus\akka.net\build.fsx:line 218
   at Fake.TargetHelper.runSingleTarget(TargetTemplate`1 target) in C:\code\fake\src\app\FakeLib\TargetHelper.fs:line 48
3
Aaron Stannard
@Aaronontheweb
FAKE seems to break all the time
Aaron Stannard
@Aaronontheweb
might be a local issue this time since I uninstalled 3 older versions of VS over the weekend
Aaron Stannard
@Aaronontheweb
yeah, that was the issue
symbolic link FTW
Zetanova
@Zetanova
@Horusiath If the process-actor is Telling multiple AR an update-command the process-actor should wait on the answer of the AR's before it send the completed message to the caller. Should i just implement it with a counter ina child-actor to receive the answer of the AR's?
And the next one: If the process-actor is with a router (smallest inbox) it would need to host the real process-actor as a child, so that the process-actor can hold new commands from the router back until the child terminates. looks very complicated ... schould it be? The hole router would be then pointless. Until the process-actor would lock itself over the time of the processing and communication to the AR's and Caller (Cancel) over a child actor.
Bartosz Sypytkowski
@Horusiath
@Zetanova
  1. You could just store actors, which you'll send update message to, in separate struct like Set. Then wait for them to respond, and take of all responders from the set. Once set is empty or timeout will occur (using SetReceiveTimeout) you could send completion/failure message.
  2. Probably router is not a good choice in this scenario.
Zetanova
@Zetanova
thx, with the set it will be possible to distinguished between the caller of the process (cancel) and the response from the AR's. i will host the processes over the ActorCordinator.
Zetanova
@Zetanova
@Horusiath The problem/question with the long running process is not solved. If i am hosting it over ActorTaskScheduler.RunTask() no new messages will be porcessed (answers and cancel)
cyril andreichuk
@andreichuk

hi. i have the next section in my HOCON config:

dedicated-dispatcher {
                        type = PinnedDispatcher
                        throughput = 100
                    }

this line

var userApp = _actorSystem.ActorOf(Props.Create<UserAppActor>().WithDispatcher("dedicated-dispatcher"), "user-app");

throws an exception "Akka.Configuration.ConfigurationException: Dispatcher [dedicated-dispatcher] not configured for path ..." though the documentation says that a dispatcher can be set using code here http://getakka.net/docs/working-with-actors/Dispatchers#configuring-dispatchers
so such a behavior is a bug?

Zetanova
@Zetanova
@Horusiath i am basicly getting data from a external service and looking it up on the read-model. If found i send to the AR an updateCommand, if not i send to the AR an addCommand. The AR's on UpdateEvent would Tell the State back. this State i need to send back to the caller of the process. This task can run over 30min
Zetanova
@Zetanova
Where/how to host this thread/process? Should i create for every entity of the feed (external service) a subCommand on a background thread?
its getting somehow complicated :(
Yin Zhang
@melcloud
Hi guys. I am revisiting the akka design pattern course. Can any explain to me why the way IdentityWriterActor uses CanProceed is a very weak manner?
Aaron Stannard
@Aaronontheweb
@melcloud
Whoops - typing on mobile
Yin Zhang
@melcloud
:smile:
Aaron Stannard
@Aaronontheweb
That code is naive on purpose
It's just to illustrate a way to implement some sort of consensus model using messages
Yin Zhang
@melcloud
I see.
Aaron Stannard
@Aaronontheweb
It's good enough for non distributed contexts if you add some metadata
Yin Zhang
@melcloud
So if I have a AtLeastOnceDeliveryActor, should I use this to do idempotent check?
Bartosz Sypytkowski
@Horusiath
@Zetanova which part is supposed to take 30min? Only sending the state back or the whole process?
Bartosz Sypytkowski
@Horusiath
Maybe this is obious, but basically each actor playing in the saga is supposed to persist all incoming events.
I don't see, where TaskScheduler should be used.
Hussein Ait-Lahcen
@hussein-aitlahcen
@Horusiath What is the best way to delay the delivery of a message ? ScheduleTellOnce ? I have two actors A and B, a tells B to update, B send back it state, A compute the next time it should update and delay the update message in order to have a constant intervall between updates
cyril andreichuk
@andreichuk
hi. is there any way to set actor's dispatcher? i was not able to do so using HOCON config (i do not use deployment), nor by code (because of the exception i posted here last night). any help?
Bartosz Sypytkowski
@Horusiath
@hussein-aitlahcen you could just schedule interval for updates directly in actor B, and let actor A subscribe to actor B for updates. This way when scheduled tick occurs, B updates it's state and send it to all subscribers
but remember that schedulers have limited resolution, as they work in intervals themselfs (by default it's around 10ms)
@andreichuk my guess is that string, you've provided in dispatcher is invalid, but maybe it's a bug. Could you write an issue on github and describe your case?
cyril andreichuk
@andreichuk
maybe. could you please provide me with an full example of dispatcher configuration?
there are some examples in the docs but they are not full so it's not clear where exactly put dispatcher configuration there
Hussein Ait-Lahcen
@hussein-aitlahcen
@Horusiath Assuming my actor need to be update 60 times per second, can i predict the Scheduler interval (will not be accurate of course) by deducting the 10 ms ?
This is a critical point of my system
Bartosz Sypytkowski
@Horusiath
I know that you can configure the interval, but I'm not sure, how will it behave in intervals lower than 10ms. I don't think, it was designed for high time sensitivity, but for 60 frames/sec it should be sufficient. However if I were you, I would check if it fits your needs
Hussein Ait-Lahcen
@hussein-aitlahcen
So you think that i should do that outside the actor system
Bartosz Sypytkowski
@Horusiath
no, I think that you should measure first ;)
don't be driven by the belief. If you won't measure and stay with built-in scheduler, it may give you some performance problems later. But if it turns out it's sufficient, but you've moved this part outside an actor system, then you may end with unnecessarily complicated solution
cyril andreichuk
@andreichuk
after downloading and debugging the sources i fixed my issue by providing a full path of the dispatcher. like this:
.WithDispatcher("akka.dedicated-dispatcher")
Zetanova
@Zetanova
@Horusiath the process to download the data can take 30min, its an import from the external system. Because this process relays on the read-model for index lookup, maybe should it just be outside? the AR have near the same ImportCommand. It just query the external service for the data and generates a Created+Updated Event. On CreateCommand the AR is creating the external account first and generates the Created Event.
Zetanova
@Zetanova
I moved the process from outside to an actor-process so it can run to the end when the client disconnects and i got a error that the actor "akka.persistence.snapshot-store.sql-server" is not unique!" Its still coming
some race conditions
when i push messages to the AR
Bartosz Sypytkowski
@Horusiath
@Zetanova yes, it's a bug. Could you create an issue for that?
Zetanova
@Zetanova
just looking in to it
how to force the creation of the snapshot extension?
Bartosz Sypytkowski
@Horusiath
create persistent actor with snapshot store configured, and initialize it by sending a message
Zetanova
@Zetanova
Its something related to a Lazy<Extension> that will becreated twice in race condition