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 b50d4add90acb7e8cf13e7b4168f92bcf35348dc Author: Murtadha Hubail <[email protected]> AuthorDate: Thu Mar 10 04:01:06 2022 +0300 [NO ISSUE][REP] Invalidate resources cache for replicated resources - user model changes: no - storage format changes: no - interface changes: no Details: - Invalidate the resources cache when a replicate index is created or dropped. Change-Id: I89013addda4e8e1aeafbe1782c7eb12226ba60b7 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15623 Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> Reviewed-by: Ali Alsuliman <[email protected]> --- .../org/apache/asterix/replication/messaging/DropIndexTask.java | 4 ++++ .../org/apache/asterix/replication/messaging/ReplicateFileTask.java | 3 +++ .../management/resource/PersistentLocalResourceRepository.java | 6 +++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/DropIndexTask.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/DropIndexTask.java index 04f9766..483561b 100644 --- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/DropIndexTask.java +++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/DropIndexTask.java @@ -26,8 +26,10 @@ import java.io.OutputStream; import org.apache.asterix.common.api.INcApplicationContext; import org.apache.asterix.common.exceptions.ReplicationException; +import org.apache.asterix.common.storage.ResourceReference; import org.apache.asterix.replication.api.IReplicaTask; import org.apache.asterix.replication.api.IReplicationWorker; +import org.apache.asterix.transaction.management.resource.PersistentLocalResourceRepository; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.io.IIOManager; import org.apache.hyracks.api.util.IoUtil; @@ -54,6 +56,8 @@ public class DropIndexTask implements IReplicaTask { if (indexFile.exists()) { File indexDir = indexFile.getParentFile(); IoUtil.delete(indexDir); + ((PersistentLocalResourceRepository) appCtx.getLocalResourceRepository()) + .invalidateResource(ResourceReference.of(file).getRelativePath().toString()); LOGGER.info(() -> "Deleted index: " + indexFile.getAbsolutePath()); } else { LOGGER.warn(() -> "Requested to delete a non-existing index: " + indexFile.getAbsolutePath()); diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java index 5bec257..500a5de 100644 --- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java +++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/messaging/ReplicateFileTask.java @@ -39,6 +39,7 @@ import org.apache.asterix.common.utils.StorageConstants; import org.apache.asterix.replication.api.IReplicaTask; import org.apache.asterix.replication.api.IReplicationWorker; import org.apache.asterix.replication.management.NetworkingUtil; +import org.apache.asterix.transaction.management.resource.PersistentLocalResourceRepository; import org.apache.commons.io.FileUtils; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.io.FileReference; @@ -76,6 +77,8 @@ public class ReplicateFileTask implements IReplicaTask { if (indexMetadata) { // ensure clean index directory FileUtils.cleanDirectory(resourceDir.toFile()); + ((PersistentLocalResourceRepository) appCtx.getLocalResourceRepository()) + .invalidateResource(ResourceReference.of(file).getRelativePath().toString()); } // create mask final Path maskPath = Paths.get(resourceDir.toString(), diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java index 6577367..cc396ad 100644 --- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java +++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java @@ -221,7 +221,7 @@ public class PersistentLocalResourceRepository implements ILocalResourceReposito relativePath); } } finally { - resourceCache.invalidate(relativePath); + invalidateResource(relativePath); } } @@ -296,6 +296,10 @@ public class PersistentLocalResourceRepository implements ILocalResourceReposito return max.isPresent() ? max.get() : 0; } + public void invalidateResource(String relativePath) { + resourceCache.invalidate(relativePath); + } + private static String getFileName(String path) { return path.endsWith(File.separator) ? (path + StorageConstants.METADATA_FILE_NAME) : (path + File.separator + StorageConstants.METADATA_FILE_NAME);
