This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new 36807a6fca Sync access for stats
36807a6fca is described below
commit 36807a6fca6823563ce967d24d739fbb57f98a3e
Author: remm <[email protected]>
AuthorDate: Wed Sep 27 09:50:44 2023 +0200
Sync access for stats
Refactor and deprecate getDeltaRequest. Avoid useless try nesting.
isDirty would need a sync, but this is likely "on purpose". I marked it
as an issue in coverity.
Found by coverity.
---
.../apache/catalina/ha/session/DeltaManager.java | 4 +++-
.../apache/catalina/ha/session/DeltaSession.java | 27 ++++++++++++----------
2 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/java/org/apache/catalina/ha/session/DeltaManager.java
b/java/org/apache/catalina/ha/session/DeltaManager.java
index bf2912a87d..de4d31942e 100644
--- a/java/org/apache/catalina/ha/session/DeltaManager.java
+++ b/java/org/apache/catalina/ha/session/DeltaManager.java
@@ -267,7 +267,9 @@ public class DeltaManager extends ClusterManagerBase {
}
public int getReceivedQueueSize() {
- return receivedMessageQueue.size();
+ synchronized (receivedMessageQueue) {
+ return receivedMessageQueue.size();
+ }
}
/**
diff --git a/java/org/apache/catalina/ha/session/DeltaSession.java
b/java/org/apache/catalina/ha/session/DeltaSession.java
index 67ad6703af..a20d4db0b8 100644
--- a/java/org/apache/catalina/ha/session/DeltaSession.java
+++ b/java/org/apache/catalina/ha/session/DeltaSession.java
@@ -123,7 +123,7 @@ public class DeltaSession extends StandardSession
implements Externalizable, Clu
*/
@Override
public boolean isDirty() {
- return getDeltaRequest().getSize() > 0;
+ return deltaRequest.getSize() > 0;
}
/**
@@ -194,22 +194,19 @@ public class DeltaSession extends StandardSession
implements Externalizable, Clu
*/
@Override
public void applyDiff(byte[] diff, int offset, int length) throws
IOException, ClassNotFoundException {
+ Thread currentThread = Thread.currentThread();
+ ClassLoader contextLoader = currentThread.getContextClassLoader();
lockInternal();
try (ObjectInputStream stream = ((ClusterManager)
getManager()).getReplicationStream(diff, offset, length)) {
- Thread currentThread = Thread.currentThread();
- ClassLoader contextLoader = currentThread.getContextClassLoader();
- try {
- ClassLoader[] loaders = getClassLoaders();
- if (loaders != null && loaders.length > 0) {
- currentThread.setContextClassLoader(loaders[0]);
- }
- getDeltaRequest().readExternal(stream);
- getDeltaRequest().execute(this, ((ClusterManager)
getManager()).isNotifyListenersOnReplication());
- } finally {
- currentThread.setContextClassLoader(contextLoader);
+ ClassLoader[] loaders = getClassLoaders();
+ if (loaders != null && loaders.length > 0) {
+ currentThread.setContextClassLoader(loaders[0]);
}
+ deltaRequest.readExternal(stream);
+ deltaRequest.execute(this, ((ClusterManager)
getManager()).isNotifyListenersOnReplication());
} finally {
unlockInternal();
+ currentThread.setContextClassLoader(contextLoader);
}
}
@@ -647,6 +644,12 @@ public class DeltaSession extends StandardSession
implements Externalizable, Clu
}
}
+ /**
+ * Get the request.
+ * @return the request
+ * @deprecated Unused. This method will be removed in Tomcat 12.
+ */
+ @Deprecated
public DeltaRequest getDeltaRequest() {
return deltaRequest;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]