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 aca87de0fec219c628981bdc8e441d22cc67ebef
Author: Ali Alsuliman <[email protected]>
AuthorDate: Wed May 22 23:11:48 2024 +0300

    [ASTERIXDB-3343][API] Return new list when getting completed requests
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    Completed requests collection has been changed to LinkedHashMap
    recently which is not synchronized. ConcurrentModificationException can
    happen when traversing the returned values and the map gets updated.
    Return a new list of the values instead of returning the values view
    directly.
    
    Change-Id: Ic5a8c12e3feaddeea6882c34fba3c12dc22452c3
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18306
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
    Reviewed-by: Murtadha Hubail <[email protected]>
---
 .../src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
index 9875651817..ef9154d887 100644
--- 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
+++ 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/utils/RequestTracker.java
@@ -18,6 +18,7 @@
  */
 package org.apache.asterix.runtime.utils;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashMap;
@@ -109,7 +110,7 @@ public class RequestTracker implements IRequestTracker {
 
     @Override
     public synchronized Collection<IClientRequest> getCompletedRequests() {
-        return Collections.unmodifiableCollection(completedRequests.values());
+        return Collections.unmodifiableCollection(new 
ArrayList<>(completedRequests.values()));
     }
 
     private void cancel(IClientRequest request) throws HyracksDataException {

Reply via email to