Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 16:19
    valdisz synchronize #3904
  • 14:58
    Aaronontheweb synchronize #3924
  • 14:58
    Aaronontheweb commented #3922
  • 14:45
    valdisz synchronize #3904
  • 14:43
    valdisz synchronize #3904
  • 14:35
    Aaronontheweb commented #3925
  • 09:51
    cptjazz opened #3925
  • 09:11
    cptjazz opened #3924
  • Sep 20 23:30

    Aaronontheweb on dev

    added ability to support custom… (compare)

  • Sep 20 23:30
    Aaronontheweb closed #3923
  • Sep 20 23:30
    Aaronontheweb closed #3861
  • Sep 20 23:26
    Aaronontheweb opened #3923
  • Sep 20 23:01
    Aaronontheweb commented #3922
  • Sep 20 22:59
    Aaronontheweb closed #3890
  • Sep 20 22:59
    Aaronontheweb commented #3890
  • Sep 20 22:58
    Aaronontheweb synchronize #3922
  • Sep 20 22:58
    Aaronontheweb opened #3922
  • Sep 20 22:21
    Aaronontheweb commented #3905
  • Sep 20 22:21

    Aaronontheweb on dev

    Fixed Akka.Remote.ResendUnfulfi… (compare)

  • Sep 20 22:21
    Aaronontheweb closed #3914
Thomas Lazar
@thomaslazar
is there a way to find out from an IActorRef what the type of the actual underlying actor is?
Bartosz Sypytkowski
@Horusiath
@thomaslazar nope, there is no correlation there
Thomas Lazar
@thomaslazar
ok. other question. can i somehow convert a IActorRef into a TestActorRef?
i have an actor i want to test. i send it a message and get an IActorRef in return and i just want to make sure that it's actually the actor i want.
Bartosz Sypytkowski
@Horusiath
you could do this for LocalActorRef but first think, if YAGNI
Thomas Lazar
@thomaslazar
well my situation is this. i have an actor A that creates 2 child actors B and C, both are doing stuff with resources. A has messages E/F that are used to return an IActorRef of B or C so code can work with the underlying resources. if certain stuff happens A tells B and C to shut down and when nobody is using them anymore they kill themselves. A creates a new B and C that get handed off to new caller asking message E/F. i just want to test sending message E and F if i get their corresponding B and C types back.
Bartosz Sypytkowski
@Horusiath
it sounds, like you're trying to test implementation (type of an actor) instead of behavior (what actor does). You could just invoke the test scenario. It's like duck typing - if actor behaves like B, it means it's B. If not and it behaves like C, it means, you've invoked C
Thomas Lazar
@thomaslazar
yeah... but that would make a simple "check if type is B" into "send actorref messages and see if it is actually the actor i wanted", which would be much more code.
Zetanova
@Zetanova
Akka.Persistence.Journal.AsyncWriteJournal.HandleWriteMessages(Akka.Persistence.WriteMessages message )
"New transaction is not allowed because there are other threads running in the session."
Zetanova
@Zetanova
@Horusiath If a command handler is Persiting two events and the Event Handler fails on the first event. On Recover of the AR will both events come in the same order? (Created+Updated)
Zetanova
@Zetanova
Somehow the create event is lost
Zetanova
@Zetanova
If the message handler of Akka.Persistence.Eventsourced.AroundReceive failes, then it is generating an infinit loop without calling OnReplayFailure()
Cleared the Journal and now i am getting NullRefException In Akka.Persistence.Sql.Common.Journal.JournalDbEngine
at System.Collections.Generic.LinkedList1.Find(T value) at System.Collections.Generic.LinkedList1.Remove(T value)
at Akka.Persistence.Sql.Common.Journal.JournalDbEngine.<>cDisplayClass1.<ReplayMessagesAsync>b0(Task1 task) at System.Threading.Tasks.ContinuationTaskFromResultTask1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
;(
Zetanova
@Zetanova
How to download the Debug Files (*.pdb) for the Dev builed. I added https://nuget.symbolsource.org/MyGet/akkadotnet to the Source Urls but VS cant find them there
Zetanova
@Zetanova
PendingOperations the LinkedList.Remove() is not thread safe
Need to get my Dev-fork up
Chris G. Stevens
@cgstevens
Quick Question: It does look like this is happening but want to validate. I am seeing, based on the messages, that when my member joins it is set to the Leader for that role before I get the message that it is actually up. Is this how it is actually happening or I am just getting that message first. In fact I am getting the message that the member is up 3-6 seconds after I was told that it is the leader for that role.... if it is happening this way why is it being promoted to leader when it isn't considered up.
Bartosz Sypytkowski
@Horusiath
@Zetanova concerning transactions errors - they should be fixed by #1306
I'll start to fix the rest of the errors you've found today
Zetanova
@Zetanova
@Horusiath thx, is there a Lock Free LinkedList in Akka or similar?
Bartosz Sypytkowski
@Horusiath
thx, but let me see, maybe it won't be necessary, if it won't be possible to make whole operation working on synchronous inside an actor, we still have an arsenal of atomic/immutable options inside akka itself
Zetanova
@Zetanova
LinkList and Set is fine in an actor, but if some concurrent is using them, there can be hiden bugs. 10M operations can be successfull 10M+1 is failing once in a week. LockFree Queue and LinkedList are nice because it can be a proteced property of a base class. Immutable Lists need still the lock or spin-lock to copy the list, like ConcurrentBag<T>
Christian Duhard
@cduhard
hmm this Terminated code doesn't seem to work
it's failing on _pendingCommands = groups.First(x => !x.Key).ToList();
Zetanova
@Zetanova
yes
@cduhard fast fix
var commands = new List<PendingCommand>(_pendingCommands.Count - i);
commands.AddRange(_pendingCommands.Where(cmd => cmd.PersistenceId != pid));
_pendingCommands = commands;
Christian Duhard
@cduhard
so i ma replacing all 3 lines with that
where does I come from?
Zetanova
@Zetanova
found commands
i++ in the loop
_pendingCommands.Where(cmd => cmd.PersistenceId == pid)
Christian Duhard
@cduhard
i'm missing something
Zetanova
@Zetanova
remove this toList and stuff
Christian Duhard
@cduhard
the current code is
            var groups =
                _pendingCommands.GroupBy(cmd => cmd.PersistenceId == terminated.ActorRef.Path.Name).ToArray();
            _pendingCommands = groups.First(x => !x.Key).ToList();
            var commands = groups.First(x => x.Key);
            foreach (var pendingCommand in commands)
            {
                var child = Recreate(pendingCommand.AggregateId, pendingCommand.PersistenceId);
                child.Tell(pendingCommand.Command, pendingCommand.Sender);
            }
Zetanova
@Zetanova
var pid = terminated.ActorRef.Path.Name;
int i = 0;
foreach (var pendingCommand in _pendingCommands.Where(cmd => cmd.PersistenceId == pid))

{

    var child = Recreate(pendingCommand.AggregateId, pendingCommand.PersistenceId);

    child.Tell(pendingCommand.Command, pendingCommand.Sender);
    i++;       
}

var commands = new List<PendingCommand>(_pendingCommands.Count - i);
commands.AddRange(_pendingCommands.Where(cmd => cmd.PersistenceId != pid));
_pendingCommands = commands;
Christian Duhard
@cduhard
got it, thanks. I'll give this a try.
@Zetanova what are you using for storage?
Zetanova
@Zetanova
sql-server for now. but the storage type should be picked by the AR-type
Christian Duhard
@cduhard
how do you mean?
Zetanova
@Zetanova
file, document-store, sql are all valid
Christian Duhard
@cduhard
i was going to give EventStore a try
Zetanova
@Zetanova
File => for very large AR's maybe explicit on a partition/drive SSD
DocumentStore => normal for AR's
sql => maybe faster for some kind of operations (need to test later on)
Christian Duhard
@cduhard
weird getting dead letters now
Zetanova
@Zetanova
In a local akka.net buget build where to set the BUILD_NUMBER of a package? Want to patch the Akka.Persistence.Sql.Common so that the SqlServer is dont updating it on install
Zetanova
@Zetanova
RELEASE_NOTES.md file.