This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch fix
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/fix by this push:
new 18c91816ec Revert SessionCacheCallback
18c91816ec is described below
commit 18c91816ecc0bb6baf248757f55eb6457bd7420e
Author: Wu Sheng <[email protected]>
AuthorDate: Mon Dec 5 17:59:14 2022 +0800
Revert SessionCacheCallback
---
.../oap/server/core/storage/SessionCacheCallback.java | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/SessionCacheCallback.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/SessionCacheCallback.java
index 98e01bf87c..ceff064e05 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/SessionCacheCallback.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/SessionCacheCallback.java
@@ -29,12 +29,22 @@ import
org.apache.skywalking.oap.server.core.analysis.worker.MetricsSessionCache
public class SessionCacheCallback {
private final MetricsSessionCache sessionCache;
private final Metrics metrics;
+ /**
+ * In some cases, this callback could be shared by multiple executions,
such as SQLExecutor#additionalSQLs.
+ * This flag would make sure, once one of the generated executions is
failure, the whole metric would be removed
+ * from the cache, and would not be added back. As those are executed in a
batch mode. The sequence is uncertain.
+ */
+ private volatile boolean isFailed = false;
public void onInsertCompleted() {
+ if (isFailed) {
+ return;
+ }
sessionCache.put(metrics);
}
public void onUpdateFailure() {
+ isFailed = true;
sessionCache.remove(metrics);
}
}