Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 15:57
    Aaronontheweb closed #3877
  • 15:57
    Aaronontheweb commented #3877
  • 15:56

    Aaronontheweb on dev

    Persistence TestKit documentati… (compare)

  • 15:56
    Aaronontheweb closed #3889
  • 07:27
    dependabot-preview[bot] labeled #3999
  • 07:27

    dependabot-preview[bot] on nuget

    Bump FluentAssertions from 4.14… (compare)

  • 07:27
    dependabot-preview[bot] opened #3999
  • Oct 20 17:25
    valdisz synchronize #3889
  • Oct 20 17:17
    valdisz synchronize #3889
  • Oct 20 15:44
    valdisz synchronize #3889
  • Oct 20 09:22
    ismaelhamed commented #3863
  • Oct 19 23:39
    valdisz synchronize #3889
  • Oct 19 23:08
    edvinasz commented #2947
  • Oct 19 13:36
    Aaronontheweb commented #3973
  • Oct 19 13:34
    dependabot-preview[bot] synchronize #3995
  • Oct 19 13:34

    dependabot-preview[bot] on nuget

    Bump BenchmarkDotNet from 0.10.… (compare)

  • Oct 19 13:34
    dependabot-preview[bot] edited #3995
  • Oct 19 13:34
    dependabot-preview[bot] synchronize #3993
  • Oct 19 13:34

    dependabot-preview[bot] on nuget

    Bump Google.Protobuf from 3.9.1… (compare)

  • Oct 19 13:34
    dependabot-preview[bot] synchronize #3991
Bartosz Sypytkowski
@Horusiath
No idea. Do you use some custom supervision strategy?
Vasily Kirichenko
@vasily-kirichenko
No.
Don't even specify one explicitly.
Vasily Kirichenko
@vasily-kirichenko
@Horusiath I have another question :) That cluster singleton actor spawns a couple of other actors and a stream. As far as I understand, it's its responsibility to shutdown the stream when it's stopping. Do you find the following code good or there is a better / simpler way to do it?
let stream mat =
    Source...
    |> Source.viaMat (KillSwitches.Single()) Keep.both
    |> Source...
    |> Source.``to`` Sink.ignore
    |> Graph.run mat

let props (mat: IMaterializer) : Props =
    props(
        let rec loop (streamKillSwitch: IKillSwitch) (msg: obj) =
            match msg with
            | LifecycleEvent PostStop -> 
                streamKillSwitch.Shutdown()
                ignored()

            | _ -> unhandled()

        fun (ctx: Actor<obj>) ->
            let taskQueue, streamKillSwitch = stream mat
            spawn ctx "another-actor" (Another.props taskQueue) |> ignore
            become (loop streamKillSwitch)
    ).ToProps()
Deniz İrgin
@Blind-Striker
is it possible to define more than one dispatcher with different throughput to use in different actors. Like this ;
``` 
            custom-dispatcher-300 {
                type = Dispatcher
                throughput = 300
            }

            custom-dispatcher-400 {
                type = Dispatcher
                throughput = 400
            }

            custom-dispatcher-500 {
                type = Dispatcher
                throughput = 500
            }
``` 
Onur Gumus
@OnurGumus
@vasily-kirichenko how would you gracefully handover a singleton ?
Vasily Kirichenko
@vasily-kirichenko
@OnurGumus Interesting question. The singleton mechanism seem to be based on cluster membership events, so a singleton is not moved until the node is unreachable (IMHO).
Onur Gumus
@OnurGumus
I am thinking calling Cluster.Leave
however not sure how graceful it would be
Vasily Kirichenko
@vasily-kirichenko
but why do you need to move it to another node?
Onur Gumus
@OnurGumus
The reason is I have two processes running. Ocassionally we want to upgrade the application. So we stop one, handover happens, upgrade the stopped, then start and stop the 2nd one.
So that we don't have downtime.
during the upgrade process.
I am not sure if this is the bestway though
Vasily Kirichenko
@vasily-kirichenko
so you want to switch fast? I dunno.
Onur Gumus
@OnurGumus
Yes. I think this should be combined with a coordinated shutdown
Vasily Kirichenko
@vasily-kirichenko
I played with it today and it took about a minute :(
Onur Gumus
@OnurGumus
No that's obviously wrong
Vasily Kirichenko
@vasily-kirichenko
The docs promise it should take "seconds"
Onur Gumus
@OnurGumus
it is almost instant for me but do you use splitbrain ?
How do you down the other ?
Vasily Kirichenko
@vasily-kirichenko
I suspect the Consul was the issue
Onur Gumus
@OnurGumus
Even if you close the application, you need to "down" it.
Vasily Kirichenko
@vasily-kirichenko
Ctrl+C :)
Onur Gumus
@OnurGumus
that's not sufficient for handover
you also have to down it.
Vasily Kirichenko
@vasily-kirichenko
so the other nodes log that it's unreachable for that minute
Onur Gumus
@OnurGumus
Either use auto down config or use split brain
Then it is normal
Vasily Kirichenko
@vasily-kirichenko
auto down is evil! evil!
:)
Onur Gumus
@OnurGumus
Use split brain then.
Vasily Kirichenko
@vasily-kirichenko
how?
resolver you mean?
Onur Gumus
@OnurGumus
It is very simple and documented
Yes
Vasily Kirichenko
@vasily-kirichenko
ah. will read about it.
Onur Gumus
@OnurGumus
to tackle with network partitioning
Vasily Kirichenko
@vasily-kirichenko
However, it's not very important in my case. The actor is just a batch worker, nobody even sends messages to it.
so a minute downtime is ok
Onur Gumus
@OnurGumus
no it is not okay
you have to down it by some means
if you don't down it then I don't know maybe then it is okay
Bartosz Sypytkowski
@Horusiath
@vasily-kirichenko kill switch invoked on PostStop seems fine.
@OnurGumus if you're able to tell cluster to leave gracefully i.e. via Cluster.LeaveAsync, it's always better - @vasily-kirichenko case regards non-graceful scenario, when the cluster must detect dead node instead of being explicitly informed about it leaving
Onur Gumus
@OnurGumus
I think it is not possible to use both loggers : ["Akka.TestKit.TestEventListener, Akka.TestKit","Akka.Logger.Serilog.SerilogLogger, Akka.Logger.Serilog"]
As first one treats curly braces as string format and the other one doesn't
Bartosz Sypytkowski
@Horusiath
I would really like to create some reference example on how to design .net apps with akka.net - the only problem is that I need some well defined domain, where such use makes sense. I don't want to invent something by myself from thin air
I can think about few domains, but they'd be using only small parts of akka. Not a comprehensive example.
Ondrej Pialek
@ondrejpialek
If you want to help me design a sharded ecommerce Akka-powered app let me know :)