vlingo / xoom-actors

The VLINGO XOOM platform SDK for the type-safe Actor Model, delivering Reactive concurrency, high scalability, high-throughput, and resiliency using Java and other JVM languages.
https://vlingo.io
Mozilla Public License 2.0
229 stars 28 forks source link

MailBox Thread Issue #81

Closed HadyDab closed 4 years ago

HadyDab commented 4 years ago

When running a Xoom application with the following configuration in vlingo-actor.properties.

plugin.name.queueMailbox = true
plugin.queueMailbox.classname = io.vlingo.actors.plugin.mailbox.concurrentqueue.ConcurrentQueueMailboxPlugin
plugin.queueMailbox.defaultMailbox = true
plugin.queueMailbox.numberOfDispatchersFactor = 0
plugin.queueMailbox.numberOfDispatchers =  any number greater than 50 
plugin.queueMailbox.dispatcherThrottlingCount = 1

The following Exception is thrown under heavy load ( when 10,000 requests are being sent every second).

[pool-2-thread-13] ERROR io.vlingo.actors.Logger - PublicRootActor: Failure of: GridAddress[id=908c4805-d2a6-4d52-9354-6f89c6526a89, name=(none)] because: Completes is not available for this protocol behavior; return type must be Completes<T>. Action: Restarting.
java.lang.IllegalStateException: Completes is not available for this protocol behavior; return type must be Completes<T>.
    at io.vlingo.actors.Actor.completes(Actor.java:246) ~[vlingoWith100Threads.jar:na]
    at io.vlingo.lattice.model.stateful.StatefulEntity.apply(StatefulEntity.java:154) ~[vlingoWith100Threads.jar:na]
    at io.vlingo.lattice.model.stateful.StatefulEntity.apply(StatefulEntity.java:214) ~[vlingoWith100Threads.jar:na]
    at com.thesis2020.hh.model.greeting.GreetingEntity.updateMessage(GreetingEntity.java:37) ~[vlingoWith100Threads.jar:na]
    at com.thesis2020.hh.model.greeting.Greeting__Proxy.lambda$updateMessage$8f63c382$1(Greeting__Proxy.java:42) ~[na:na]
    at io.vlingo.actors.LocalMessage.internalDeliver(LocalMessage.java:121) ~[vlingoWith100Threads.jar:na]
    at io.vlingo.actors.LocalMessage.deliver(LocalMessage.java:53) ~[vlingoWith100Threads.jar:na]
    at io.vlingo.actors.plugin.mailbox.concurrentqueue.ConcurrentQueueMailbox.run(ConcurrentQueueMailbox.java:108) ~[vlingoWith100Threads.jar:na]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_265]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_265]
    at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_265]
12:31:10.933 [pool-2-thread-32] ERROR c.t.hh.model.greeting.GreetingEntity - Default before restart recovery after: Completes is not available for this protocol behavior; return type must be Completes<T>.
java.lang.IllegalStateException: Completes is not available for this protocol behavior; return type must be Completes<T>.
    at io.vlingo.actors.Actor.completes(Actor.java:246) ~[vlingoWith100Threads.jar:na]
    at io.vlingo.lattice.model.stateful.StatefulEntity.apply(StatefulEntity.java:154) ~[vlingoWith100Threads.jar:na]
    at io.vlingo.lattice.model.stateful.StatefulEntity.apply(StatefulEntity.java:214) ~[vlingoWith100Threads.jar:na]
    at com.thesis2020.hh.model.greeting.GreetingEntity.updateMessage(GreetingEntity.java:37) ~[vlingoWith100Threads.jar:na]
    at com.thesis2020.hh.model.greeting.Greeting__Proxy.lambda$updateMessage$8f63c382$1(Greeting__Proxy.java:42) ~[na:na]
    at io.vlingo.actors.LocalMessage.internalDeliver(LocalMessage.java:121) ~[vlingoWith100Threads.jar:na]
    at io.vlingo.actors.LocalMessage.deliver(LocalMessage.java:53) ~[vlingoWith100Threads.jar:na]
    at io.vlingo.actors.plugin.mailbox.concurrentqueue.ConcurrentQueueMailbox.run(ConcurrentQueueMailbox.java:108) ~[vlingoWith100Threads.jar:na]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_265]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_265]
    at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_265]

Note: This however seems not to impact the end result

VaughnVernon commented 4 years ago

This turned out to be an operating system configuration issue. There are no limits imposed by vlingo-actors or any other vlingo-* component.