These are chat archives for akkadotnet/akka.net

1st
Aug 2016
Noel
@nanderto
Aug 01 2016 03:49
Hi, I created a new implementation of Akka.Persistence.ServiceFabric, It uses ServiceFabric reliable collections that are embedded in the actor instead of calling a service like the old version did. I know its not on the road map for Akka.net and the old version has not seen any updates for some time. DOes anyone know if there is any interest in this implementation? its located here https://github.com/nanderto/akka.net/tree/ServiceFabric/src/contrib/persistence
Valeriy Reutskiy
@vvreutskiy
Aug 01 2016 07:13
Hello!
I am trying to set up cluster client and I got stumbled over this comment in ClusterToolsExample.Node.Program.RunClusterClient method:
//NOTE: to properly run cluster client set up actor ref provider for nodes on provider = "Akka.Remote.RemoteActorRefProvider, Akka.Remote"
But if I change provider to RemoteActorRefProvider, how will nodes connect to each other in the cluster?
Alex Valuyskiy
@alexvaluyskiy
Aug 01 2016 07:29
@nanderto yes, could you create a separate repository for SF provider, first?
Ralf
@Ralf1108
Aug 01 2016 09:30
regarding "Akka.Streams - Integrating with Actors" from http://getakka.net/docs/streams/integration#integrating-with-actors. There is a passage which states:
Warning
IActorPublisher and IActorSubscriber cannot be used with remote actors, because if signals of the Reactive Streams protocol (e.g. request) are lost the stream may deadlock.
does this mean that Akka Streams wont work reliably if used with actors on different machines?
Marc Piechura
@marcpiechura
Aug 01 2016 09:59
@Ralf1108 correct, the problem is that for example the publisher is only allowed to send a new element if it receives a request message and if the message doesn't arrive due to network issues the publisher will not send any more elements
Ralf
@Ralf1108
Aug 01 2016 10:00
i just found that it is possible to create the actor sink via Sink.ActorRefWithAck(). Does this improve the reliability?
and if there are network issues... i think it is ok to terminate the stream
Marc Piechura
@marcpiechura
Aug 01 2016 10:04
when you use ActorRefWithAck the destination actor needs to send a Ack message back to the sender of the element, this way you can backpressure the stream from the destination actor
problem is if you use remote you don't know if the ack message has arrived so the problem is the same
Ricky Blankenaufulland
@ZoolWay
Aug 01 2016 10:12
Is there a way do prefix the generated name for child actors? I cannot specify a name because I will dynamically create children but it would be nice to give their names a prefix
Ralf
@Ralf1108
Aug 01 2016 10:55
@Silv3rcircl3 ah, now I understand. that makes sense. So the stream requires also something like a timeout to see if the destination actor failed
@ZoolWay you can provide an actor name when you create them. So feel free to implement your prefixing method by yourself :-)
@Silv3rcircl3 is there a reason why Akka Streams names its destination Sink ? The flow is that way "Source -> Flow -> Sink". Why not "Source -> Flow -> Target" ? :D
Marc Piechura
@marcpiechura
Aug 01 2016 11:06
Don't know :smile: it comes from the jvm
Nop no timeout, when the actor failed the stream is closed and that is archived by watching the destination actor
The ack message is a signal to the stream that the actor can process the next element
If you want to read more about the underling protocol you can take a look at the reactive streams repository https://github.com/reactive-streams/reactive-streams-dotnet
Erik Lagerholm
@stabface
Aug 01 2016 11:23
Does anyone have a code example of a decorator pattern implementation for an Akka Actor?
Ralf
@Ralf1108
Aug 01 2016 11:28
@Silv3rcircl3 and if the stream doesn't get back the ack in specified time the stream will could be consideres as failed. Because of network issues there is no other possibility? if this happens in production the stream will be blocked and wont get cleaned up ?
sounds bad :-(
Ricky Blankenaufulland
@ZoolWay
Aug 01 2016 11:31
@Ralf1108 I know that but was hoping to be able to use the automatic naming somehow. If you name them by my own, I will always need some kind of actor-spaning counter and that's it for concurrency...
Marc Piechura
@marcpiechura
Aug 01 2016 11:34
Correct, if the stream doesn't get the ack it will not process any more elements
It will also fail if the remote watcher sends a terminated message for the destination actor
but that's not guaranteed because afaik the remote watcher has something like a timeout and if the network failure only occurs for a short time period the actor maybe isn't seen as dead and therefore no terminated message will be send to the stream but the ack is still lost and you have your deadlock
Arsene Tochemey GANDOTE
@Tochemey
Aug 01 2016 11:40
Hello I am having some problems logging fromm within my actor using Nlog.
This is my config
  <akka>
    <hocon>
      <![CDATA[
          akka 
          {
            loggers = ["Akka.Logger.NLog.NLogLogger, Akka.Logger.NLog"]
            # here we are configuring log levels
            stdout-loglevel = DEBUG
            loglevel = DEBUG
            log-config-on-start = on        
            actor 
            {                
                debug 
                {  
                      receive = on 
                      autoreceive = on
                      lifecycle = on
                      event-stream = on
                      unhandled = on
                }
            }
          }
      ]]>
    </hocon>
  </akka>
The only thing I see are the ActorSystem log.
Ricky Blankenaufulland
@ZoolWay
Aug 01 2016 11:43
How do you obtain loggers inside your actors and what do you expect to see?
Arsene Tochemey GANDOTE
@Tochemey
Aug 01 2016 11:44
Like this
protected readonly ILoggingAdapter Logging = Context.GetLogger();
Ricky Blankenaufulland
@ZoolWay
Aug 01 2016 11:46
And do you see log message you product with this.Logging.Info("Test"); ?
Arsene Tochemey GANDOTE
@Tochemey
Aug 01 2016 11:48
Nope
Ricky Blankenaufulland
@ZoolWay
Aug 01 2016 11:49
And when you do a regular nlog logging outside of the actor system it works?
Arsene Tochemey GANDOTE
@Tochemey
Aug 01 2016 12:10
Yes
Arsene Tochemey GANDOTE
@Tochemey
Aug 01 2016 12:23
Anu idea of what is going on?
Can it be because I am using the TestKit?
Arjen Smits
@Danthar
Aug 01 2016 13:03
that could be, the testkit loads its own config
you can append/override with a custom constructor in your test class
Arsene Tochemey GANDOTE
@Tochemey
Aug 01 2016 13:13
How do I go about it?
Jared Lobberecht
@Jared314
Aug 01 2016 13:19
is the Akka.Persistence.SqlServer nuget package going to be updated for 1.1?
The source has been updated, but the nuget package isn't there
Arjen Smits
@Danthar
Aug 01 2016 13:25
@Tochemey there are multiple constructors you can override
 public MyTestClass(string config) : base(config)
        {
                //load your string here? or use the constructor that takes a Config class instead of a string
        }
Kris Schepers
@schepersk
Aug 01 2016 14:18
@Jared314 For now, we're just using the 1.0.8-beta versions SQL common and SQL server packages. Seems to be working just fine :-)
Jared Lobberecht
@Jared314
Aug 01 2016 14:25
@schepersk I am also using 1.0.8, but I also need to start using the query api to build out some historical reporting and file export features
Alex Valuyskiy
@alexvaluyskiy
Aug 01 2016 14:31
@Jared314 @schepersk we are planning to release it today
Ralf
@Ralf1108
Aug 01 2016 14:58
@ZoolWay why not use a guid instead of a counter?
@Silv3rcircl3 so it's still an unresolved problem?
Marc Piechura
@marcpiechura
Aug 01 2016 15:17
@Ralf1108 yes, you shouldn't use Akka.Streams with remote actors
Noel
@nanderto
Aug 01 2016 15:19
@ @alexvaluyskiy do you mean a separate repository under my account? I don't imagine that I have access under Akka.net
Alex Valuyskiy
@alexvaluyskiy
Aug 01 2016 15:20
Yes, under your account
Noel
@nanderto
Aug 01 2016 15:21
ok no problem I will get it done today
Ralf
@Ralf1108
Aug 01 2016 15:28
@Silv3rcircl3 sad to hear that. Thought that was the point in "Akka Streams".... to distribute stream processing over many machines. WIthout that it is only a Streams implementation with local actors.
Marc Piechura
@marcpiechura
Aug 01 2016 16:33
@alexvaluyskiy btw I'm done with the adapter for azure if you want to take a look