abdullah alamoudi has submitted this change and it was merged. Change subject: [NO ISSUE][STO] Log more information on File is already mapped ......................................................................
[NO ISSUE][STO] Log more information on File is already mapped Change-Id: Ifcc1d56a29c67e0cfc999defc00894f456c92ca9 Reviewed-on: https://asterix-gerrit.ics.uci.edu/2791 Sonar-Qube: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Till Westmann <[email protected]> --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/HaltCallback.java M hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/FileReference.java M hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties M hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/FileMapManager.java 4 files changed, 31 insertions(+), 4 deletions(-) Approvals: Anon. E. Moose #1000171: Till Westmann: Looks good to me, approved Jenkins: Verified; No violations found diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/HaltCallback.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/HaltCallback.java index db34131..17a4f46 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/HaltCallback.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/HaltCallback.java @@ -41,7 +41,7 @@ @Override public void operationFailed(ILSMIOOperation operation, Throwable t) { - LOGGER.error("Operation {} has failed", t); + LOGGER.error("Operation {} has failed", operation, t); if (operation.getIOOpertionType() == LSMIOOperationType.FLUSH) { ExitUtil.halt(ExitUtil.EC_FLUSH_FAILED); } diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/FileReference.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/FileReference.java index 0375e9e..4ded855 100644 --- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/FileReference.java +++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/FileReference.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.Serializable; +import java.util.Date; /** * A device handle and a relative path. @@ -31,6 +32,7 @@ private final File file; private final IODeviceHandle dev; private final String path; + private long registrationTime = 0L; public FileReference(IODeviceHandle dev, String path) { file = new File(dev.getMount(), path); @@ -90,4 +92,23 @@ public FileReference getChild(String name) { return new FileReference(dev, path + File.separator + name); } + + public void register() { + if (registrationTime != 0) { + throw new IllegalStateException( + "File " + toString() + " was already registered at " + new Date(registrationTime)); + } + registrationTime = System.currentTimeMillis(); + } + + public long registrationTime() { + return registrationTime; + } + + public void unregister() { + if (registrationTime == 0) { + throw new IllegalStateException("File " + toString() + " wasn't registered before"); + } + registrationTime = 0; + } } diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties b/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties index ef07038..bf73b91 100644 --- a/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties +++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/resources/errormsg/en.properties @@ -97,7 +97,7 @@ 78 = Failed to purge the bloom filter since it is active 79 = Cannot bulk-load a non-empty tree 80 = Cannot create index because it already exists -81 = File %1$s is already mapped +81 = File %1$s is already mapped as %2$s registered at %3$s 82 = Failed to create the file %1$s because it already exists 83 = No index found with resourceID %1$s 84 = Files with overlapping non-contained timestamp intervals were found in %1$s diff --git a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/FileMapManager.java b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/FileMapManager.java index 26df884..32922d2 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/FileMapManager.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/FileMapManager.java @@ -18,6 +18,7 @@ */ package org.apache.hyracks.storage.common.file; +import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -67,15 +68,20 @@ throw HyracksDataException.create(ErrorCode.NO_MAPPING_FOR_FILE_ID, fileId); } name2IdMap.remove(fileRef); + fileRef.unregister(); return fileRef; } @Override public int registerFile(FileReference fileRef) throws HyracksDataException { - if (isMapped(fileRef)) { - throw HyracksDataException.create(ErrorCode.FILE_ALREADY_MAPPED, fileRef); + Integer existingKey = name2IdMap.get(fileRef); + if (existingKey != null) { + FileReference prevFile = id2nameMap.get(existingKey); + throw HyracksDataException.create(ErrorCode.FILE_ALREADY_MAPPED, fileRef, prevFile, + new Date(prevFile.registrationTime()).toString()); } int fileId = idCounter++; + fileRef.register(); id2nameMap.put(fileId, fileRef); name2IdMap.put(fileRef, fileId); return fileId; -- To view, visit https://asterix-gerrit.ics.uci.edu/2791 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ifcc1d56a29c67e0cfc999defc00894f456c92ca9 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: abdullah alamoudi <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Ian Maxon <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Luo Chen <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]> Gerrit-Reviewer: abdullah alamoudi <[email protected]>
