Here is my implementation in AbstractActor.
AbstractActor extends UntypedActor and all other actor classes extend this
AbstractActor class.
I am using Groovy language and `?.` operator is a null check (e.g.
message?.get()?.toString() means if message is not null, get the message.
If get is not null, cast it to String).
I override the preRestart() method and I am resending the message to Actor.
What am I doing wrong?
abstract class AbstractActor extends UntypedActor implements Serializable {
private final static Logger log =
LoggerFactory.getLogger(AbstractActor.class)
@Override
void preRestart (Throwable reason, Option<Object> message) throws Exception
{
log.error("preRestart called at ${self()} with message:
${message?.get()?.toString()}. Error: ${reason?.message}.")
if(message && message?.get()) {
self().tell(message?.get(), sender())
log.error("preRestart: Resending message class:
'${message.getClass()}' to ${self()}.")
}
super.preRestart(reason, message)
}
}
On Friday, March 11, 2016 at 2:37:02 PM UTC+1, Akka Team wrote:
>
> If you are doing .get on the message in your preRestart: that is not
> safe, the actor might restart for reasons not being a message and then the
> option will be empty. In general just .get:ing an option is an
> antipattern, someone made it an option because it can be empty so you need
> to deal with that.
>
> --
> Johan Andrén
> Akka Team, Lightbend Inc.
>
--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ:
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.