Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Michael Blow has submitted this change and it was merged. Change subject: ErrorCode Map Initialization Needs To Be Thread Safe .. ErrorCode Map Initialization Needs To Be Thread Safe Reworked deferred initialization of error message map to be thread safe Change-Id: I78c0df172038bb1a97297837ff7c82b2727f8556 Reviewed-on: https://asterix-gerrit.ics.uci.edu/1571 Sonar-Qube: JenkinsTested-by: Jenkins Integration-Tests: Jenkins Reviewed-by: abdullah alamoudi --- M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java M hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java 2 files changed, 26 insertions(+), 14 deletions(-) Approvals: abdullah alamoudi: Looks good to me, approved Jenkins: Verified; No violations found; Verified Objections: Jenkins: Violations found diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java index 517e243..8f859c7 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java @@ -165,21 +165,27 @@ public static final int UTIL_LOCAL_FILE_SYSTEM_UTILS_PATH_NOT_FOUND = 3077; public static final int UTIL_HDFS_UTILS_CANNOT_OBTAIN_HDFS_SCHEDULER = 3078; -// Loads the map that maps error codes to error message templates. -private static Map errorMessageMap = null; - private ErrorCode() { } -public static String getErrorMessage(int errorCode) { -if (errorMessageMap == null) { +private static class Holder { +private static final Map errorMessageMap; + +static { +// Loads the map that maps error codes to error message templates. try (InputStream resourceStream = ErrorCode.class.getClassLoader().getResourceAsStream(RESOURCE_PATH)) { errorMessageMap = ErrorMessageUtil.loadErrorMap(resourceStream); } catch (Exception e) { throw new IllegalStateException(e); } } -String msg = errorMessageMap.get(errorCode); + +private Holder() { +} +} + +public static String getErrorMessage(int errorCode) { +String msg = Holder.errorMessageMap.get(errorCode); if (msg == null) { throw new IllegalStateException("Undefined error code: " + errorCode); } diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java index 333b1df..401103b 100644 --- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java +++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java @@ -64,21 +64,27 @@ // Compilation error codes. public static final int RULECOLLECTION_NOT_INSTANCE_OF_LIST = 10001; -// Loads the map that maps error codes to error message templates. -private static Map errorMessageMap = null; +private static class Holder { +private static final Map errorMessageMap; -private ErrorCode() { -} - -public static String getErrorMessage(int errorCode) { -if (errorMessageMap == null) { +static { +// Loads the map that maps error codes to error message templates. try (InputStream resourceStream = ErrorCode.class.getClassLoader().getResourceAsStream(RESOURCE_PATH)) { errorMessageMap = ErrorMessageUtil.loadErrorMap(resourceStream); } catch (Exception e) { throw new IllegalStateException(e); } } -String msg = errorMessageMap.get(errorCode); + +private Holder() { +} +} + +private ErrorCode() { +} + +public static String getErrorMessage(int errorCode) { +String msg = Holder.errorMessageMap.get(errorCode); if (msg == null) { throw new IllegalStateException("Undefined error code: " + errorCode); } -- To view, visit https://asterix-gerrit.ics.uci.edu/1571 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: I78c0df172038bb1a97297837ff7c82b2727f8556 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael Blow Gerrit-Reviewer: Jenkins
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
abdullah alamoudi has posted comments on this change. Change subject: ErrorCode Map Initialization Needs To Be Thread Safe .. Patch Set 1: Code-Review+2 -- To view, visit https://asterix-gerrit.ics.uci.edu/1571 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I78c0df172038bb1a97297837ff7c82b2727f8556 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael BlowGerrit-Reviewer: Jenkins Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: Yingyi Bu Gerrit-Reviewer: abdullah alamoudi Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Jenkins has posted comments on this change. Change subject: ErrorCode Map Initialization Needs To Be Thread Safe .. Patch Set 1: Integration-Tests+1 Integration Tests Successful https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/2166/ : SUCCESS -- To view, visit https://asterix-gerrit.ics.uci.edu/1571 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I78c0df172038bb1a97297837ff7c82b2727f8556 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael BlowGerrit-Reviewer: Jenkins Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: Yingyi Bu Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Jenkins has posted comments on this change. Change subject: ErrorCode Map Initialization Needs To Be Thread Safe .. Patch Set 1: BAD-1 BAD Compatibility Tests Failed https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/777/ : UNSTABLE -- To view, visit https://asterix-gerrit.ics.uci.edu/1571 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I78c0df172038bb1a97297837ff7c82b2727f8556 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael BlowGerrit-Reviewer: Jenkins Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: Yingyi Bu Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Jenkins has posted comments on this change. Change subject: ErrorCode Map Initialization Needs To Be Thread Safe .. Patch Set 1: BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/777/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1571 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I78c0df172038bb1a97297837ff7c82b2727f8556 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael BlowGerrit-Reviewer: Jenkins Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: Yingyi Bu Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Jenkins has posted comments on this change. Change subject: ErrorCode Map Initialization Needs To Be Thread Safe .. Patch Set 1: Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/2166/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1571 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I78c0df172038bb1a97297837ff7c82b2727f8556 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael BlowGerrit-Reviewer: Jenkins Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: Yingyi Bu Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Jenkins has posted comments on this change. Change subject: ErrorCode Map Initialization Needs To Be Thread Safe .. Patch Set 1: Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/4643/ -- To view, visit https://asterix-gerrit.ics.uci.edu/1571 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I78c0df172038bb1a97297837ff7c82b2727f8556 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael BlowGerrit-Reviewer: Jenkins Gerrit-Reviewer: Till Westmann Gerrit-Reviewer: Yingyi Bu Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Michael Blow has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/1571 Change subject: ErrorCode Map Initialization Needs To Be Thread Safe .. ErrorCode Map Initialization Needs To Be Thread Safe Reworked deferred initialization of error message map to be thread safe Change-Id: I78c0df172038bb1a97297837ff7c82b2727f8556 --- M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java M hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java 2 files changed, 26 insertions(+), 14 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/71/1571/1 diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java index 517e243..8f859c7 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java @@ -165,21 +165,27 @@ public static final int UTIL_LOCAL_FILE_SYSTEM_UTILS_PATH_NOT_FOUND = 3077; public static final int UTIL_HDFS_UTILS_CANNOT_OBTAIN_HDFS_SCHEDULER = 3078; -// Loads the map that maps error codes to error message templates. -private static MaperrorMessageMap = null; - private ErrorCode() { } -public static String getErrorMessage(int errorCode) { -if (errorMessageMap == null) { +private static class Holder { +private static final Map errorMessageMap; + +static { +// Loads the map that maps error codes to error message templates. try (InputStream resourceStream = ErrorCode.class.getClassLoader().getResourceAsStream(RESOURCE_PATH)) { errorMessageMap = ErrorMessageUtil.loadErrorMap(resourceStream); } catch (Exception e) { throw new IllegalStateException(e); } } -String msg = errorMessageMap.get(errorCode); + +private Holder() { +} +} + +public static String getErrorMessage(int errorCode) { +String msg = Holder.errorMessageMap.get(errorCode); if (msg == null) { throw new IllegalStateException("Undefined error code: " + errorCode); } diff --git a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java index 333b1df..401103b 100644 --- a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java +++ b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/ErrorCode.java @@ -64,21 +64,27 @@ // Compilation error codes. public static final int RULECOLLECTION_NOT_INSTANCE_OF_LIST = 10001; -// Loads the map that maps error codes to error message templates. -private static Map errorMessageMap = null; +private static class Holder { +private static final Map errorMessageMap; -private ErrorCode() { -} - -public static String getErrorMessage(int errorCode) { -if (errorMessageMap == null) { +static { +// Loads the map that maps error codes to error message templates. try (InputStream resourceStream = ErrorCode.class.getClassLoader().getResourceAsStream(RESOURCE_PATH)) { errorMessageMap = ErrorMessageUtil.loadErrorMap(resourceStream); } catch (Exception e) { throw new IllegalStateException(e); } } -String msg = errorMessageMap.get(errorCode); + +private Holder() { +} +} + +private ErrorCode() { +} + +public static String getErrorMessage(int errorCode) { +String msg = Holder.errorMessageMap.get(errorCode); if (msg == null) { throw new IllegalStateException("Undefined error code: " + errorCode); } -- To view, visit https://asterix-gerrit.ics.uci.edu/1571 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I78c0df172038bb1a97297837ff7c82b2727f8556 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael Blow