You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by al...@apache.org on 2023/03/18 02:54:39 UTC

[asterixdb] 05/11: [ASTERIXDB-3127][RT] Fix ConcurrentModificationException in ANALYZE DATASET

This is an automated email from the ASF dual-hosted git repository.

alsuliman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit a0e47c5c7d9dd340b87c521985cc79ceaa7f835f
Author: Ian Maxon <ia...@maxons.email>
AuthorDate: Tue Mar 7 22:53:58 2023 -0800

    [ASTERIXDB-3127][RT] Fix ConcurrentModificationException in ANALYZE DATASET
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    Move the indexStats out of the descriptor. This being modified between instances
    of the pushRuntime created inside was causing the exception.
    Also enable an ANALYZE DATASET test that was accidentally left disabled
    
    Change-Id: I7cbff25b14346ca8eca5baa7e0fe8fb1da72f271
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17410
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Ian Maxon <im...@uci.edu>
    Reviewed-by: Ali Alsuliman <al...@gmail.com>
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
---
 .../analyze-dataset-with-indexes.04.query.sqlpp                      | 2 +-
 .../analyze-dataset-with-indexes.06.query.sqlpp                      | 4 ++--
 .../asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml     | 5 +++++
 .../runtime/operators/DatasetStreamStatsOperatorDescriptor.java      | 2 +-
 4 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/analyze-dataset-with-indexes/analyze-dataset-with-indexes.04.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/analyze-dataset-with-indexes/analyze-dataset-with-indexes.04.query.sqlpp
index 9c01681ddf..e674c09de6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/analyze-dataset-with-indexes/analyze-dataset-with-indexes.04.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/analyze-dataset-with-indexes/analyze-dataset-with-indexes.04.query.sqlpp
@@ -19,6 +19,6 @@
 
 USE test;
 
+SELECT t.DatasetName, t.IndexName, t.IndexStructure, t.SampleCardinalityTarget, t.SourceCardinality, t.SourceAvgItemSize, t.IndexStats
 FROM `Metadata`.`Index` t WHERE t.IndexStructure = "SAMPLE"
-SELECT t.* EXCLUDE DataverseName, SearchKey, IsPrimary, Timestamp, PendingOp, SampleSeed
 ORDER BY t.DatasetName, t.IndexName;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/analyze-dataset-with-indexes/analyze-dataset-with-indexes.06.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/analyze-dataset-with-indexes/analyze-dataset-with-indexes.06.query.sqlpp
index 9c01681ddf..dcb57b27df 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/analyze-dataset-with-indexes/analyze-dataset-with-indexes.06.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/analyze-dataset-with-indexes/analyze-dataset-with-indexes.06.query.sqlpp
@@ -19,6 +19,6 @@
 
 USE test;
 
+SELECT t.DatasetName, t.IndexName, t.IndexStructure, t.SampleCardinalityTarget, t.SourceCardinality, t.SourceAvgItemSize, t.IndexStats
 FROM `Metadata`.`Index` t WHERE t.IndexStructure = "SAMPLE"
-SELECT t.* EXCLUDE DataverseName, SearchKey, IsPrimary, Timestamp, PendingOp, SampleSeed
-ORDER BY t.DatasetName, t.IndexName;
\ No newline at end of file
+ORDER BY t.DatasetName, t.IndexName;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 17df68908a..31183f3dc7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -4130,6 +4130,11 @@
         <output-dir compare="Text">analyze-dataset-1</output-dir>
       </compilation-unit>
     </test-case>
+    <test-case FilePath="ddl">
+      <compilation-unit name="analyze-dataset-with-indexes">
+        <output-dir compare="Text">analyze-dataset-with-indexes</output-dir>
+      </compilation-unit>
+    </test-case>
     <test-case FilePath="ddl/create-index">
       <compilation-unit name="create-index-1">
         <output-dir compare="Text">create-index-1</output-dir>
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 ba294506e8..4f2e4193ae 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
@@ -55,7 +55,6 @@ public final class DatasetStreamStatsOperatorDescriptor extends AbstractSingleAc
     private final String operatorName;
     private final IIndexDataflowHelperFactory[] indexes;
     private final String[] indexesNames;
-    private Map<String, IndexStats> indexStats;
 
     public DatasetStreamStatsOperatorDescriptor(IOperatorDescriptorRegistry spec, RecordDescriptor rDesc,
             String operatorName, IIndexDataflowHelperFactory[] indexes, String[] indexesNames) {
@@ -75,6 +74,7 @@ public final class DatasetStreamStatsOperatorDescriptor extends AbstractSingleAc
             private FrameTupleAccessor fta;
             private long totalTupleCount;
             private long totalTupleLength;
+            private Map<String, IndexStats> indexStats;
 
             @Override
             public void open() throws HyracksDataException {