472974 Improved StatisticsHandler 503 generation
This commit is contained in:
parent
3909f45893
commit
4a727a7f08
|
@ -707,7 +707,8 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu
|
||||||
if (_contextPath == null)
|
if (_contextPath == null)
|
||||||
throw new IllegalStateException("Null contextPath");
|
throw new IllegalStateException("Null contextPath");
|
||||||
|
|
||||||
_logger = Log.getLogger(getDisplayName() == null?getContextPath():getDisplayName());
|
if (_logger!=null)
|
||||||
|
_logger = Log.getLogger(getDisplayName() == null?getContextPath():getDisplayName());
|
||||||
ClassLoader old_classloader = null;
|
ClassLoader old_classloader = null;
|
||||||
Thread current_thread = null;
|
Thread current_thread = null;
|
||||||
Context old_context = null;
|
Context old_context = null;
|
||||||
|
|
|
@ -21,6 +21,7 @@ package org.eclipse.jetty.server.handler;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
@ -30,7 +31,6 @@ import javax.servlet.AsyncListener;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.sql.rowset.BaseRowSet;
|
|
||||||
|
|
||||||
import org.eclipse.jetty.http.HttpStatus;
|
import org.eclipse.jetty.http.HttpStatus;
|
||||||
import org.eclipse.jetty.server.AsyncContextEvent;
|
import org.eclipse.jetty.server.AsyncContextEvent;
|
||||||
|
@ -43,12 +43,15 @@ import org.eclipse.jetty.util.annotation.ManagedAttribute;
|
||||||
import org.eclipse.jetty.util.annotation.ManagedObject;
|
import org.eclipse.jetty.util.annotation.ManagedObject;
|
||||||
import org.eclipse.jetty.util.annotation.ManagedOperation;
|
import org.eclipse.jetty.util.annotation.ManagedOperation;
|
||||||
import org.eclipse.jetty.util.component.Graceful;
|
import org.eclipse.jetty.util.component.Graceful;
|
||||||
|
import org.eclipse.jetty.util.log.Log;
|
||||||
|
import org.eclipse.jetty.util.log.Logger;
|
||||||
import org.eclipse.jetty.util.statistic.CounterStatistic;
|
import org.eclipse.jetty.util.statistic.CounterStatistic;
|
||||||
import org.eclipse.jetty.util.statistic.SampleStatistic;
|
import org.eclipse.jetty.util.statistic.SampleStatistic;
|
||||||
|
|
||||||
@ManagedObject("Request Statistics Gathering")
|
@ManagedObject("Request Statistics Gathering")
|
||||||
public class StatisticsHandler extends HandlerWrapper implements Graceful
|
public class StatisticsHandler extends HandlerWrapper implements Graceful
|
||||||
{
|
{
|
||||||
|
private static final Logger LOG = Log.getLogger(StatisticsHandler.class);
|
||||||
private final AtomicLong _statsStartedAt = new AtomicLong();
|
private final AtomicLong _statsStartedAt = new AtomicLong();
|
||||||
|
|
||||||
private final CounterStatistic _requestStats = new CounterStatistic();
|
private final CounterStatistic _requestStats = new CounterStatistic();
|
||||||
|
@ -69,6 +72,8 @@ public class StatisticsHandler extends HandlerWrapper implements Graceful
|
||||||
|
|
||||||
private final AtomicReference<FutureCallback> _shutdown=new AtomicReference<>();
|
private final AtomicReference<FutureCallback> _shutdown=new AtomicReference<>();
|
||||||
|
|
||||||
|
private final AtomicBoolean _wrapWarning = new AtomicBoolean();
|
||||||
|
|
||||||
private final AsyncListener _onCompletion = new AsyncListener()
|
private final AsyncListener _onCompletion = new AsyncListener()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
|
@ -162,6 +167,11 @@ public class StatisticsHandler extends HandlerWrapper implements Graceful
|
||||||
Handler handler = getHandler();
|
Handler handler = getHandler();
|
||||||
if (handler!=null && _shutdown.get()==null && isStarted())
|
if (handler!=null && _shutdown.get()==null && isStarted())
|
||||||
handler.handle(path, baseRequest, request, response);
|
handler.handle(path, baseRequest, request, response);
|
||||||
|
else if (baseRequest.isHandled())
|
||||||
|
{
|
||||||
|
if (_wrapWarning.compareAndSet(false,true))
|
||||||
|
LOG.warn("Bad statistics configuration. Latencies will be incorrect in {}",this);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
baseRequest.setHandled(true);
|
baseRequest.setHandled(true);
|
||||||
|
|
Loading…
Reference in New Issue