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


The following commit(s) were added to refs/heads/master by this push:
     new 0129fdd  [NO ISSUE][REP] Send correct component ID on bulkload
0129fdd is described below

commit 0129fdd97e24e480e395ec570f73ca45f9344ee9
Author: Murtadha Hubail <[email protected]>
AuthorDate: Tue Nov 16 20:18:21 2021 +0300

    [NO ISSUE][REP] Send correct component ID on bulkload
    
    - user model changes: no
    - storage format changes: no
    - interface changes: yes
    
    Details:
    
    - When a secondary index is created, send the correct component id
      to the replica.
    - Update the component id on replicas when receiving a bulkloaded
      component.
    
    Change-Id: I5575cf9a61477636efc7e1291189a59e0a5266ae
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/14103
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Murtadha Hubail <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
---
 .../java/org/apache/asterix/app/nc/IndexCheckpointManager.java     | 7 ++++---
 .../test/storage/PersistentLocalResourceRepositoryTest.java        | 2 +-
 .../org/apache/asterix/common/storage/IIndexCheckpointManager.java | 5 +++--
 .../asterix/replication/messaging/MarkComponentValidTask.java      | 2 +-
 .../org/apache/asterix/replication/sync/IndexSynchronizer.java     | 5 +++--
 5 files changed, 12 insertions(+), 9 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/IndexCheckpointManager.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/IndexCheckpointManager.java
index 2d40ec8..96e89a7 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/IndexCheckpointManager.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/IndexCheckpointManager.java
@@ -169,11 +169,12 @@ public class IndexCheckpointManager implements 
IIndexCheckpointManager {
     }
 
     @Override
-    public synchronized void advanceValidComponentSequence(long 
componentSequence) throws HyracksDataException {
+    public synchronized void advanceValidComponent(long componentSequence, 
long componentId)
+            throws HyracksDataException {
         final IndexCheckpoint latest = getLatest();
         if (componentSequence > latest.getValidComponentSequence()) {
-            final IndexCheckpoint next = IndexCheckpoint.next(latest, 
latest.getLowWatermark(), componentSequence,
-                    latest.getLastComponentId(), null);
+            final IndexCheckpoint next =
+                    IndexCheckpoint.next(latest, latest.getLowWatermark(), 
componentSequence, componentId, null);
             persist(next);
         }
     }
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/PersistentLocalResourceRepositoryTest.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/PersistentLocalResourceRepositoryTest.java
index 50118fc..59efef4 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/PersistentLocalResourceRepositoryTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/PersistentLocalResourceRepositoryTest.java
@@ -189,7 +189,7 @@ public class PersistentLocalResourceRepositoryTest {
         DatasetResourceReference drr = 
DatasetResourceReference.of(localResource);
         IIndexCheckpointManagerProvider indexCheckpointManagerProvider = 
ncAppCtx.getIndexCheckpointManagerProvider();
         IIndexCheckpointManager indexCheckpointManager = 
indexCheckpointManagerProvider.get(drr);
-        
indexCheckpointManager.advanceValidComponentSequence(validComponentSequence);
+        indexCheckpointManager.advanceValidComponent(validComponentSequence, 
1);
         // create components to be merged
         String btree = "_b";
         String filter = "_f";
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IIndexCheckpointManager.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IIndexCheckpointManager.java
index f9230dd..beb8e07 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IIndexCheckpointManager.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IIndexCheckpointManager.java
@@ -125,12 +125,13 @@ public interface IIndexCheckpointManager {
     IndexCheckpoint getLatest() throws HyracksDataException;
 
     /**
-     * Advance the last valid component sequence. Used for replicated 
bulkloaded components
+     * Advance the last valid component. Used for replicated bulkloaded 
components
      *
      * @param componentSequence
+     * @param componentId
      * @throws HyracksDataException
      */
-    void advanceValidComponentSequence(long componentSequence) throws 
HyracksDataException;
+    void advanceValidComponent(long componentSequence, long componentId) 
throws HyracksDataException;
 
     /**
      * Set the last component id. Used during recovery or after component 
delete
diff --git 
a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/MarkComponentValidTask.java
 
b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/MarkComponentValidTask.java
index c92a527..1ea076d 100644
--- 
a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/MarkComponentValidTask.java
+++ 
b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/MarkComponentValidTask.java
@@ -77,7 +77,7 @@ public class MarkComponentValidTask implements IReplicaTask {
         final IIndexCheckpointManagerProvider checkpointManagerProvider = 
appCtx.getIndexCheckpointManagerProvider();
         final IIndexCheckpointManager indexCheckpointManager = 
checkpointManagerProvider.get(indexRef);
         final long componentSequence = 
IndexComponentFileReference.of(indexRef.getName()).getSequenceEnd();
-        
indexCheckpointManager.advanceValidComponentSequence(componentSequence);
+        indexCheckpointManager.advanceValidComponent(componentSequence, 
lastComponentId);
     }
 
     private void ensureComponentLsnFlushed(INcApplicationContext appCtx)
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 48ad5a5..00e63ec 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
@@ -141,11 +141,12 @@ public class IndexSynchronizer {
 
     private long getReplicatedComponentId() throws HyracksDataException {
         final ILSMIndexReplicationJob indexReplJob = (ILSMIndexReplicationJob) 
job;
-        if (indexReplJob.getLSMOpType() != LSMOperationType.FLUSH) {
+        if (indexReplJob.getLSMOpType() != LSMOperationType.FLUSH
+                && indexReplJob.getLSMOpType() != LSMOperationType.LOAD) {
             return -1L;
         }
         final ILSMIndexOperationContext ctx = 
indexReplJob.getLSMIndexOperationContext();
         LSMComponentId id = (LSMComponentId) 
ctx.getComponentsToBeReplicated().get(0).getId();
-        return id.getMinId();
+        return id.getMaxId();
     }
 }

Reply via email to