You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org> on 2017/03/12 20:22:44 UTC
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 Map<Integer, String> errorMessageMap = null;
-
private ErrorCode() {
}
- public static String getErrorMessage(int errorCode) {
- if (errorMessageMap == null) {
+ private static class Holder {
+ private static final Map<Integer, String> 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<Integer, String> errorMessageMap = null;
+ private static class Holder {
+ private static final Map<Integer, String> 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 <mb...@apache.org>
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
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 Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Yingyi Bu <bu...@gmail.com>
Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
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 Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Yingyi Bu <bu...@gmail.com>
Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
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 Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Yingyi Bu <bu...@gmail.com>
Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Posted by "abdullah alamoudi (Code Review)" <do...@asterixdb.incubator.apache.org>.
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 Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Yingyi Bu <bu...@gmail.com>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.
Change subject: ErrorCode Map Initialization Needs To Be Thread Safe
......................................................................
Patch Set 1:
WARNING: THIS CHANGE CONTAINS CROSS-PRODUCT CHANGES IN:
* asterixdb
* hyracks-fullstack
PLEASE REVIEW CAREFULLY AND LOOK FOR API CHANGES!
--
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 Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Yingyi Bu <bu...@gmail.com>
Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
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 Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Yingyi Bu <bu...@gmail.com>
Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
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 Blow <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Yingyi Bu <bu...@gmail.com>
Gerrit-HasComments: No
Change in asterixdb[master]: ErrorCode Map Initialization Needs To Be Thread Safe
Posted by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org>.
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: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: abdullah alamoudi <ba...@gmail.com>
---
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<Integer, String> errorMessageMap = null;
-
private ErrorCode() {
}
- public static String getErrorMessage(int errorCode) {
- if (errorMessageMap == null) {
+ private static class Holder {
+ private static final Map<Integer, String> 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<Integer, String> errorMessageMap = null;
+ private static class Holder {
+ private static final Map<Integer, String> 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 <mb...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Yingyi Bu <bu...@gmail.com>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>