You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2022/02/15 14:25:12 UTC

[asterixdb] branch master updated (b3fb199 -> 349915e)

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

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


    from b3fb199  Merge branch 'gerrit/neo'
     new f3d8e9c  [NO ISSUE][STO] Log index ref registration and removal
     new 9e33273  [NO ISSUE][API] Add ensureOptionalParameters for extension
     new ef3da66  [NO ISSUE][OTH] Rename partition owner to origin
     new a6c858b  [NO ISSUE][HTTP] Fork the close of response stream on interrupt
     new 349915e  Merge branch 'gerrit/neo'

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../asterix/api/http/server/NCQueryServiceServlet.java       |  6 ++++++
 .../org/apache/asterix/api/http/server/NCUdfApiServlet.java  |  7 +++----
 .../main/java/org/apache/asterix/app/nc/ReplicaManager.java  | 12 ++++++------
 .../java/org/apache/asterix/common/context/DatasetInfo.java  |  2 ++
 .../java/org/apache/asterix/common/context/IndexInfo.java    |  6 ++++++
 .../org/apache/asterix/common/storage/IReplicaManager.java   |  6 +++---
 .../messaging/PartitionResourcesListResponse.java            |  2 +-
 .../replication/messaging/PartitionResourcesListTask.java    |  2 +-
 .../apache/asterix/replication/sync/FileSynchronizer.java    |  2 +-
 .../apache/asterix/replication/sync/IndexSynchronizer.java   |  2 +-
 .../asterix/replication/sync/ReplicaFilesSynchronizer.java   |  8 ++++----
 .../apache/asterix/replication/sync/ReplicaSynchronizer.java |  2 +-
 .../java/org/apache/hyracks/http/server/utils/HttpUtil.java  |  8 +++++++-
 13 files changed, 42 insertions(+), 23 deletions(-)

[asterixdb] 03/05: [NO ISSUE][OTH] Rename partition owner to origin

Posted by mb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ef3da66b3fa444e3f44e6c7c2b6d9e309e885492
Author: Murtadha Hubail <mu...@couchbase.com>
AuthorDate: Mon Feb 14 01:04:58 2022 +0300

    [NO ISSUE][OTH] Rename partition owner to origin
    
    - user model changes: no
    - storage format changes: no
    - interface changes: yes
    
    Change-Id: I97838a546ae9bdc1453f397d6809bd08e493f8f8
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15263
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Murtadha Hubail <mh...@apache.org>
    Reviewed-by: Michael Blow <mb...@apache.org>
---
 .../main/java/org/apache/asterix/app/nc/ReplicaManager.java  | 12 ++++++------
 .../org/apache/asterix/common/storage/IReplicaManager.java   |  6 +++---
 .../messaging/PartitionResourcesListResponse.java            |  2 +-
 .../replication/messaging/PartitionResourcesListTask.java    |  2 +-
 .../apache/asterix/replication/sync/FileSynchronizer.java    |  2 +-
 .../apache/asterix/replication/sync/IndexSynchronizer.java   |  2 +-
 .../asterix/replication/sync/ReplicaFilesSynchronizer.java   |  8 ++++----
 .../apache/asterix/replication/sync/ReplicaSynchronizer.java |  2 +-
 8 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java
index 7b52df6..a159e09 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java
@@ -57,14 +57,14 @@ public class ReplicaManager implements IReplicaManager {
      * current replicas
      */
     private final Map<ReplicaIdentifier, PartitionReplica> replicas = new HashMap<>();
-    private final Set<Integer> nodeOwnedPartitions = new HashSet<>();
+    private final Set<Integer> nodeOriginatedPartitions = new HashSet<>();
 
     public ReplicaManager(INcApplicationContext appCtx, Set<Integer> partitions) {
         this.appCtx = appCtx;
         for (Integer partition : partitions) {
             this.partitions.put(partition, new Object());
         }
-        setNodeOwnedPartitions(appCtx);
+        setNodeOriginatedPartitions(appCtx);
     }
 
     @Override
@@ -163,8 +163,8 @@ public class ReplicaManager implements IReplicaManager {
     }
 
     @Override
-    public boolean isPartitionOwner(int partition) {
-        return nodeOwnedPartitions.contains(partition);
+    public boolean isPartitionOrigin(int partition) {
+        return nodeOriginatedPartitions.contains(partition);
     }
 
     public void closePartitionResources(int partition) throws HyracksDataException {
@@ -185,9 +185,9 @@ public class ReplicaManager implements IReplicaManager {
         return id.getNodeId().equals(nodeId);
     }
 
-    private void setNodeOwnedPartitions(INcApplicationContext appCtx) {
+    private void setNodeOriginatedPartitions(INcApplicationContext appCtx) {
         Set<Integer> nodePartitions =
                 appCtx.getMetadataProperties().getNodePartitions(appCtx.getServiceContext().getNodeId());
-        nodeOwnedPartitions.addAll(nodePartitions);
+        nodeOriginatedPartitions.addAll(nodePartitions);
     }
 }
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IReplicaManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IReplicaManager.java
index a4d56ce..14fc9d8 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IReplicaManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IReplicaManager.java
@@ -104,10 +104,10 @@ public interface IReplicaManager {
     List<IPartitionReplica> getReplicas();
 
     /**
-     * Returns true if {@code partition} is owned by this node, otherwise false.
+     * Returns true if {@code partition} is originated by this node, otherwise false.
      *
      * @param partition
-     * @return true if the partition is owned by this node, otherwise false.
+     * @return true if the partition is originated by this node, otherwise false.
      */
-    boolean isPartitionOwner(int partition);
+    boolean isPartitionOrigin(int partition);
 }
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/PartitionResourcesListResponse.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/PartitionResourcesListResponse.java
index 1a5ba88..e85b9d4 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/PartitionResourcesListResponse.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/PartitionResourcesListResponse.java
@@ -90,7 +90,7 @@ public class PartitionResourcesListResponse implements IReplicationMessage {
         return new PartitionResourcesListResponse(partition, partitionReplicatedResources, resources, owner);
     }
 
-    public boolean isOwner() {
+    public boolean isOrigin() {
         return owner;
     }
 
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/PartitionResourcesListTask.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/PartitionResourcesListTask.java
index 3ea252f..d9b3b0c 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/PartitionResourcesListTask.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/PartitionResourcesListTask.java
@@ -59,7 +59,7 @@ public class PartitionResourcesListTask implements IReplicaTask {
                 localResourceRepository.getPartitionReplicatedFiles(partition, replicationStrategy).stream()
                         .map(StoragePathUtil::getFileRelativePath).collect(Collectors.toList());
         final PartitionResourcesListResponse response = new PartitionResourcesListResponse(partition,
-                partitionReplicatedResources, partitionFiles, appCtx.getReplicaManager().isPartitionOwner(partition));
+                partitionReplicatedResources, partitionFiles, appCtx.getReplicaManager().isPartitionOrigin(partition));
         ReplicationProtocol.sendTo(worker.getChannel(), response, worker.getReusableBuffer());
     }
 
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java
index 968f883..73fca9c 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/FileSynchronizer.java
@@ -55,7 +55,7 @@ public class FileSynchronizer {
             final IIOManager ioManager = appCtx.getIoManager();
             final ISocketChannel channel = replica.getChannel();
             final FileReference filePath = ioManager.resolve(file);
-            String masterNode = appCtx.getReplicaManager().isPartitionOwner(replica.getIdentifier().getPartition())
+            String masterNode = appCtx.getReplicaManager().isPartitionOrigin(replica.getIdentifier().getPartition())
                     ? appCtx.getServiceContext().getNodeId() : null;
             ReplicateFileTask task = new ReplicateFileTask(file, filePath.getFile().length(), metadata, masterNode);
             LOGGER.debug("attempting to replicate {} to replica {}", task, replica);
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/IndexSynchronizer.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/IndexSynchronizer.java
index 00e63ec..bfd3422 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/IndexSynchronizer.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/IndexSynchronizer.java
@@ -94,7 +94,7 @@ public class IndexSynchronizer {
         final FileSynchronizer fileSynchronizer = new FileSynchronizer(appCtx, replica);
         job.getJobFiles().stream().map(StoragePathUtil::getFileRelativePath).forEach(fileSynchronizer::replicate);
         // send mark component valid
-        String masterNode = appCtx.getReplicaManager().isPartitionOwner(replica.getIdentifier().getPartition())
+        String masterNode = appCtx.getReplicaManager().isPartitionOrigin(replica.getIdentifier().getPartition())
                 ? appCtx.getServiceContext().getNodeId() : null;
         MarkComponentValidTask markValidTask = new MarkComponentValidTask(indexFile, getReplicatedComponentLsn(),
                 getReplicatedComponentId(), masterNode);
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaFilesSynchronizer.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaFilesSynchronizer.java
index 477559c..44c9404 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaFilesSynchronizer.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaFilesSynchronizer.java
@@ -72,7 +72,7 @@ public class ReplicaFilesSynchronizer {
         }
         PartitionResourcesListResponse replicaResourceResponse = getReplicaFiles(partition);
         Map<ResourceReference, Long> resourceReferenceLongMap = getValidReplicaResources(
-                replicaResourceResponse.getPartitionReplicatedResources(), replicaResourceResponse.isOwner());
+                replicaResourceResponse.getPartitionReplicatedResources(), replicaResourceResponse.isOrigin());
         // clean up files for invalid resources (deleted or recreated while the replica was down)
         Set<String> deletedReplicaFiles =
                 cleanupReplicaInvalidResources(replicaResourceResponse, resourceReferenceLongMap);
@@ -155,7 +155,7 @@ public class ReplicaFilesSynchronizer {
             if (!validReplicaResources.containsKey(replicaRes)) {
                 LOGGER.debug("replica invalid file {} to be deleted", replicaRes.getFileRelativePath());
                 invalidFiles.add(replicaResPath);
-            } else if (replicaResourceResponse.isOwner() && !replicaRes.isMetadataResource()) {
+            } else if (replicaResourceResponse.isOrigin() && !replicaRes.isMetadataResource()) {
                 // find files where the owner generated and failed before replicating
                 Long masterValidSeq = validReplicaResources.get(replicaRes);
                 IndexComponentFileReference componentFileReference =
@@ -184,7 +184,7 @@ public class ReplicaFilesSynchronizer {
     }
 
     private Map<ResourceReference, Long> getValidReplicaResources(Map<String, Long> partitionReplicatedResources,
-            boolean owner) throws HyracksDataException {
+            boolean origin) throws HyracksDataException {
         Map<ResourceReference, Long> resource2ValidSeqMap = new HashMap<>();
         for (Map.Entry<String, Long> resourceEntry : partitionReplicatedResources.entrySet()) {
             ResourceReference rr = ResourceReference.of(resourceEntry.getKey());
@@ -196,7 +196,7 @@ public class ReplicaFilesSynchronizer {
                     LOGGER.info("replica has resource {} but with different resource id; ours {}, theirs {}", rr,
                             localResource.getId(), resourceEntry.getValue());
                 } else {
-                    long resourceMasterValidSeq = owner ? getResourceMasterValidSeq(rr) : Integer.MAX_VALUE;
+                    long resourceMasterValidSeq = origin ? getResourceMasterValidSeq(rr) : Integer.MAX_VALUE;
                     resource2ValidSeqMap.put(rr, resourceMasterValidSeq);
                 }
             }
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaSynchronizer.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaSynchronizer.java
index 2434686..a8eee4f 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaSynchronizer.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/sync/ReplicaSynchronizer.java
@@ -73,7 +73,7 @@ public class ReplicaSynchronizer {
     private void checkpointReplicaIndexes() throws IOException {
         final int partition = replica.getIdentifier().getPartition();
         String masterNode =
-                appCtx.getReplicaManager().isPartitionOwner(partition) ? appCtx.getServiceContext().getNodeId() : null;
+                appCtx.getReplicaManager().isPartitionOrigin(partition) ? appCtx.getServiceContext().getNodeId() : null;
         CheckpointPartitionIndexesTask task =
                 new CheckpointPartitionIndexesTask(partition, getPartitionMaxComponentId(partition), masterNode);
         ReplicationProtocol.sendTo(replica, task);

[asterixdb] 05/05: Merge branch 'gerrit/neo'

Posted by mb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 349915efbc05b318236dc0d18f132a0be3eee491
Merge: b3fb199 a6c858b
Author: Michael Blow <mb...@apache.org>
AuthorDate: Tue Feb 15 08:22:30 2022 -0500

    Merge branch 'gerrit/neo'
    
    Change-Id: Id22e3b96e31924a90c2cc7c7dee2aa828ba18ac6

 .../asterix/api/http/server/NCQueryServiceServlet.java       |  6 ++++++
 .../org/apache/asterix/api/http/server/NCUdfApiServlet.java  |  7 +++----
 .../main/java/org/apache/asterix/app/nc/ReplicaManager.java  | 12 ++++++------
 .../java/org/apache/asterix/common/context/DatasetInfo.java  |  2 ++
 .../java/org/apache/asterix/common/context/IndexInfo.java    |  6 ++++++
 .../org/apache/asterix/common/storage/IReplicaManager.java   |  6 +++---
 .../messaging/PartitionResourcesListResponse.java            |  2 +-
 .../replication/messaging/PartitionResourcesListTask.java    |  2 +-
 .../apache/asterix/replication/sync/FileSynchronizer.java    |  2 +-
 .../apache/asterix/replication/sync/IndexSynchronizer.java   |  2 +-
 .../asterix/replication/sync/ReplicaFilesSynchronizer.java   |  8 ++++----
 .../apache/asterix/replication/sync/ReplicaSynchronizer.java |  2 +-
 .../java/org/apache/hyracks/http/server/utils/HttpUtil.java  |  8 +++++++-
 13 files changed, 42 insertions(+), 23 deletions(-)

[asterixdb] 02/05: [NO ISSUE][API] Add ensureOptionalParameters for extension

Posted by mb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 9e332736965c8ab7e3252f5ee28e403945a33cb1
Author: Ali Alsuliman <al...@gmail.com>
AuthorDate: Sat Feb 12 02:47:21 2022 +0300

    [NO ISSUE][API] Add ensureOptionalParameters for extension
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    
    Change-Id: Id7e9c5aa9c5a4356d1c7279f10c5602059f550f0
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15227
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Ali Alsuliman <al...@gmail.com>
    Reviewed-by: Michael Blow <mb...@apache.org>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
---
 .../org/apache/asterix/api/http/server/NCQueryServiceServlet.java  | 6 ++++++
 .../java/org/apache/asterix/api/http/server/NCUdfApiServlet.java   | 7 +++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
index 5bcde3d..1ec7405 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
@@ -45,6 +45,7 @@ import org.apache.asterix.translator.IStatementExecutor;
 import org.apache.asterix.translator.ResultProperties;
 import org.apache.asterix.translator.SessionOutput;
 import org.apache.hyracks.api.application.INCServiceContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.exceptions.Warning;
 import org.apache.hyracks.api.util.ExceptionUtils;
 import org.apache.hyracks.http.api.IChannelClosedHandler;
@@ -76,6 +77,7 @@ public class NCQueryServiceServlet extends QueryServiceServlet {
             QueryServiceRequestParameters param, RequestExecutionState executionState,
             Map<String, String> optionalParameters, Map<String, byte[]> statementParameters,
             ResponsePrinter responsePrinter, List<Warning> warnings) throws Exception {
+        ensureOptionalParameters(optionalParameters);
         // Running on NC -> send 'execute' message to CC
         INCServiceContext ncCtx = (INCServiceContext) serviceCtx;
         INCMessageBroker ncMb = (INCMessageBroker) ncCtx.getMessageBroker();
@@ -134,6 +136,10 @@ public class NCQueryServiceServlet extends QueryServiceServlet {
         buildResponseResults(responsePrinter, sessionOutput, responseMsg.getExecutionPlans(), warnings);
     }
 
+    protected void ensureOptionalParameters(Map<String, String> optionalParameters) throws HyracksDataException {
+
+    }
+
     protected ExecuteStatementRequestMessage createRequestMessage(IServletRequest request,
             IRequestReference requestReference, String statementsText, SessionOutput sessionOutput,
             ResultProperties resultProperties, QueryServiceRequestParameters param,
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java
index 8cf70b2..3d0f7fc 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCUdfApiServlet.java
@@ -295,8 +295,7 @@ public class NCUdfApiServlet extends AbstractNCUdfServlet {
         responseWriter.flush();
     }
 
-    protected boolean isRequestPermittedForWrite(IServletRequest request, IServletResponse response)
-            throws IOException {
+    protected boolean isRequestPermitted(IServletRequest request, IServletResponse response) throws IOException {
         if (!isRequestOnLoopback(request)) {
             rejectForbidden(response);
             return false;
@@ -322,14 +321,14 @@ public class NCUdfApiServlet extends AbstractNCUdfServlet {
 
     @Override
     protected void post(IServletRequest request, IServletResponse response) throws IOException {
-        if (isRequestPermittedForWrite(request, response)) {
+        if (isRequestPermitted(request, response)) {
             handleModification(request, response, LibraryOperation.UPSERT);
         }
     }
 
     @Override
     protected void delete(IServletRequest request, IServletResponse response) throws IOException {
-        if (isRequestPermittedForWrite(request, response)) {
+        if (isRequestPermitted(request, response)) {
             handleModification(request, response, LibraryOperation.DELETE);
         }
     }

[asterixdb] 01/05: [NO ISSUE][STO] Log index ref registration and removal

Posted by mb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f3d8e9c1cd25f9bcc820f49a16645458c50aa21e
Author: Murtadha Hubail <mu...@couchbase.com>
AuthorDate: Fri Feb 11 04:04:55 2022 +0300

    [NO ISSUE][STO] Log index ref registration and removal
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Change-Id: I95f8565780675798393d7d43c0051c04e2b0a98c
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15225
    Reviewed-by: Ali Alsuliman <al...@gmail.com>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
---
 .../main/java/org/apache/asterix/common/context/DatasetInfo.java    | 2 ++
 .../src/main/java/org/apache/asterix/common/context/IndexInfo.java  | 6 ++++++
 2 files changed, 8 insertions(+)

diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetInfo.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetInfo.java
index 7483a17..d15d9be 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetInfo.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetInfo.java
@@ -195,12 +195,14 @@ public class DatasetInfo extends Info implements Comparable<DatasetInfo> {
     public synchronized void addIndex(long resourceID, IndexInfo indexInfo) {
         indexes.put(resourceID, indexInfo);
         partitionIndexes.computeIfAbsent(indexInfo.getPartition(), partition -> new HashSet<>()).add(indexInfo);
+        LOGGER.debug("registered reference to index {}", indexInfo);
     }
 
     public synchronized void removeIndex(long resourceID) {
         IndexInfo info = indexes.remove(resourceID);
         if (info != null) {
             partitionIndexes.get(info.getPartition()).remove(info);
+            LOGGER.debug("removed reference to index {}", info);
         }
     }
 
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/IndexInfo.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/IndexInfo.java
index b094b6f..8b631c2 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/IndexInfo.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/IndexInfo.java
@@ -55,4 +55,10 @@ public class IndexInfo extends Info {
     public LocalResource getLocalResource() {
         return localResource;
     }
+
+    @Override
+    public String toString() {
+        return "IndexInfo{" + "index=" + index + ", datasetId=" + datasetId + ", resourceId=" + resourceId
+                + ", partition=" + partition + ", localResource=" + localResource + '}';
+    }
 }

[asterixdb] 04/05: [NO ISSUE][HTTP] Fork the close of response stream on interrupt

Posted by mb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit a6c858bb541c371bf5530d9caebf31a0b59fb0e9
Author: Michael Blow <mb...@apache.org>
AuthorDate: Sat Feb 12 08:45:40 2022 -0500

    [NO ISSUE][HTTP] Fork the close of response stream on interrupt
    
    Change-Id: I0a49ae5b1d3d59f68e769bef45c39e0242e312bc
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15243
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Michael Blow <mb...@apache.org>
    Reviewed-by: Ali Alsuliman <al...@gmail.com>
    Tested-by: Michael Blow <mb...@apache.org>
---
 .../main/java/org/apache/hyracks/http/server/utils/HttpUtil.java  | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
index e433c02..9f01123 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
@@ -236,7 +236,13 @@ public class HttpUtil {
         try {
             return readFuture.get();
         } catch (InterruptedException ex) { // NOSONAR -- interrupt or rethrow
-            response.close();
+            executor.submit(() -> {
+                try {
+                    response.close();
+                } catch (IOException e) {
+                    LOGGER.debug("{} ignoring exception thrown on stream close due to interrupt", description, e);
+                }
+            });
             try {
                 readFuture.get(1, TimeUnit.SECONDS);
             } catch (TimeoutException te) {