Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Dec 14 19:13
    hwanders commented #4096
  • Dec 14 13:05
    IgorFedchenko commented #4085
  • Dec 14 03:08
    hhko commented #4094
  • Dec 13 21:37
    Aaronontheweb commented #4085
  • Dec 13 20:28
    IgorFedchenko commented #4085
  • Dec 13 20:27
    IgorFedchenko commented #4085
  • Dec 13 15:38
    Aaronontheweb labeled #4096
  • Dec 13 15:38
    Aaronontheweb milestoned #4096
  • Dec 13 15:38
    Aaronontheweb labeled #4096
  • Dec 13 15:38
    Aaronontheweb opened #4096
  • Dec 13 10:41
    peirens-bart opened #4095
  • Dec 13 08:37
    Aaronontheweb synchronize #4071
  • Dec 13 08:13
    jiyeongj opened #4094
  • Dec 12 15:42
    Aaronontheweb synchronize #4086
  • Dec 12 15:42
    Aaronontheweb closed #4083
  • Dec 12 15:42

    Aaronontheweb on dev

    Fix #4083 - Endpoint receive bu… (compare)

  • Dec 12 15:42
    Aaronontheweb closed #4089
  • Dec 12 15:42
    Aaronontheweb labeled #4093
  • Dec 12 15:42
    Aaronontheweb labeled #4093
  • Dec 12 15:42
    Aaronontheweb labeled #4093
Aaron Stannard
@Aaronontheweb
social capital is a huge part of the value of an OSS ecosystem in general
Vasily Kirichenko
@vasily-kirichenko
TBH, I like the java/scala community a lot more, than .NET and MS as a whole.
(so far :) )
Aaron Stannard
@Aaronontheweb
lol
I haven't been on the contribution side of any real JVM project much
Vasily Kirichenko
@vasily-kirichenko
I'm either ;)
but the "MS will do everything for us" mindset is unhealthy.
Aaron Stannard
@Aaronontheweb
totally agree
looking at some of the stuff MSFT is doing around .NET Core
i.e. killing off the need for third party libraries for things like dependency injection
helps create that mentality too
Vasily Kirichenko
@vasily-kirichenko
"oh, no, another shitty open source library..." - I heard this from C# devs several times.
yes.
Another good thing about jvm - a lot of libraries. It's shocking for the first time, especially after years writing F# :)
Aaron Stannard
@Aaronontheweb
there does seem to be an awfully large amount of NIH-ing in .NET sometimes
like there is some effort threshhold
where if the effort is low enough to just roll your own library, people will do that rather than coalesce around a standard
that's why there's like 30+ Zipkin client implementations in .NET, all missing different features / feature-completeness
there should still be some multiple choices / alternatives for libraries - helps keep the ecosystem healthy
but the ecosystem can never really take off if there isn't some knowledge institutionalized in the use of key ones
I'm really glad stuff like DotNetty and Akka.NET exists today; back when I first needed those tools five years ago I had to make them myself
so things are improving
but still lightyears behind the JVM ecosystem
consider it "intellectual debt" that the .NET ecosystem is gradually paying off
Vasily Kirichenko
@vasily-kirichenko
yep. About client libraries, I agree. Every time you need to talk to a new thing, you have to play russian roulette choosing a less buggy and feature full one. As most servers in big data world are run on jvm, you can always be sure that you use the most stable and idiomatic lib for it. The story with .NET Kafka client had been ridiculous for years - there hadn't been a single stable client. People literally could not work with it from .net. A team at my company ended up exposing a HTTP frontend for a Kafka cluster.
Vasily Kirichenko
@vasily-kirichenko
just applied cluster singleton :) works OK, but when I kill the node on which the actor is running, it takes about a minute to spawn it on another node. Could it be related to the fact that I use Consul?
@Horusiath ^^
Bartosz Sypytkowski
@Horusiath
@vasily-kirichenko It potentially could.
I don't remember right now if singleton migration is triggered when node becomes unreachable, or when it's marked as dead
but I'm almost sure that it's need to be identified as dead - unreachable nodes could happen in network partition quite often, so it would be bad to spawn another singleton as reaction for simple unreachability
Vasily Kirichenko
@vasily-kirichenko
the log is
12:47:29 INFO  [ClusterSingletonManager, 6] Previous oldest removed [akka.tcp://xxx@localhost:4888]
12:47:29 INFO  [ClusterSingletonManager, 6] Younger observed OldestChanged: [ -> myself]
12:47:29 INFO  [ClusterSingletonManager, 6] Singleton manager started singleton actor [akka://xxx]
12:47:29 INFO  [ClusterSingletonManager, 6] ClusterSingletonManager state change [Younger -> Oldest] Akka.Cluster.Tools.Singleton.YoungerData
12:47:29 INFO  [0, Culture=neutral, PublicKeyToken=null]], 9] Getting server list...
12:47:30 ERROR [OneForOneStrategy, 11] Object reference not set to an instance of an object. Object reference not set to an instance of an object.
BTW, I have no idea how to catch the exception on the last line.
What can it be?
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