>From Ian Maxon <[email protected]>:

Ian Maxon has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17410 )


Change subject: [ASTERIXDB-3127][RT] Fix ConcurrentModificationException in 
ANALYZE DATASET
......................................................................

[ASTERIXDB-3127][RT] Fix ConcurrentModificationException in ANALYZE DATASET

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
This very rarely happens, but someimes the indexStats map can be under
traversal while indexes are still being added to it. This causes the
ANALYZE DATASET to fail with ConcurrentModificationException.
Making it a concurrent collection will stop that from ever happening.

Change-Id: I7cbff25b14346ca8eca5baa7e0fe8fb1da72f271
---
M 
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/DatasetStreamStatsOperatorDescriptor.java
1 file changed, 21 insertions(+), 1 deletion(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/10/17410/1

diff --git 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/DatasetStreamStatsOperatorDescriptor.java
 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/DatasetStreamStatsOperatorDescriptor.java
index ba29450..a0a832b 100644
--- 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/DatasetStreamStatsOperatorDescriptor.java
+++ 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/DatasetStreamStatsOperatorDescriptor.java
@@ -22,6 +22,7 @@
 import java.nio.ByteBuffer;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;

 import org.apache.hyracks.api.application.INCServiceContext;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -86,7 +87,7 @@
                     coll.add(new OperatorStats(operatorName));
                 }
                 INCServiceContext serviceCtx = 
ctx.getJobletContext().getServiceContext();
-                indexStats = new HashMap<>();
+                indexStats = new ConcurrentHashMap<>();
                 for (int i = 0; i < indexes.length; i++) {
                     IIndexDataflowHelper idxFlowHelper = 
indexes[i].create(serviceCtx, partition);
                     try {

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17410
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: neo
Gerrit-Change-Id: I7cbff25b14346ca8eca5baa7e0fe8fb1da72f271
Gerrit-Change-Number: 17410
Gerrit-PatchSet: 1
Gerrit-Owner: Ian Maxon <[email protected]>
Gerrit-MessageType: newchange

Reply via email to