Merged branch 'jetty-9.4.x' into 'jetty-10.0.x'.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
This commit is contained in:
commit
0ccaa9f87b
|
@ -40,9 +40,12 @@ import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
import org.eclipse.jetty.util.IO;
|
import org.eclipse.jetty.util.IO;
|
||||||
|
import org.eclipse.jetty.util.annotation.ManagedAttribute;
|
||||||
|
import org.eclipse.jetty.util.annotation.ManagedOperation;
|
||||||
import org.eclipse.jetty.util.component.ContainerLifeCycle;
|
import org.eclipse.jetty.util.component.ContainerLifeCycle;
|
||||||
import org.eclipse.jetty.util.component.Dumpable;
|
import org.eclipse.jetty.util.component.Dumpable;
|
||||||
import org.eclipse.jetty.util.component.DumpableCollection;
|
import org.eclipse.jetty.util.component.DumpableCollection;
|
||||||
|
import org.eclipse.jetty.util.statistic.SampleStatistic;
|
||||||
import org.eclipse.jetty.util.thread.AutoLock;
|
import org.eclipse.jetty.util.thread.AutoLock;
|
||||||
import org.eclipse.jetty.util.thread.ExecutionStrategy;
|
import org.eclipse.jetty.util.thread.ExecutionStrategy;
|
||||||
import org.eclipse.jetty.util.thread.Scheduler;
|
import org.eclipse.jetty.util.thread.Scheduler;
|
||||||
|
@ -84,6 +87,7 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable
|
||||||
private Selector _selector;
|
private Selector _selector;
|
||||||
private Deque<SelectorUpdate> _updates = new ArrayDeque<>();
|
private Deque<SelectorUpdate> _updates = new ArrayDeque<>();
|
||||||
private Deque<SelectorUpdate> _updateable = new ArrayDeque<>();
|
private Deque<SelectorUpdate> _updateable = new ArrayDeque<>();
|
||||||
|
private final SampleStatistic _keyStats = new SampleStatistic();
|
||||||
|
|
||||||
public ManagedSelector(SelectorManager selectorManager, int id)
|
public ManagedSelector(SelectorManager selectorManager, int id)
|
||||||
{
|
{
|
||||||
|
@ -141,6 +145,36 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable
|
||||||
super.doStop();
|
super.doStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ManagedAttribute(value = "Total number of keys", readonly = true)
|
||||||
|
public int getTotalKeys()
|
||||||
|
{
|
||||||
|
return _selector.keys().size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ManagedAttribute(value = "Average number of selected keys", readonly = true)
|
||||||
|
public double getAverageSelectedKeys()
|
||||||
|
{
|
||||||
|
return _keyStats.getMean();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ManagedAttribute(value = "Maximum number of selected keys", readonly = true)
|
||||||
|
public double getMaxSelectedKeys()
|
||||||
|
{
|
||||||
|
return _keyStats.getMax();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ManagedAttribute(value = "Total number of select() calls", readonly = true)
|
||||||
|
public long getSelectCount()
|
||||||
|
{
|
||||||
|
return _keyStats.getCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ManagedOperation(value = "Resets the statistics", impact = "ACTION")
|
||||||
|
public void resetStats()
|
||||||
|
{
|
||||||
|
_keyStats.reset();
|
||||||
|
}
|
||||||
|
|
||||||
protected int nioSelect(Selector selector, boolean now) throws IOException
|
protected int nioSelect(Selector selector, boolean now) throws IOException
|
||||||
{
|
{
|
||||||
return now ? selector.selectNow() : selector.select();
|
return now ? selector.selectNow() : selector.select();
|
||||||
|
@ -584,9 +618,12 @@ public class ManagedSelector extends ContainerLifeCycle implements Dumpable
|
||||||
}
|
}
|
||||||
|
|
||||||
_keys = selector.selectedKeys();
|
_keys = selector.selectedKeys();
|
||||||
_cursor = _keys.isEmpty() ? Collections.emptyIterator() : _keys.iterator();
|
int selectedKeys = _keys.size();
|
||||||
|
if (selectedKeys > 0)
|
||||||
|
_keyStats.record(selectedKeys);
|
||||||
|
_cursor = selectedKeys > 0 ? _keys.iterator() : Collections.emptyIterator();
|
||||||
if (LOG.isDebugEnabled())
|
if (LOG.isDebugEnabled())
|
||||||
LOG.debug("Selector {} processing {} keys, {} updates", selector, _keys.size(), updates);
|
LOG.debug("Selector {} processing {} keys, {} updates", selector, selectedKeys, updates);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2079,7 +2079,7 @@ public class Request implements HttpServletRequest
|
||||||
* Set the character encoding used for the query string. This call will effect the return of getQueryString and getParamaters. It must be called before any
|
* Set the character encoding used for the query string. This call will effect the return of getQueryString and getParamaters. It must be called before any
|
||||||
* getParameter methods.
|
* getParameter methods.
|
||||||
*
|
*
|
||||||
* The request attribute "org.eclipse.jetty.server.server.Request.queryEncoding" may be set as an alternate method of calling setQueryEncoding.
|
* The request attribute "org.eclipse.jetty.server.Request.queryEncoding" may be set as an alternate method of calling setQueryEncoding.
|
||||||
*
|
*
|
||||||
* @param queryEncoding the URI query character encoding
|
* @param queryEncoding the URI query character encoding
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue