You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2011/10/11 14:17:38 UTC
svn commit: r1181744 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core:
RepositoryContext.java session/SessionState.java
Author: jukka
Date: Tue Oct 11 12:17:37 2011
New Revision: 1181744
URL: http://svn.apache.org/viewvc?rev=1181744&view=rev
Log:
JCR-3040: JMX Stats for the Session
Add "read", "write", and "login" counters to SessionState.
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryContext.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionState.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryContext.java?rev=1181744&r1=1181743&r2=1181744&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryContext.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryContext.java Tue Oct 11 12:17:37 2011
@@ -27,6 +27,7 @@ import org.apache.jackrabbit.core.nodety
import org.apache.jackrabbit.core.security.JackrabbitSecurityManager;
import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
import org.apache.jackrabbit.core.state.ItemStateCacheFactory;
+import org.apache.jackrabbit.core.stats.RepositoryStatistics;
import org.apache.jackrabbit.core.version.InternalVersionManagerImpl;
/**
@@ -107,6 +108,11 @@ public class RepositoryContext {
new JackrabbitThreadPool();
/**
+ * Repository statistics collector.
+ */
+ private final RepositoryStatistics statistics;
+
+ /**
* Creates a component context for the given repository.
*
* @param repository repository instance
@@ -114,6 +120,7 @@ public class RepositoryContext {
RepositoryContext(RepositoryImpl repository) {
assert repository != null;
this.repository = repository;
+ this.statistics = new RepositoryStatistics(executor);
}
/**
@@ -361,4 +368,13 @@ public class RepositoryContext {
return nodeIdFactory;
}
+ /**
+ * Returns the repository statistics collector.
+ *
+ * @return repository statistics collector
+ */
+ public RepositoryStatistics getRepositoryStatistics() {
+ return statistics;
+ }
+
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionState.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionState.java?rev=1181744&r1=1181743&r2=1181744&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionState.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionState.java Tue Oct 11 12:17:37 2011
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.core.session;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -24,6 +25,7 @@ import javax.jcr.Session;
import org.apache.jackrabbit.core.WorkspaceManager;
import org.apache.jackrabbit.core.observation.ObservationDispatcher;
+import org.apache.jackrabbit.core.stats.RepositoryStatistics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,6 +68,16 @@ public class SessionState {
private final SessionContext context;
/**
+ * Counter of read operations.
+ */
+ private final AtomicLong readCounter;
+
+ /**
+ * Counter of write operations.
+ */
+ private final AtomicLong writeCounter;
+
+ /**
* The lock used to guarantee synchronized execution of repository
* operations. An explicit lock is used instead of normal Java
* synchronization in order to be able to log attempts to concurrently
@@ -95,6 +107,12 @@ public class SessionState {
*/
public SessionState(SessionContext context) {
this.context = context;
+
+ RepositoryStatistics statistics =
+ context.getRepositoryContext().getRepositoryStatistics();
+ statistics.getCounter("login").incrementAndGet();
+ this.readCounter = statistics.getCounter("read");
+ this.writeCounter = statistics.getCounter("write");
}
/**
@@ -180,6 +198,13 @@ public class SessionState {
}
try {
+ // JCR-3040: Increment the operation counters
+ if (isWriteOperation) {
+ writeCounter.incrementAndGet();
+ } else {
+ readCounter.incrementAndGet();
+ }
+
// Perform the actual operation, optionally with debug logs
if (log.isDebugEnabled()) {
log.debug("Performing {}", operation);