Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Nov 14 23:12
    Aaronontheweb commented #4038
  • Nov 14 23:11
    Aaronontheweb synchronize #4038
  • Nov 14 23:08
    Aaronontheweb opened #4038
  • Nov 14 22:55

    Aaronontheweb on 1.3.16

    (compare)

  • Nov 14 22:54

    Aaronontheweb on master

    close #3935 - Akka.Persistence.… fix: data provided to AndThen (… Akka.Persistence.Query: made Of… and 13 more (compare)

  • Nov 14 22:53
    Aaronontheweb closed #4037
  • Nov 14 21:39
    Aaronontheweb synchronize #4037
  • Nov 14 21:39
    Aaronontheweb ready_for_review #4037
  • Nov 14 19:57
    Aaronontheweb synchronize #4037
  • Nov 14 19:53
    Aaronontheweb commented #4037
  • Nov 14 19:51
    Aaronontheweb opened #4037
  • Nov 14 19:08
    Aaronontheweb synchronize #4036
  • Nov 14 19:02
    Aaronontheweb opened #4036
  • Nov 14 16:48
    IgorFedchenko synchronize #4022
  • Nov 14 16:25
    Aaronontheweb commented #4035
  • Nov 14 16:24
    Aaronontheweb commented #4022
  • Nov 14 16:23
    Aaronontheweb labeled #4035
  • Nov 14 16:23
    Aaronontheweb labeled #4035
  • Nov 14 16:23
    Aaronontheweb opened #4035
  • Nov 14 16:21
    Aaronontheweb commented #4022
Chris Ochs
@gamemachine
not at all, but given it seems time based it's difficult to debug without running from source.
Aaron Stannard
@Aaronontheweb
we push our .PDBs to symbol source
so you should, in theory, be able to do step-through debugging, but yeah
that's kind of an impractical way to do it given that step-through won't hit
all of the concurrent and async stuff
happening in the background over the network
Chris Ochs
@gamemachine
ya guess I'm kind of old school, I like to just look at where I think it is, put in some logging, rinse repeat until I narrow it down
anyways I'll file ticket a bit later, this has been haunting me for a while
Chris G. Stevens
@cgstevens
Question. I have multiple members that do work and have a common status to report back to a managing dashboard that is is also a member part of the cluster using the Cluster.Tools with PubSub. That is simple with an Interface and Publish to my Topic. My problem is I have details that are unique now for each worker. What is a good approach? Before I was sending just a object with simple common stats but now my classes that have those extra properties outside of the interface are null. Before I go down any rabbit holes I figure I would ask. Thank you so much in advanced.
Chris G. Stevens
@cgstevens
Can you have an immutable object that has a dynamic property? Hmm
Chris Karcz
@ckarcz
Hi guys. I have a question. I have some legacy code I'd like to run in a distributed manner (cluster). I'd like to deploy a small service (w/ Actor) that creates its own supervised cluster that it distributes work to (group). I'd like to be able to create these child actors in their own AppDomains. The legacy code is not threadsafe and so I'd like to host these child actors in their own app domain. What's the best way to go about this? I'd like to have one main process that spawns these children (deploying remote actors in their own app domain would be great features too
My thoughts being I deploy one instance of the service (a group router), and its either configured to spawn x children in their own appdomain on startup (or like i mentioned above, it starts up and these children are remotely deployed from else where, in their own app domains). Is there a way to hook into remote/router child creation to take over the creation in oder to initialize child in separate appdomain?
Maciej Wódke
@mwpro

Hi everyone! I'm struggling with extending class for already persisted messages. I added new field, new messages are serializing propeply but when I try to recover my actor I receive

Persistence failure when replaying events for persistenceId [someId]. Last known sequence number [8]", "timestamp": "2017-01-31 09:30:05.9723", "stack": "System.InvalidCastException: Okre\u015blone rzutowanie jest nieprawid\u0142owe.\r\n   w lambda_method(Closure , Stream , DeserializerSession )\r\n   w Hyperion.ValueSerializers.ObjectSerializer.ReadValue(Stream stream, DeserializerSession session)\r\n   w Hyperion.Serializer.Deserialize[T](Stream stream)\r\n   w Akka.Serialization.HyperionSerializer.FromBinary(Byte[] bytes, Type type)\r\n   w Akka.Persistence.Sql.Common.Journal.AbstractQueryExecutor.ReadEvent(DbDataReader reader)\r\n   w Akka.Persistence.Sql.Common.Journal.AbstractQueryExecutor.<SelectByPersistenceIdAsync>d__44.MoveNext()\r\n--- Koniec \u015bladu stosu z poprzedniej lokalizacji, w kt\u00f3rej wyst\u0105pi\u0142 wyj\u0105tek ---\r\n   w System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   w System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   w Akka.Persistence.Sql.Common.Journal.SqlJournal.<ReplayMessagesAsync>d__32.MoveNext()" }

According to Hyperion's documentation, it's version tolerant, so as far as I understand this therm, it means I should be able to add/remove field to the contract. I created simple project https://github.com/mwpro/Hyperion-VerionTolerance that reproduces my issues. Can you guys look at it please and tell me if I am doing something wrong or if there is some king of bug with version tolerance?

Bartosz Sypytkowski
@Horusiath
@mwpro using default serializer for persistence is generally a bad idea (Hyperion was created for remoting in mind)
until it gets to 1.0, binary encoding may change anyway
I'll take a look at it later, it may be a sign of a bug in the implementation
Maciej Wódke
@mwpro
@Horusiath thanks for reply. So I should switch my app to another serializer like ProtoBuf or MS Bond (as suggested in Hyperion docs) to avoid versioning problems. From your experience, is any of them is ready for production use with Akka.Persistence?
Bartosz Sypytkowski
@Horusiath
yes, I'd consider protobuf and ms bond a pretty mature options - I'm a fan of having well-defined schema files, as they make your data contracts explicit, so you can version them in explicit way too. But tbh you need to test yourself. Maybe simple json serializer will be enough for you.
also remember, that serialization sometimes depends on persistent provider you're going to use (i.e. MongoDB uses custom bson-based, Postrgres can be configured to use jsonb column type)
Alex Michel
@amichel
@ckarcz Why would you bother with appdomain and not just run separate processes? You will need remoting anyway, so it will be transparent with Akka to have them in different cluster nodes on same or separate machines.
Alex Michel
@amichel
@cgstevens will sending collections work for you? send lists of key/value tuples if you want to work loosely typed.
if you want strongly typed messaging, consider encapsulation
Nick Cuthbert
@ncthbrt
I was watching this NDC video, and the presenter was running 5 identical nodes of an actor systems on a single machine: https://vimeo.com/189191045
What advantages would this give you if any?
Chris G. Stevens
@cgstevens
Thanks @amichel I think the KeyValue will work just fine for what I need and I think I have a plan.
Jose Carlos Marquez
@oeaoaueaa
@ncthbrt maybe queuing and concurrency control?
Chris Karcz
@ckarcz
For my question- My thinking is that the parent actor can have children and monitor them as akka normally supports, the only difference being them running in a separate app domains. If one app domain crashes or runs out of memory (remember this is old legacy code) it would not affect the others and the parent would hopefully be able to restart a new child in a new app domain and retry. It'd also be easy to spawn child actors from configuration/message/code instead of deploying more instances of a service/package to the same machine, which when using a CD tool (octopus/xldelploy) is not straightforward.
Maxim Cherednik
@maxcherednik
To deploy an extra node is not that complicated with octopus.
What you are asking is doable, but separate machine is cleaner I guess.
wingedmachine
@wingedmachine
I have an actor I'm stopping, and afterwards it doesn't respond to messages (as expected), but it also doesn't send a Terminated message to a watching actor, and if I try to make a new actor with the same name, I get an exception because the name isn't unique. Does anyone know what could be causing that?
wingedmachine
@wingedmachine
Oh, nevermind. One of the actor's children had while(true) going on, and wasn't checking it's messages
Chris G. Stevens
@cgstevens
It would appear that I have a really bad production memory leak :worried: I have just started to dig and using the memory profiler it appears that it is the EF and data objects are not getting disposed. The normal use that the service I am using was originally designed is for our websites. I guess I could kill that actor off and recreate it but not sure I understand if that actor would get a new kernel or context and does everything go dispose correctly. I'm using DI to inject the service and tried a couple different scopes with the same result. Just not sure what the issue is really yet but wanted ask if any has had any similar issues. Should the data context be disposed or can it live forever?
So far I'm not seeing anything that stands out. Perhaps I'm actually doing a mutable object somewhere. I don't know. Will continue tomorrow. Thanks for any advice!
Chris G. Stevens
@cgstevens
@ckarcz I am using team city and I have it so I can deploy my services which is a member of the cluster to the same or different machine based on the configuration. Changing service name and port. Has worked out well for having 3 Dev environments on the same system and then push it to QA and prod. Then the same for our websites. Each member does have a specific role.
Chris Karcz
@ckarcz
@cgstevens I was thinking it'd be nice to have a web GUI view of the cluster and be able to select a router and deploy child actors via this web interface (permissions) instead of going another to a other deployment "manager" (docker, octopus, xldeploy, team city, etc).
Chris G. Stevens
@cgstevens
@ckarcz I gotcha and sounds cool.
Yip-Yip
@Yip-Yip
Is there a Akka.net solution similar to Kamon.io for monitoring reactive systems ?
Bartosz Sypytkowski
@Horusiath
@mwpro regarding your yesterday question about Hyperion serializer: could you tell me please, where your problem actually lies? From what I see, all of those are standard issues of people overusing schema changes. Maybe it should be written more explicitly but Hyperion version tolerance is limited to adding new fields to existing schema and changing field names if their position and type (or to be more explicit binary representation of the value) doesn't change
Maciej Wódke
@mwpro

@Horusiath In my example, when I once serialize my object with two properties (string and int, Step 1), and then I add a new property to the class I cannot have my object deserialized (steps 3, 4, 5). Adding a new field only worked for a string property at the end of class (step 2).

But if the order and type of fields matters as you said, then it makes some sense why they are not deserialized properly.

scottBat
@scottBat
in the type safe information at https://github.com/typesafehub/config#uses-of-substitutions it gives an example with subsitutiions and merging. “inheritance” as it call it. The example:
data-center-generic = { cluster-size = 6 }
data-center-east = ${data-center-generic}
data-center-east = { name = "east" }
data-center-west = ${data-center-generic}
data-center-west = { name = "west", cluster-size = 8 }
Should yield a merged config, but the hocon parser in Akka.net 1.1.3 does not seem to parse correctly. It doesn’t merge. Is this a known issue?
Arsene T. Gandote
@Tochemey
Hello Akka geeks, can someone explain to me how message immutability plays well with generic type?
Arsene T. Gandote
@Tochemey
Hello
Maxim Cherednik
@maxcherednik
hi
can you extend a bit ?
Arsene T. Gandote
@Tochemey

Is it safe to do something like this looking at the thread safe beauty of Akka.Net

public class SomeMessage<T> {
    public SomeMessage(T data){
        Data = data;
    }
    public T Data{get;}
}

where T is also a immutable object?

so that in my receive I can proceed like
Receive<SomeMessage<T>>();
Maxim Cherednik
@maxcherednik
Should be fine.
I have it in my project.
Arsene T. Gandote
@Tochemey
@maxcherednik Thank you
Natan Vivo
@nvivo
looking in the archives but I cannot find it. how do I subscribe to an event that tells me the cluster is up?
Sometimes google does magic :)
Natan Vivo
@nvivo
thanks