Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimone Bordet2015-12-23 15:19:08 +0000
committerSimone Bordet2015-12-23 15:19:08 +0000
commit59680d47d3930a1a0db523d9e27a2374a45903a3 (patch)
treeca367f4a98e429d6b8d242f676810bbb76647e3d /jetty-http2
parent7a33efdf662eb03883cea91c94cfa213b6b4d6c6 (diff)
downloadorg.eclipse.jetty.project-59680d47d3930a1a0db523d9e27a2374a45903a3.tar.gz
org.eclipse.jetty.project-59680d47d3930a1a0db523d9e27a2374a45903a3.tar.xz
org.eclipse.jetty.project-59680d47d3930a1a0db523d9e27a2374a45903a3.zip
484818 - Expose interesting HTTP/2 attributes and operations via JMX.
Exposed number of session stalls.
Diffstat (limited to 'jetty-http2')
-rw-r--r--jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/AbstractFlowControlStrategy.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/AbstractFlowControlStrategy.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/AbstractFlowControlStrategy.java
index b024132fec..b2908107a7 100644
--- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/AbstractFlowControlStrategy.java
+++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/AbstractFlowControlStrategy.java
@@ -18,10 +18,13 @@
package org.eclipse.jetty.http2;
+import java.util.concurrent.atomic.AtomicLong;
+
import org.eclipse.jetty.http2.api.Stream;
import org.eclipse.jetty.http2.frames.WindowUpdateFrame;
import org.eclipse.jetty.util.annotation.ManagedAttribute;
import org.eclipse.jetty.util.annotation.ManagedObject;
+import org.eclipse.jetty.util.annotation.ManagedOperation;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
@@ -30,6 +33,7 @@ public abstract class AbstractFlowControlStrategy implements FlowControlStrategy
{
protected static final Logger LOG = Log.getLogger(FlowControlStrategy.class);
+ private final AtomicLong sessionStalls = new AtomicLong();
private int initialStreamSendWindow;
private int initialStreamRecvWindow;
@@ -172,6 +176,7 @@ public abstract class AbstractFlowControlStrategy implements FlowControlStrategy
{
if (LOG.isDebugEnabled())
LOG.debug("Session stalled {}", session);
+ sessionStalls.incrementAndGet();
}
protected void onStreamStalled(IStream stream)
@@ -191,4 +196,16 @@ public abstract class AbstractFlowControlStrategy implements FlowControlStrategy
if (LOG.isDebugEnabled())
LOG.debug("Stream unstalled {}", stream);
}
+
+ @ManagedAttribute(value = "The number of times the session flow control has stalled", readonly = true)
+ public long getSessionStallCount()
+ {
+ return sessionStalls.get();
+ }
+
+ @ManagedOperation(value = "Resets the statistics", impact = "ACTION")
+ public void reset()
+ {
+ sessionStalls.set(0);
+ }
}

Back to the top