Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Selector question

Why do you need to know that?

The ManagedSelector behavior is controlled by the Threading Strategy.
Typically this is the EatWhatYouKill strategy.

Each task from a select() call is identified by the strategy for its behavior, will it block? can it block? etc.
The Threading strategy also makes the call on if the task should execute, invoke, or run.  
The Threading strategy is also aware of the state of the ThreadPool when making its decisions.  (eg: behaviors change when the thread pool has few idle threads left)

In short, by the time you are in the EndPoint, you can make no assumptions about behavior at the selector / threading strategy / thread pool / executor.


Joakim Erdfelt / joakim@xxxxxxxxxxx

On Thu, May 24, 2018 at 6:01 PM, Josh Spiegel <joshlakewg@xxxxxxxxx> wrote:
Hi, 

In the documentation ServerConnector, I see the following text:

<quote>
It is the selector thread that will call the Callback instances passed in the EndPoint.fillInterested(Callback) or EndPoint.write(Callback, java.nio.ByteBuffer...) methods. It is expected that these callbacks may do some non-blocking IO work, but will always dispatch to the Executor service any blocking, long running or application tasks.
</quote>

But I also found this blog that made it sound like maybe this is no longer the case?

Can anybody clarify?  Specifically, I would like to know if onFillable() will be run by a selector for ServerConnector/AbstractConnection.  And if not, is it ok to do blocking operations in onFillable()?

Thanks,
Josh

_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users


Back to the top