>From Murtadha Hubail <[email protected]>:
Murtadha Hubail has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17869 )
Change subject: [ASTERIXDB-3282][STO] Exclude invalid indexes from replication
checkpoint
......................................................................
[ASTERIXDB-3282][STO] Exclude invalid indexes from replication checkpoint
- user model changes: no
- storage format changes: no
- interface changes: yes
Details:
- When attempting to checkpoint replicated indexes, exclude invalid
indexes since they might be in the process of being replciated for
the first time.
Change-Id: I589b8934d5ab297a0a1507130857929469e8510d
---
M
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/IIndexCheckpointManager.java
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/IndexCheckpointManager.java
M
asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/logging/RemoteLogsNotifier.java
3 files changed, 35 insertions(+), 1 deletion(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/69/17869/1
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 290734f..34f0cb1 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
@@ -128,6 +128,11 @@
}
@Override
+ public synchronized boolean isValidIndex() throws HyracksDataException {
+ return getCheckpointCount() > 0;
+ }
+
+ @Override
public long getValidComponentSequence() throws HyracksDataException {
if (getCheckpointCount() > 0) {
return getLatest().getValidComponentSequence();
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 beb8e07..9777879 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
@@ -140,4 +140,12 @@
* @throws HyracksDataException
*/
void setLastComponentId(long componentId) throws HyracksDataException;
+
+ /**
+ * Indicates that the index has at least one valid checkpoint
+ *
+ * @return true if the index has at least one valid checkpoint. Otherwise
false
+ * @throws HyracksDataException
+ */
+ boolean isValidIndex() throws HyracksDataException;
}
diff --git
a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/logging/RemoteLogsNotifier.java
b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/logging/RemoteLogsNotifier.java
index 80bb3c8..42a3c0b 100644
---
a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/logging/RemoteLogsNotifier.java
+++
b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/logging/RemoteLogsNotifier.java
@@ -96,7 +96,9 @@
for (DatasetResourceReference replicaIndexRef : replicaIndexesRef) {
final IIndexCheckpointManager indexCheckpointManager =
indexCheckpointManagerProvider.get(replicaIndexRef);
synchronized (indexCheckpointManager) {
-
indexCheckpointManager.masterFlush(remoteLogMapping.getMasterLsn(),
remoteLogMapping.getLSN());
+ if (indexCheckpointManager.isValidIndex()) {
+
indexCheckpointManager.masterFlush(remoteLogMapping.getMasterLsn(),
remoteLogMapping.getLSN());
+ }
}
}
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17869
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: I589b8934d5ab297a0a1507130857929469e8510d
Gerrit-Change-Number: 17869
Gerrit-PatchSet: 1
Gerrit-Owner: Murtadha Hubail <[email protected]>
Gerrit-MessageType: newchange