You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by bu...@apache.org on 2017/01/08 04:13:46 UTC

[3/3] asterixdb git commit: Runtime ErrorCode fix in external data

Runtime ErrorCode fix in external data

1. Refactored most of the exceptions in external-data package to use
ErrorCode.
2. This change only covers RuntimeDataException/HyracksDataExcetion.
3. Refactor errorcode names

Change-Id: Ida810a56bf4aef1394879f088a6a5e8f82c60b74
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1374
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
BAD: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Yingyi Bu <bu...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/024fafe2
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/024fafe2
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/024fafe2

Branch: refs/heads/master
Commit: 024fafe2ef3f3fc27c939101174950208168f635
Parents: 90cdbac
Author: Xikui Wang <xk...@gmail.com>
Authored: Sat Jan 7 10:59:36 2017 -0800
Committer: Yingyi Bu <bu...@gmail.com>
Committed: Sat Jan 7 20:13:10 2017 -0800

----------------------------------------------------------------------
 .../rules/CheckInsertUpsertReturningRule.java   |   2 +-
 .../app/cc/CompilerExtensionManager.java        |   6 +-
 .../asterix/app/nc/NCExtensionManager.java      |   2 +-
 .../src/test/resources/runtimets/testsuite.xml  |   2 +-
 .../resources/runtimets/testsuite_sqlpp.xml     |   4 +-
 .../common/exceptions/AsterixException.java     |  12 ++
 .../asterix/common/exceptions/ErrorCode.java    | 129 +++++++++++++----
 .../asterix/common/library/ILibraryManager.java |   4 +-
 .../main/resources/asx_errormsg/en.properties   |  98 +++++++++++--
 .../asterix/external/api/IFunctionHelper.java   |   2 +-
 .../external/api/ILookupRecordReader.java       |   2 +-
 .../asterix/external/api/IRecordDataParser.java |   4 +-
 .../external/api/IRecordWithMetadataParser.java |   6 +-
 .../external/api/IRecordWithPKDataParser.java   |   5 +-
 .../asterix/external/api/IStreamDataParser.java |   4 +-
 .../dataflow/ChangeFeedDataFlowController.java  |   3 +-
 .../ChangeFeedWithMetaDataFlowController.java   |   3 +-
 .../dataflow/CounterTimerTupleForwarder.java    |   4 +-
 .../FeedWithMetaDataFlowController.java         |   4 +-
 .../dataflow/FrameFullTupleForwarder.java       |   4 +-
 .../dataflow/RateControlledTupleForwarder.java  |   6 +-
 .../api/IActiveLifecycleEventSubscriber.java    |   4 +-
 .../feed/dataflow/FeedExceptionHandler.java     |   3 +-
 .../feed/dataflow/FrameDistributor.java         |   8 +-
 .../ActiveLifecycleEventSubscriber.java         |  12 +-
 .../feed/management/FeedEventsListener.java     |  28 ++--
 .../feed/policy/FeedPolicyEnforcer.java         |   5 +-
 .../indexing/ExternalFileIndexAccessor.java     |   5 +-
 .../indexing/FileIndexTupleTranslator.java      |   6 +-
 .../external/input/HDFSDataSourceFactory.java   |   2 +-
 .../external/input/record/CharArrayRecord.java  |   6 +-
 .../input/record/RecordWithMetadataAndPK.java   |  10 +-
 .../external/input/record/RecordWithPK.java     |   3 +-
 .../converter/DCPMessageToRecordConverter.java  |   7 +-
 .../input/stream/SocketClientInputStream.java   |   2 +-
 .../external/library/ExternalFunction.java      |   8 +-
 .../library/ExternalFunctionProvider.java       |   8 +-
 .../library/ExternalLibraryManager.java         |   7 +-
 .../external/library/JavaFunctionHelper.java    |  13 +-
 .../library/RuntimeExternalFunctionUtil.java    |  14 +-
 .../external/library/java/JObjectAccessors.java |   6 +-
 .../external/library/java/JObjectUtil.java      |   4 +-
 .../asterix/external/library/java/JObjects.java |  17 +--
 .../ExternalFilesIndexOperatorDescriptor.java   |   5 +-
 ...ExternalRTreeSearchOperatorNodePushable.java |   2 +-
 .../operators/FeedIntakeOperatorDescriptor.java |  11 +-
 .../FeedIntakeOperatorNodePushable.java         |   5 +-
 .../FeedMessageOperatorNodePushable.java        |  10 +-
 .../operators/FeedMetaOperatorDescriptor.java   |   5 +-
 .../asterix/external/parser/ADMDataParser.java  | 138 +++++++++++--------
 .../external/parser/DelimitedDataParser.java    |  94 ++++++++-----
 .../external/parser/HiveRecordParser.java       | 129 ++++++++---------
 .../asterix/external/parser/RSSParser.java      |   3 +-
 .../parser/RecordWithMetadataParser.java        |   2 +-
 .../external/parser/RecordWithPKDataParser.java |  12 +-
 .../asterix/external/parser/TweetParser.java    |   6 +-
 .../factory/DelimitedDataParserFactory.java     |  15 +-
 .../parser/factory/HiveDataParserFactory.java   |   1 +
 .../RecordWithMetadataParserFactory.java        |  10 +-
 .../provider/DataflowControllerProvider.java    |   6 +-
 .../provider/DatasourceFactoryProvider.java     |  24 +++-
 .../provider/StreamRecordReaderProvider.java    |   4 +-
 .../asterix/external/util/DataflowUtils.java    |   8 +-
 .../external/util/ExternalDataUtils.java        |   7 +-
 .../external/util/FileSystemWatcher.java        |   5 +-
 .../apache/asterix/external/util/HDFSUtils.java |  11 +-
 .../external/util/LocalFileSystemUtils.java     |   6 +-
 .../asterix/external/util/NodeResolver.java     |  10 +-
 .../external/library/AddHashTagsFunction.java   |   2 +-
 .../library/AddHashTagsInPlaceFunction.java     |   2 +-
 .../external/library/AllTypesFunction.java      |   2 +-
 .../asterix/external/library/ClassAdParser.java |   2 +-
 .../external/library/ParseTweetFunction.java    |   3 +-
 .../external/parser/TestRecordWithPKParser.java |   6 +-
 .../lang/common/util/LangRecordParseUtil.java   |  10 +-
 .../exceptions/IncompatibleTypeException.java   |   4 +-
 .../exceptions/InvalidExpressionException.java  |   4 +-
 .../om/exceptions/TypeMismatchException.java    |   4 +-
 .../UnsupportedItemTypeException.java           |   4 +-
 .../om/exceptions/UnsupportedTypeException.java |   4 +-
 .../om/pointables/cast/ARecordCaster.java       |   2 +-
 .../impl/RecordMergeTypeComputer.java           |   4 +-
 .../typecomputer/impl/SwitchCaseComputer.java   |   2 +-
 .../om/types/hierachy/ATypeHierarchy.java       |  12 +-
 .../functions/InjectFailureDescriptor.java      |   2 +-
 .../functions/StringRepeatDescriptor.java       |   2 +-
 .../functions/Substring2Descriptor.java         |   2 +-
 .../functions/SubstringDescriptor.java          |   2 +-
 .../records/RecordAddFieldsDescriptor.java      |   2 +-
 .../records/RecordMergeDescriptor.java          |   2 +-
 .../exceptions/IncompatibleTypeException.java   |   4 +-
 .../exceptions/InvalidDataFormatException.java  |   6 +-
 .../runtime/exceptions/OverflowException.java   |   4 +-
 .../exceptions/TypeMismatchException.java       |   4 +-
 .../runtime/exceptions/UnderflowException.java  |   4 +-
 .../UnsupportedItemTypeException.java           |   4 +-
 .../exceptions/UnsupportedTypeException.java    |   4 +-
 .../std/SubsetCollectionDescriptor.java         |   2 +-
 98 files changed, 722 insertions(+), 402 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckInsertUpsertReturningRule.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckInsertUpsertReturningRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckInsertUpsertReturningRule.java
index d181dd3..7c01ebd 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckInsertUpsertReturningRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CheckInsertUpsertReturningRule.java
@@ -43,7 +43,7 @@ public class CheckInsertUpsertReturningRule implements IAlgebraicRewriteRule {
             return false;
         }
         if (InsertUpsertCheckUtil.check(opRef.getValue())) {
-            throw new CompilationException(ErrorCode.ERROR_COMPILATION_INVALID_RETURNING_EXPRESSION);
+            throw new CompilationException(ErrorCode.COMPILATION_INVALID_RETURNING_EXPRESSION);
         }
         checked = true;
         return false;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CompilerExtensionManager.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CompilerExtensionManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CompilerExtensionManager.java
index c994abd..95ce100 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CompilerExtensionManager.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CompilerExtensionManager.java
@@ -72,7 +72,7 @@ public class CompilerExtensionManager implements IAlgebraExtensionManager {
                 IExtension extension = (IExtension) Class.forName(extensionConf.getClassName()).newInstance();
                 extension.configure(extensionConf.getArgs());
                 if (extensions.containsKey(extension.getId())) {
-                    throw new RuntimeDataException(ErrorCode.ERROR_EXTENSION_ID_CONFLICT, extension.getId());
+                    throw new RuntimeDataException(ErrorCode.EXTENSION_ID_CONFLICT, extension.getId());
                 }
                 extensions.put(extension.getId(), extension);
                 switch (extension.getExtensionKind()) {
@@ -97,7 +97,7 @@ public class CompilerExtensionManager implements IAlgebraExtensionManager {
     private Pair<ExtensionId, ILangCompilationProvider> extendLangCompilationProvider(Language lang,
             Pair<ExtensionId, ILangCompilationProvider> cp, ILangExtension le) throws HyracksDataException {
         if (cp != null && le.getLangCompilationProvider(lang) != null) {
-            throw new RuntimeDataException(ErrorCode.ERROR_EXTENSION_COMPONENT_CONFLICT, le.getId(), cp.first,
+            throw new RuntimeDataException(ErrorCode.EXTENSION_COMPONENT_CONFLICT, le.getId(), cp.first,
                     lang.toString());
         }
         return (le.getLangCompilationProvider(lang) != null)
@@ -107,7 +107,7 @@ public class CompilerExtensionManager implements IAlgebraExtensionManager {
     private IStatementExecutorExtension extendStatementExecutor(IStatementExecutorExtension qte,
             IStatementExecutorExtension extension) throws HyracksDataException {
         if (qte != null) {
-            throw new RuntimeDataException(ErrorCode.ERROR_EXTENSION_COMPONENT_CONFLICT, qte.getId(), extension.getId(),
+            throw new RuntimeDataException(ErrorCode.EXTENSION_COMPONENT_CONFLICT, qte.getId(), extension.getId(),
                     IStatementExecutorFactory.class.getSimpleName());
         }
         return extension;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCExtensionManager.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCExtensionManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCExtensionManager.java
index fcf559f..9e32b7e 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCExtensionManager.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCExtensionManager.java
@@ -76,7 +76,7 @@ public class NCExtensionManager {
     private MetadataTupleTranslatorProvider extendTupleTranslator(MetadataTupleTranslatorProvider ttp,
             IMetadataExtension tupleTranslatorExtension, IMetadataExtension mde) throws HyracksDataException {
         if (ttp != null) {
-            throw new RuntimeDataException(ErrorCode.ERROR_EXTENSION_COMPONENT_CONFLICT,
+            throw new RuntimeDataException(ErrorCode.EXTENSION_COMPONENT_CONFLICT,
                     tupleTranslatorExtension.getId(),
                     mde.getId(), IMetadataExtension.class.getSimpleName());
         }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
index 65ec9d9..dfb6303 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -6722,7 +6722,7 @@
     <test-case FilePath="load">
       <compilation-unit name="file-not-found">
         <output-dir compare="Text">none</output-dir>
-        <expected-error>org.apache.hyracks.api.exceptions.HyracksDataException: bla: path not found</expected-error>
+        <expected-error>org.apache.hyracks.api.exceptions.HyracksDataException: ASX3077: bla: path not found</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="user-defined-functions">

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index c8785fe..0aaf8c3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -1724,13 +1724,13 @@
     <test-case FilePath="dml">
       <compilation-unit name="load-with-autogenerated-pk_adm_02">
         <output-dir compare="Text">load-with-autogenerated-pk_adm_02</output-dir>
-        <expected-error>Parse error at (0, 5): This record is closed, you can not add extra fields! new field name: id</expected-error>
+        <expected-error>Parse error at (0, 5): ASX3058: This record is closed, you can not add extra fields! new field name: id</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="dml">
       <compilation-unit name="load-with-autogenerated-pk_adm_03">
         <output-dir compare="Text">load-with-autogenerated-pk_adm_03</output-dir>
-        <expected-error>Parse error at (0, 5): This record is closed, you can not add extra fields! new field name: id</expected-error>
+        <expected-error>Parse error at (0, 5): ASX3058: This record is closed, you can not add extra fields! new field name: id</expected-error>
       </compilation-unit>
     </test-case>
     <test-case FilePath="dml">

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/AsterixException.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/AsterixException.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/AsterixException.java
index 53bb969..7a73705 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/AsterixException.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/AsterixException.java
@@ -20,6 +20,8 @@ package org.apache.asterix.common.exceptions;
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 
+import java.io.Serializable;
+
 public class AsterixException extends AlgebricksException {
     private static final long serialVersionUID = 1L;
 
@@ -27,10 +29,20 @@ public class AsterixException extends AlgebricksException {
         super(message);
     }
 
+    public AsterixException(int errorCode, Serializable... params) {
+        super(ErrorCode.ASTERIX, errorCode, ErrorCode.getErrorMessage(errorCode), params);
+
+    }
+
     public AsterixException(Throwable cause) {
         super(cause);
     }
 
+    public AsterixException(int errorCode, Throwable cause, Serializable... params) {
+        super(ErrorCode.ASTERIX, errorCode, ErrorCode.getErrorMessage(errorCode), params);
+        addSuppressed(cause);
+    }
+
     public AsterixException(String message, Throwable cause) {
         super(message, cause);
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/exceptions/ErrorCode.java
----------------------------------------------------------------------
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 2e7c69b..1289787 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
@@ -35,34 +35,115 @@ public class ErrorCode {
     public static final String ASTERIX = "ASX";
 
     // Extension errors
-    public static final int ERROR_EXTENSION_ID_CONFLICT = 4001;
-    public static final int ERROR_EXTENSION_COMPONENT_CONFLICT = 4002;
+    public static final int EXTENSION_ID_CONFLICT = 4001;
+    public static final int EXTENSION_COMPONENT_CONFLICT = 4002;
 
     // Runtime errors
-    public static final int ERROR_CASTING_FIELD = 1;
-    public static final int ERROR_TYPE_MISMATCH = 2;
-    public static final int ERROR_TYPE_INCOMPATIBLE = 3;
-    public static final int ERROR_TYPE_UNSUPPORTED = 4;
-    public static final int ERROR_TYPE_ITEM = 5;
-    public static final int ERROR_INVALID_FORMAT = 6;
-    public static final int ERROR_OVERFLOW = 7;
-    public static final int ERROR_UNDERFLOW = 8;
-    public static final int ERROR_INJECTED_FAILURE = 9;
-    public static final int ERROR_NEGATIVE_VALUE = 10;
-    public static final int ERROR_OUT_OF_BOUND = 11;
-    public static final int ERROR_COERCION = 12;
-    public static final int ERROR_DUPLICATE_FIELD_NAME = 13;
+    public static final int CASTING_FIELD = 1;
+    public static final int TYPE_MISMATCH = 2;
+    public static final int TYPE_INCOMPATIBLE = 3;
+    public static final int TYPE_UNSUPPORTED = 4;
+    public static final int TYPE_ITEM = 5;
+    public static final int INVALID_FORMAT = 6;
+    public static final int OVERFLOW = 7;
+    public static final int UNDERFLOW = 8;
+    public static final int INJECTED_FAILURE = 9;
+    public static final int NEGATIVE_VALUE = 10;
+    public static final int OUT_OF_BOUND = 11;
+    public static final int COERCION = 12;
+    public static final int DUPLICATE_FIELD_NAME = 13;
 
     // Compilation errors
-    public static final int ERROR_PARSE_ERROR = 1001;
-    public static final int ERROR_COMPILATION_TYPE_MISMATCH = 1002;
-    public static final int ERROR_COMPILATION_TYPE_INCOMPATIBLE = 1003;
-    public static final int ERROR_COMPILATION_TYPE_UNSUPPORTED = 1004;
-    public static final int ERROR_COMPILATION_TYPE_ITEM = 1005;
-    public static final int ERROR_COMPILATION_DUPLICATE_FIELD_NAME = 1006;
-    public static final int ERROR_COMPILATION_INVALID_EXPRESSION = 1007;
-    public static final int ERROR_COMPILATION_INVALID_PARAMETER_NUMBER = 1008;
-    public static final int ERROR_COMPILATION_INVALID_RETURNING_EXPRESSION = 1009;
+    public static final int PARSE_ERROR = 1001;
+    public static final int COMPILATION_TYPE_MISMATCH = 1002;
+    public static final int COMPILATION_TYPE_INCOMPATIBLE = 1003;
+    public static final int COMPILATION_TYPE_UNSUPPORTED = 1004;
+    public static final int COMPILATION_TYPE_ITEM = 1005;
+    public static final int COMPILATION_DUPLICATE_FIELD_NAME = 1006;
+    public static final int COMPILATION_INVALID_EXPRESSION = 1007;
+    public static final int COMPILATION_INVALID_PARAMETER_NUMBER = 1008;
+    public static final int COMPILATION_INVALID_RETURNING_EXPRESSION = 1009;
+
+    // Feed errors
+    public static final int DATAFLOW_ILLEGAL_STATE = 3001;
+    public static final int UTIL_DATAFLOW_UTILS_TUPLE_TOO_LARGE = 3002;
+    public static final int UTIL_DATAFLOW_UTILS_UNKNOWN_FORWARD_POLICY = 3003;
+    public static final int OPERATORS_FEED_INTAKE_OPERATOR_DESCRIPTOR_CLASSLOADER_NOT_CONFIGURED = 3004;
+    public static final int PARSER_DELIMITED_NONOPTIONAL_NULL = 3005;
+    public static final int PARSER_DELIMITED_ILLEGAL_FIELD = 3006;
+    public static final int FEED_MANAGEMENT_ACTIVE_LIFE_CYCLE_EVENT_SUBSCRIBER_ACTIVE_JOB_FAILURE = 3007;
+    public static final int OPERATORS_FEED_INTAKE_OPERATOR_NODE_PUSHABLE_FAIL_AT_INGESTION = 3008;
+    public static final int OPERATORS_FEED_MSG_OPERATOR_NODE_PUSHABLE_INVALID_SUBSCRIBABLE_RUNTIME = 3009;
+    public static final int PARSER_HIVE_NON_PRIMITIVE_LIST_NOT_SUPPORT = 3010;
+    public static final int PARSER_HIVE_FIELD_TYPE = 3011;
+    public static final int PARSER_HIVE_GET_COLUMNS = 3012;
+    public static final int PARSER_HIVE_NO_CLOSED_COLUMNS = 3013;
+    public static final int PARSER_HIVE_NOT_SUPPORT_NON_OP_UNION = 3014;
+    public static final int PARSER_HIVE_MISSING_FIELD_TYPE_INFO = 3015;
+    public static final int PARSER_HIVE_NULL_FIELD = 3016;
+    public static final int PARSER_HIVE_NULL_VALUE_IN_LIST = 3017;
+    public static final int INPUT_RECORD_RECORD_WITH_METADATA_AND_PK_NULL_IN_NON_OPTIONAL = 3018;
+    public static final int INPUT_RECORD_RECORD_WITH_METADATA_AND_PK_CANNT_GET_PKEY = 3019;
+    public static final int FEED_MANAGEMENT_FEED_EVENT_LISTENER_FEED_JOINT_REGISTERED = 3020;
+    public static final int FEED_MANAGEMENT_FEED_EVENT_REGISTER_INTAKE_JOB_FAIL = 3021;
+    public static final int PROVIDER_DATAFLOW_CONTROLLER_UNKNOWN_DATA_SOURCE = 3022;
+    public static final int PROVIDER_DATASOURCE_FACTORY_UNKNOWN_INPUT_STREAM_FACTORY = 3023;
+    public static final int UTIL_EXTERNAL_DATA_UTILS_FAIL_CREATE_STREAM_FACTORY = 3024;
+    public static final int UNKNOWN_RECORD_READER_FACTORY = 3025;
+    public static final int PROVIDER_STREAM_RECORD_READER_UNKNOWN_FORMAT = 3026;
+    public static final int UNKNOWN_RECORD_FORMAT_FOR_META_PARSER = 3027;
+    public static final int LIBRARY_JAVA_JOBJECTS_FIELD_ALREADY_DEFINED = 3028;
+    public static final int LIBRARY_JAVA_JOBJECTS_UNKNOWN_FIELD = 3029;
+    public static final int NODE_RESOLVER_COULDNT_RESOLVE_ADDRESS = 3030;
+    public static final int NODE_RESOLVER_NO_NODE_CONTROLLERS = 3031;
+    public static final int NODE_RESOLVER_UNABLE_RESOLVE_HOST = 3032;
+    public static final int INPUT_RECORD_CONVERTER_DCP_MSG_TO_RECORD_CONVERTER_UNKNOWN_DCP_REQUEST = 3033;
+    public static final int FEED_DATAFLOW_FRAME_DISTR_REGISTER_FAILED_DATA_PROVIDER = 3034;
+    public static final int FEED_MANAGEMENT_FEED_EVENTS_LISTENER_ALREADY_HAVE_INTAKE_JOB = 3035;
+    public static final int FEED_MANAGEMENT_FEED_EVENTS_LISTENER_INTAKE_JOB_REGISTERED = 3036;
+    public static final int FEED_MANAGEMENT_FEED_EVENTS_LISTENER_FEED_JOB_REGISTERED = 3037;
+    public static final int INPUT_RECORD_READER_CHAR_ARRAY_RECORD_TOO_LARGE = 3038;
+    public static final int LIBRARY_JOBJECT_ACCESSOR_CANNOT_PARSE_TYPE = 3039;
+    public static final int LIBRARY_JOBJECT_UTIL_ILLEGAL_ARGU_TYPE = 3040;
+    public static final int LIBRARY_EXTERNAL_FUNCTION_UNABLE_TO_LOAD_CLASS = 3041;
+    public static final int LIBRARY_EXTERNAL_FUNCTION_UNSUPPORTED_KIND = 3042;
+    public static final int LIBRARY_EXTERNAL_FUNCTION_UNKNOWN_KIND = 3043;
+    public static final int LIBRARY_EXTERNAL_LIBRARY_CLASS_REGISTERED = 3044;
+    public static final int LIBRARY_JAVA_FUNCTION_HELPER_CANNOT_HANDLE_ARGU_TYPE = 3045;
+    public static final int LIBRARY_JAVA_FUNCTION_HELPER_OBJ_TYPE_NOT_SUPPORTED = 3046;
+    public static final int LIBRARY_EXTERNAL_FUNCTION_UNSUPPORTED_NAME = 3047;
+    public static final int OPERATORS_FEED_META_OPERATOR_DESCRIPTOR_INVALID_RUNTIME = 3048;
+    public static final int PARSER_FACTORY_DELIMITED_DATA_PARSER_FACTORY_NOT_VALID_DELIMITER = 3049;
+    public static final int PARSER_FACTORY_DELIMITED_DATA_PARSER_FACTORY_NOT_VALID_QUOTE = 3050;
+    public static final int PARSER_FACTORY_DELIMITED_DATA_PARSER_FACTORY_QUOTE_DELIMITER_MISMATCH = 3051;
+    public static final int INDEXING_EXTERNAL_FILE_INDEX_ACCESSOR_UNABLE_TO_FIND_FILE_INDEX = 3052;
+    public static final int PARSER_ADM_DATA_PARSER_FIELD_NOT_NULL = 3053;
+    public static final int PARSER_ADM_DATA_PARSER_TYPE_MISMATCH = 3054;
+    public static final int PARSER_ADM_DATA_PARSER_UNEXPECTED_TOKEN_KIND = 3055;
+    public static final int PARSER_ADM_DATA_PARSER_ILLEGAL_ESCAPE = 3056;
+    public static final int PARSER_ADM_DATA_PARSER_RECORD_END_UNEXPECTED = 3057;
+    public static final int PARSER_ADM_DATA_PARSER_EXTRA_FIELD_IN_CLOSED_RECORD = 3058;
+    public static final int PARSER_ADM_DATA_PARSER_UNEXPECTED_TOKEN_WHEN_EXPECT_COMMA = 3059;
+    public static final int PARSER_ADM_DATA_PARSER_FOUND_COMMA_WHEN = 3060;
+    public static final int PARSER_ADM_DATA_PARSER_UNSUPPORTED_INTERVAL_TYPE = 3061;
+    public static final int PARSER_ADM_DATA_PARSER_INTERVAL_NOT_CLOSED = 3062;
+    public static final int PARSER_ADM_DATA_PARSER_INTERVAL_BEGIN_END_POINT_MISMATCH = 3063;
+    public static final int PARSER_ADM_DATA_PARSER_INTERVAL_MISSING_COMMA = 3064;
+    public static final int PARSER_ADM_DATA_PARSER_INTERVAL_INVALID_DATETIME = 3065;
+    public static final int PARSER_ADM_DATA_PARSER_INTERVAL_UNSUPPORTED_TYPE = 3066;
+    public static final int PARSER_ADM_DATA_PARSER_INTERVAL_INTERVAL_ARGUMENT_ERROR = 3067;
+    public static final int PARSER_ADM_DATA_PARSER_LIST_FOUND_END_COLLECTION = 3068;
+    public static final int PARSER_ADM_DATA_PARSER_LIST_FOUND_COMMA_BEFORE_LIST = 3069;
+    public static final int PARSER_ADM_DATA_PARSER_LIST_FOUND_COMMA_EXPECTING_ITEM = 3070;
+    public static final int PARSER_ADM_DATA_PARSER_LIST_FOUND_END_RECOD = 3071;
+    public static final int PARSER_ADM_DATA_PARSER_CAST_ERROR = 3072;
+    public static final int PARSER_ADM_DATA_PARSER_CONSTRUCTOR_MISSING_DESERIALIZER = 3073;
+    public static final int PARSER_ADM_DATA_PARSER_WRONG_INSTANCE = 3074;
+    public static final int PARSER_TWEET_PARSER_CLOSED_FIELD_NULL = 3075;
+    public static final int UTIL_FILE_SYSTEM_WATCHER_NO_FILES_FOUND = 3076;
+    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;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/library/ILibraryManager.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/library/ILibraryManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/library/ILibraryManager.java
index 5dca73e..3aef2c5 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/library/ILibraryManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/library/ILibraryManager.java
@@ -22,6 +22,7 @@ package org.apache.asterix.common.library;
 import java.util.List;
 
 import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface ILibraryManager {
 
@@ -33,7 +34,8 @@ public interface ILibraryManager {
      * @param libraryName
      * @param classLoader
      */
-    public void registerLibraryClassLoader(String dataverseName, String libraryName, ClassLoader classLoader);
+    public void registerLibraryClassLoader(String dataverseName, String libraryName, ClassLoader classLoader)
+            throws HyracksDataException;
 
     /**
      * @return all registered libraries.

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
index 85fa1d1..c072f16 100644
--- a/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
+++ b/asterixdb/asterix-common/src/main/resources/asx_errormsg/en.properties
@@ -33,18 +33,98 @@
 3,1003 = Type incompatibility: function %1$s gets incompatible input values: %2$s and %3$s
 4,1004 = Unsupported type: %1$s cannot process input type %2$s
 5,1005 = Invalid item type: function %1$s cannot process item type %2$s in an input array (or multiset)
-13,1006=Duplicate field name \"%1$s\"
-1009=A returning expression cannot contain dataset access
+13,1006 = Duplicate field name \"%1$s\"
+1009 = A returning expression cannot contain dataset access
 
 # Data errors
 6 = Invalid format for %1$s in %2$s
 7 = Overflow happend in %1$s
-8=Underflow happend in %1$s
-9=Injected failure in %1$s
-10=Invalid value: function %1$s expects its %2$s input parameter to be a non-negative value, but gets %3$s
-11=Index out of bound in %1$s: %2$s
-12=Invalid implicit scalar to collection coercion in %1$s
+8 = Underflow happend in %1$s
+9 = Injected failure in %1$s
+10 = Invalid value: function %1$s expects its %2$s input parameter to be a non-negative value, but gets %3$s
+11 = Index out of bound in %1$s: %2$s
+12 = Invalid implicit scalar to collection coercion in %1$s
 
 # Compile-time check errors
-1007=Invalid expression: function %1$s expects its %2$s input parameter to be a %3$s expression, but the actual expression is %4$s
-1008=Invalid parameter number: function %1$s cannot take %2$s parameters
+1007 = Invalid expression: function %1$s expects its %2$s input parameter to be a %3$s expression, but the actual expression is %4$s
+1008 = Invalid parameter number: function %1$s cannot take %2$s parameters
+
+# Feed Errors
+3001 = Illegal state.
+3002 = Tuple is too large for a frame
+3003 = Unknown tuple forward policy
+3004 = Unable to create adapter as class loader not configured for library %1$s in dataverse %2$s
+3005 = At record: %1$s - Field %2$s is not privatean optional type so it cannot accept null value.
+3006 = Illegal field %1$s in closed type %2$s
+3007 = Failure in active job.
+3008 = Unable to ingest data
+3009 = Invalid subscribable runtime type %1$s
+3010 = Doesn't support Hive data with list of non-primitive types
+3011 = Can't get hive type for field of type %1$s
+3012 = Failed to get columns of record
+3013 = Can't deserialize Hive records with no closed columns
+3014 = Non-optional UNION type is not supported.
+3015 = Failed to get the type information for field %1$s.
+3016 = can't parse null field
+3017 = can't parse hive list with null values
+3018 = Field %1$s of meta record is not an optional type so it cannot accept null value.
+3019 = Can't get PK from record part
+3020 = Feed joint %1$s already registered
+3021 = Could not register feed intake job [%1$s] for feed  %2$s
+3022 = Unknown data source type: %1$s
+3023 = Unknown input stream factory: %1$s
+3024 = Failed to create stream factory
+3025 = Unknown record reader factory: %1$s
+3026 = Unknown format: %1$s
+3027 = Unknown record format for a record with meta parser. Did you specify the parameter %1$s
+3028 = Field already defined in %1$s part
+3029 = Unknown field: %1$s
+3030 = Address passed: '%1$s' couldn't be resolved to an ip address and is not an NC id. Existing NCs are %2$s
+3031 = No node controllers found at the address: %1$s
+3032 = Unable to resolve hostname '%1$s' to an IP address
+3033 = Unknown DCP request: %1$s
+3034 = Attempt to register to a failed feed data provider
+3035 = Feed already has an intake job
+3036 = Feed job already registered in intake jobs
+3037 = Feed job already registered in all jobs
+3038 = Record is too large!. Maximum record size is %1$s
+3039 = Cannot parse list item of type %1$s
+3040 = Argument type: %1$s
+3041 = Unable to load/instantiate class %1$s
+3042 = UDF of kind %1$s not supported.
+3043 = Unknown function kind %1$s
+3044 = Library class loader already registered!
+3045 = Cannot handle a function argument of type %1$s
+3046 = Object of type %1$s not supported.
+3047 = External %1$s not supported
+3048 = Invalid feed runtime: %1$s
+3049 = '%1$s' is not a valid delimiter. The length of a delimiter should be 1.
+3050 = '%1$s' is not a valid quote. The length of a quote should be 1.
+3051 = Quote '%1$s' cannot be used with the delimiter '%2$s'.
+3052 = Was not able to find a file in the files index
+3053 = Field %1$s can not be null
+3054 = Mismatch Type, expecting a value of type %1$s
+3055 = Unexpected ADM token kind: %1$s.
+3056 = Illegal escape '\%1$s'
+3057 = Found END_RECORD while expecting a record field.
+3058 = This record is closed, you can not add extra fields! new field name: %1$s
+3059 = Unexpected ADM token kind: %1$s while expecting ":".
+3060 = Found COMMA %1$s %2$s record field.
+3061 = Unsupported interval type: %1$s.
+3062 = Interval was not closed.
+3063 = The interval start and end point types do not match: %1$s != %2$s
+3064 = Missing COMMA before interval end point.
+3065 = This can not be an instance of interval: missing T for a datetime value.
+3066 = Unsupported interval type: %1$s.
+3067 = Interval argument not properly constructed.
+3068 = Found END_COLLECTION while expecting a list item.
+3069 = Found COMMA before any list item.
+3070 = Found COMMA while expecting a list item.
+3071 = Found END_RECORD while expecting a list item.
+3072 = Can't cast the %1$s type to the %2$s type.
+3073 = Missing deserializer method for constructor: %1$s.
+3074 = This can not be an instance of %1$s
+3075 = Closed field %1$s has null value.
+3076 = %1$s: no files found
+3077 = %1$s: path not found
+3078 = Cannot obtain hdfs scheduler

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IFunctionHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IFunctionHelper.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IFunctionHelper.java
index b8be685..9e57342 100755
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IFunctionHelper.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IFunctionHelper.java
@@ -31,7 +31,7 @@ public interface IFunctionHelper {
 
     public boolean isValidResult();
 
-    public IJObject getObject(JTypeTag jtypeTag);
+    public IJObject getObject(JTypeTag jtypeTag) throws HyracksDataException;
 
     public void reset();
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/ILookupRecordReader.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/ILookupRecordReader.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/ILookupRecordReader.java
index fd03a07..2588f41 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/ILookupRecordReader.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/ILookupRecordReader.java
@@ -29,7 +29,7 @@ public interface ILookupRecordReader<T> {
 
     public Class<?> getRecordClass() throws IOException;
 
-    public IRawRecord<T> read(RecordId rid) throws IOException, Exception;
+    public IRawRecord<T> read(RecordId rid) throws Exception;
 
     public void open() throws IOException;
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordDataParser.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordDataParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordDataParser.java
index bc97ed0..72adc13 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordDataParser.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordDataParser.java
@@ -18,6 +18,8 @@
  */
 package org.apache.asterix.external.api;
 
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
 import java.io.DataOutput;
 import java.io.IOException;
 
@@ -28,5 +30,5 @@ public interface IRecordDataParser<T> extends IDataParser {
      * @param out
      * @throws Exception
      */
-    public void parse(IRawRecord<? extends T> record, DataOutput out) throws IOException;
+    public void parse(IRawRecord<? extends T> record, DataOutput out) throws HyracksDataException;
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithMetadataParser.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithMetadataParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithMetadataParser.java
index 88120ed..751541d 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithMetadataParser.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithMetadataParser.java
@@ -19,12 +19,12 @@
 package org.apache.asterix.external.api;
 
 import java.io.DataOutput;
-import java.io.IOException;
 
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 
 public interface IRecordWithMetadataParser<T> extends IRecordDataParser<T> {
-    public void parseMeta(DataOutput out) throws IOException;
+    public void parseMeta(DataOutput out) throws HyracksDataException;
 
-    void appendLastParsedPrimaryKeyToTuple(ArrayTupleBuilder tb) throws IOException;
+    void appendLastParsedPrimaryKeyToTuple(ArrayTupleBuilder tb) throws HyracksDataException;
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithPKDataParser.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithPKDataParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithPKDataParser.java
index e6c114d..f5b5781 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithPKDataParser.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithPKDataParser.java
@@ -18,11 +18,10 @@
  */
 package org.apache.asterix.external.api;
 
-import java.io.IOException;
-
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 
 public interface IRecordWithPKDataParser<T> extends IRecordDataParser<T> {
 
-    public void appendKeys(ArrayTupleBuilder tb, IRawRecord<? extends T> record) throws IOException;
+    public void appendKeys(ArrayTupleBuilder tb, IRawRecord<? extends T> record) throws HyracksDataException;
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IStreamDataParser.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IStreamDataParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IStreamDataParser.java
index ca274e8..aa875e1 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IStreamDataParser.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IStreamDataParser.java
@@ -18,6 +18,8 @@
  */
 package org.apache.asterix.external.api;
 
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
 import java.io.DataOutput;
 import java.io.IOException;
 import java.io.InputStream;
@@ -38,7 +40,7 @@ public interface IStreamDataParser extends IDataParser {
      *            DataOutput instance that for writing the parser output.
      * @throws IOException
      */
-    public boolean parse(DataOutput out) throws IOException;
+    public boolean parse(DataOutput out) throws HyracksDataException;
 
     /**
      * reset the parser state. this is called when a failure takes place

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/ChangeFeedDataFlowController.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/ChangeFeedDataFlowController.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/ChangeFeedDataFlowController.java
index 7806489..d85fe65 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/ChangeFeedDataFlowController.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/ChangeFeedDataFlowController.java
@@ -41,7 +41,8 @@ public class ChangeFeedDataFlowController<T> extends FeedRecordDataFlowControlle
     }
 
     @Override
-    protected void addPrimaryKeys(final ArrayTupleBuilder tb, final IRawRecord<? extends T> record) throws IOException {
+    protected void addPrimaryKeys(final ArrayTupleBuilder tb, final IRawRecord<? extends T> record)
+            throws HyracksDataException {
         dataParser.appendKeys(tb, record);
     }
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/ChangeFeedWithMetaDataFlowController.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/ChangeFeedWithMetaDataFlowController.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/ChangeFeedWithMetaDataFlowController.java
index 7d65c52..4c88b0f 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/ChangeFeedWithMetaDataFlowController.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/ChangeFeedWithMetaDataFlowController.java
@@ -38,7 +38,8 @@ public class ChangeFeedWithMetaDataFlowController<T> extends FeedWithMetaDataFlo
     }
 
     @Override
-    protected void addPrimaryKeys(final ArrayTupleBuilder tb, final IRawRecord<? extends T> record) throws IOException {
+    protected void addPrimaryKeys(final ArrayTupleBuilder tb, final IRawRecord<? extends T> record)
+            throws HyracksDataException {
         ((IRecordWithMetadataParser<T>) dataParser).appendLastParsedPrimaryKeyToTuple(tb);
     }
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/CounterTimerTupleForwarder.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/CounterTimerTupleForwarder.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/CounterTimerTupleForwarder.java
index db95a6a..b5adb32 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/CounterTimerTupleForwarder.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/CounterTimerTupleForwarder.java
@@ -24,6 +24,8 @@ import java.util.TimerTask;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.api.ITupleForwarder;
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameWriter;
@@ -110,7 +112,7 @@ public class CounterTimerTupleForwarder implements ITupleForwarder {
             tuplesInFrame = 0;
             appender.reset(frame, true);
             if (!appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize())) {
-                throw new IllegalStateException();
+                throw new RuntimeDataException(ErrorCode.DATAFLOW_ILLEGAL_STATE);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedWithMetaDataFlowController.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedWithMetaDataFlowController.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedWithMetaDataFlowController.java
index 790289a..45ae52b 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedWithMetaDataFlowController.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedWithMetaDataFlowController.java
@@ -18,8 +18,6 @@
  */
 package org.apache.asterix.external.dataflow;
 
-import java.io.IOException;
-
 import org.apache.asterix.external.api.IRawRecord;
 import org.apache.asterix.external.api.IRecordReader;
 import org.apache.asterix.external.api.IRecordWithMetadataParser;
@@ -37,7 +35,7 @@ public class FeedWithMetaDataFlowController<T> extends FeedRecordDataFlowControl
     }
 
     @Override
-    protected void addMetaPart(ArrayTupleBuilder tb, IRawRecord<? extends T> record) throws IOException {
+    protected void addMetaPart(ArrayTupleBuilder tb, IRawRecord<? extends T> record) throws HyracksDataException {
         ((IRecordWithMetadataParser<T>) dataParser).parseMeta(tb.getDataOutput());
         tb.addFieldEndOffset();
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FrameFullTupleForwarder.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FrameFullTupleForwarder.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FrameFullTupleForwarder.java
index be737ae..18927cd 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FrameFullTupleForwarder.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FrameFullTupleForwarder.java
@@ -18,7 +18,9 @@
  */
 package org.apache.asterix.external.dataflow;
 
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.api.ITupleForwarder;
+import org.apache.asterix.common.exceptions.ErrorCode;
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.comm.VSizeFrame;
@@ -50,7 +52,7 @@ public class FrameFullTupleForwarder implements ITupleForwarder {
             appender.reset(frame, true);
             success = appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
             if (!success) {
-                throw new IllegalStateException();
+                throw new RuntimeDataException(ErrorCode.DATAFLOW_ILLEGAL_STATE);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/RateControlledTupleForwarder.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/RateControlledTupleForwarder.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/RateControlledTupleForwarder.java
index cb80e45..eb5527f 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/RateControlledTupleForwarder.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/RateControlledTupleForwarder.java
@@ -20,6 +20,8 @@ package org.apache.asterix.external.dataflow;
 
 import java.util.Map;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.api.ITupleForwarder;
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameWriter;
@@ -69,7 +71,7 @@ public class RateControlledTupleForwarder implements ITupleForwarder {
             try {
                 Thread.sleep(interTupleInterval);
             } catch (InterruptedException e) {
-                e.printStackTrace();
+                throw new HyracksDataException(e);
             }
         }
         boolean success = appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
@@ -78,7 +80,7 @@ public class RateControlledTupleForwarder implements ITupleForwarder {
             appender.reset(frame, true);
             success = appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
             if (!success) {
-                throw new IllegalStateException();
+                throw new RuntimeDataException(ErrorCode.DATAFLOW_ILLEGAL_STATE);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/api/IActiveLifecycleEventSubscriber.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/api/IActiveLifecycleEventSubscriber.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/api/IActiveLifecycleEventSubscriber.java
index be9a245..1d8c433 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/api/IActiveLifecycleEventSubscriber.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/api/IActiveLifecycleEventSubscriber.java
@@ -18,7 +18,7 @@
  */
 package org.apache.asterix.external.feed.api;
 
-import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface IActiveLifecycleEventSubscriber {
 
@@ -34,7 +34,7 @@ public interface IActiveLifecycleEventSubscriber {
         ACTIVE_JOB_FAILED
     }
 
-    public void assertEvent(ActiveLifecycleEvent event) throws AsterixException, InterruptedException;
+    public void assertEvent(ActiveLifecycleEvent event) throws HyracksDataException, InterruptedException;
 
     public void handleEvent(ActiveLifecycleEvent event);
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FeedExceptionHandler.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FeedExceptionHandler.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FeedExceptionHandler.java
index 64cca8c..a8c6056 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FeedExceptionHandler.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FeedExceptionHandler.java
@@ -22,7 +22,6 @@ import java.nio.ByteBuffer;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.common.exceptions.IExceptionHandler;
 import org.apache.asterix.external.util.FeedFrameUtil;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -73,7 +72,7 @@ public class FeedExceptionHandler implements IExceptionHandler {
     }
 
     // TODO: Fix logging of exceptions
-    private void logExceptionCausingTuple(int tupleIndex, Throwable e) throws HyracksDataException, AsterixException {
+    private void logExceptionCausingTuple(int tupleIndex, Throwable e) throws HyracksDataException {
         LOGGER.log(Level.WARNING, e.getMessage(), e);
     }
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FrameDistributor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FrameDistributor.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FrameDistributor.java
index c8b7406..6ca4b77 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FrameDistributor.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FrameDistributor.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.feed.dataflow.FeedFrameCollector.State;
 import org.apache.asterix.external.feed.management.FeedConnectionId;
 import org.apache.hyracks.api.comm.IFrameWriter;
@@ -43,7 +45,8 @@ public class FrameDistributor implements IFrameWriter {
 
     public synchronized void registerFrameCollector(FeedFrameCollector frameCollector) throws HyracksDataException {
         if (rootFailureCause != null) {
-            throw new HyracksDataException("attempt to register to a failed feed data provider", rootFailureCause);
+            throw new RuntimeDataException(ErrorCode.FEED_DATAFLOW_FRAME_DISTR_REGISTER_FAILED_DATA_PROVIDER,
+                    rootFailureCause);
         }
         // registering a new collector.
         try {
@@ -72,7 +75,8 @@ public class FrameDistributor implements IFrameWriter {
 
     public synchronized void deregisterFrameCollector(FeedConnectionId connectionId) throws HyracksDataException {
         if (rootFailureCause != null) {
-            throw new HyracksDataException("attempt to register to a failed feed data provider", rootFailureCause);
+            throw new RuntimeDataException(ErrorCode.FEED_DATAFLOW_FRAME_DISTR_REGISTER_FAILED_DATA_PROVIDER,
+                    rootFailureCause);
         }
         FeedFrameCollector frameCollector = removeFrameCollector(connectionId);
         try {

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/management/ActiveLifecycleEventSubscriber.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/management/ActiveLifecycleEventSubscriber.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/management/ActiveLifecycleEventSubscriber.java
index 7f8efc5..d0eebde 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/management/ActiveLifecycleEventSubscriber.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/management/ActiveLifecycleEventSubscriber.java
@@ -21,8 +21,10 @@ package org.apache.asterix.external.feed.management;
 import java.util.Iterator;
 import java.util.concurrent.LinkedBlockingQueue;
 
-import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.feed.api.IActiveLifecycleEventSubscriber;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class ActiveLifecycleEventSubscriber implements IActiveLifecycleEventSubscriber {
 
@@ -38,7 +40,7 @@ public class ActiveLifecycleEventSubscriber implements IActiveLifecycleEventSubs
     }
 
     @Override
-    public void assertEvent(ActiveLifecycleEvent event) throws AsterixException, InterruptedException {
+    public void assertEvent(ActiveLifecycleEvent event) throws HyracksDataException, InterruptedException {
         boolean eventOccurred = false;
         ActiveLifecycleEvent e;
         Iterator<ActiveLifecycleEvent> eventsSoFar = inbox.iterator();
@@ -57,11 +59,11 @@ public class ActiveLifecycleEventSubscriber implements IActiveLifecycleEventSubs
         }
     }
 
-    private void assertNoFailure(ActiveLifecycleEvent e) throws AsterixException {
+    private void assertNoFailure(ActiveLifecycleEvent e) throws HyracksDataException {
         if (e.equals(ActiveLifecycleEvent.FEED_INTAKE_FAILURE) || e.equals(ActiveLifecycleEvent.FEED_COLLECT_FAILURE)
                 || e.equals(ActiveLifecycleEvent.ACTIVE_JOB_FAILED)) {
-            throw new AsterixException("Failure in active job.");
+            throw new RuntimeDataException(
+                    ErrorCode.FEED_MANAGEMENT_ACTIVE_LIFE_CYCLE_EVENT_SUBSCRIBER_ACTIVE_JOB_FAILURE);
         }
     }
-
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/management/FeedEventsListener.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/management/FeedEventsListener.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/management/FeedEventsListener.java
index da26e85..64f0b8d 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/management/FeedEventsListener.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/management/FeedEventsListener.java
@@ -31,6 +31,8 @@ import org.apache.asterix.active.ActivityState;
 import org.apache.asterix.active.EntityId;
 import org.apache.asterix.active.IActiveEntityEventsListener;
 import org.apache.asterix.common.exceptions.ACIDException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.feed.api.FeedOperationCounter;
 import org.apache.asterix.external.feed.api.IFeedJoint;
 import org.apache.asterix.external.feed.api.IFeedJoint.State;
@@ -165,9 +167,9 @@ public class FeedEventsListener implements IActiveEntityEventsListener {
         }
     }
 
-    public synchronized void registerFeedJoint(IFeedJoint feedJoint, int numOfPrividers) {
-        Pair<FeedOperationCounter, List<IFeedJoint>> feedJointsOnPipeline =
-                feedPipeline.get(feedJoint.getOwnerFeedId());
+    public synchronized void registerFeedJoint(IFeedJoint feedJoint, int numOfPrividers) throws HyracksDataException {
+        Pair<FeedOperationCounter, List<IFeedJoint>> feedJointsOnPipeline = feedPipeline
+                .get(feedJoint.getOwnerFeedId());
         if (feedJointsOnPipeline == null) {
             feedJointsOnPipeline = new Pair<>(new FeedOperationCounter(numOfPrividers), new ArrayList<IFeedJoint>());
             feedPipeline.put(feedJoint.getOwnerFeedId(), feedJointsOnPipeline);
@@ -176,7 +178,8 @@ public class FeedEventsListener implements IActiveEntityEventsListener {
             if (!feedJointsOnPipeline.second.contains(feedJoint)) {
                 feedJointsOnPipeline.second.add(feedJoint);
             } else {
-                throw new IllegalArgumentException("Feed joint " + feedJoint + " already registered");
+                throw new RuntimeDataException(
+                        ErrorCode.FEED_MANAGEMENT_FEED_EVENT_LISTENER_FEED_JOINT_REGISTERED, feedJoint);
             }
         }
     }
@@ -228,13 +231,14 @@ public class FeedEventsListener implements IActiveEntityEventsListener {
     public synchronized void registerFeedIntakeJob(EntityId feedId, JobId jobId, JobSpecification jobSpec)
             throws HyracksDataException {
         if (entity2Intake.get(feedId) != null) {
-            throw new IllegalStateException("Feed already has an intake job");
+            throw new RuntimeDataException(
+                    ErrorCode.FEED_MANAGEMENT_FEED_EVENTS_LISTENER_ALREADY_HAVE_INTAKE_JOB);
         }
         if (intakeJobs.get(jobId.getId()) != null) {
-            throw new IllegalStateException("Feed job already registered in intake jobs");
+            throw new RuntimeDataException(ErrorCode.FEED_MANAGEMENT_FEED_EVENTS_LISTENER_INTAKE_JOB_REGISTERED);
         }
         if (jobs.get(jobId.getId()) != null) {
-            throw new IllegalStateException("Feed job already registered in all jobs");
+            throw new RuntimeDataException(ErrorCode.FEED_MANAGEMENT_FEED_EVENTS_LISTENER_FEED_JOB_REGISTERED);
         }
 
         Pair<FeedOperationCounter, List<IFeedJoint>> pair = feedPipeline.get(feedId);
@@ -258,18 +262,18 @@ public class FeedEventsListener implements IActiveEntityEventsListener {
                 LOGGER.info("Registered feed intake [" + jobId + "]" + " for feed " + feedId);
             }
         } else {
-            throw new HyracksDataException(
-                    "Could not register feed intake job [" + jobId + "]" + " for feed  " + feedId);
+            throw new RuntimeDataException(ErrorCode.FEED_MANAGEMENT_FEED_EVENT_REGISTER_INTAKE_JOB_FAIL, jobId,
+                    feedId);
         }
     }
 
     public synchronized void registerFeedCollectionJob(EntityId sourceFeedId, FeedConnectionId connectionId,
-            JobId jobId, JobSpecification jobSpec, Map<String, String> feedPolicy) {
+            JobId jobId, JobSpecification jobSpec, Map<String, String> feedPolicy) throws HyracksDataException {
         if (jobs.get(jobId.getId()) != null) {
-            throw new IllegalStateException("Feed job already registered");
+            throw new RuntimeDataException(ErrorCode.FEED_MANAGEMENT_FEED_EVENTS_LISTENER_FEED_JOB_REGISTERED);
         }
         if (connectJobInfos.containsKey(jobId.getId())) {
-            throw new IllegalStateException("Feed job already registered");
+            throw new RuntimeDataException(ErrorCode.FEED_MANAGEMENT_FEED_EVENTS_LISTENER_FEED_JOB_REGISTERED);
         }
 
         List<IFeedJoint> feedJoints = feedPipeline.get(sourceFeedId).second;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/policy/FeedPolicyEnforcer.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/policy/FeedPolicyEnforcer.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/policy/FeedPolicyEnforcer.java
index e0944ad..3483da4 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/policy/FeedPolicyEnforcer.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/policy/FeedPolicyEnforcer.java
@@ -18,11 +18,10 @@
  */
 package org.apache.asterix.external.feed.policy;
 
-import java.rmi.RemoteException;
 import java.util.Map;
 
-import org.apache.asterix.common.exceptions.ACIDException;
 import org.apache.asterix.external.feed.management.FeedConnectionId;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class FeedPolicyEnforcer {
 
@@ -34,7 +33,7 @@ public class FeedPolicyEnforcer {
         this.policyAccessor = new FeedPolicyAccessor(feedPolicy);
     }
 
-    public boolean continueIngestionPostSoftwareFailure(Exception e) throws RemoteException, ACIDException {
+    public boolean continueIngestionPostSoftwareFailure(HyracksDataException e) throws HyracksDataException {
         return policyAccessor.continueOnSoftFailure();
     }
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/ExternalFileIndexAccessor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/ExternalFileIndexAccessor.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/ExternalFileIndexAccessor.java
index 71de1b1..d01d1a8 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/ExternalFileIndexAccessor.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/ExternalFileIndexAccessor.java
@@ -24,6 +24,8 @@ import java.io.DataInputStream;
 import java.io.Serializable;
 import java.util.Date;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.operators.ExternalLookupOperatorDescriptor;
 import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
 import org.apache.asterix.om.base.ADateTime;
@@ -120,7 +122,8 @@ public class ExternalFileIndexAccessor implements Serializable {
             setFile(externalFileRecord, file);
         } else {
             // This should never happen
-            throw new HyracksDataException("Was not able to find a file in the files index");
+            throw new RuntimeDataException(
+                    ErrorCode.INDEXING_EXTERNAL_FILE_INDEX_ACCESSOR_UNABLE_TO_FIND_FILE_INDEX);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/FileIndexTupleTranslator.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/FileIndexTupleTranslator.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/FileIndexTupleTranslator.java
index 18e5a79..970b02a 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/FileIndexTupleTranslator.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/indexing/FileIndexTupleTranslator.java
@@ -18,10 +18,7 @@
  */
 package org.apache.asterix.external.indexing;
 
-import java.io.IOException;
-
 import org.apache.asterix.builders.RecordBuilder;
-import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
 import org.apache.asterix.om.base.AMutableDateTime;
 import org.apache.asterix.om.base.AMutableInt32;
@@ -30,6 +27,7 @@ import org.apache.asterix.om.base.AMutableString;
 import org.apache.asterix.om.base.IAObject;
 import org.apache.asterix.om.types.BuiltinType;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
@@ -54,7 +52,7 @@ public class FileIndexTupleTranslator {
             .getSerializerDeserializer(BuiltinType.AINT64);
     private ArrayTupleReference tuple = new ArrayTupleReference();
 
-    public ITupleReference getTupleFromFile(ExternalFile file) throws IOException, AsterixException {
+    public ITupleReference getTupleFromFile(ExternalFile file) throws HyracksDataException {
         tupleBuilder.reset();
         //File Number
         aInt32.setValue(file.getFileNumber());

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/HDFSDataSourceFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/HDFSDataSourceFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/HDFSDataSourceFactory.java
index 529977a..2b899d9 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/HDFSDataSourceFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/HDFSDataSourceFactory.java
@@ -158,7 +158,7 @@ public class HDFSDataSourceFactory implements IRecordReaderFactory<Object>, IInd
      * This method initialize the scheduler which assigns responsibility of reading different logical input splits from
      * HDFS
      */
-    private static void init() {
+    private static void init() throws HyracksDataException {
         if (!initialized) {
             synchronized (initLock) {
                 if (!initialized) {

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/CharArrayRecord.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/CharArrayRecord.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/CharArrayRecord.java
index 33f9673..ff0cf84 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/CharArrayRecord.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/CharArrayRecord.java
@@ -22,6 +22,8 @@ import java.io.IOException;
 import java.nio.CharBuffer;
 import java.util.Arrays;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.api.IRawRecord;
 import org.apache.asterix.external.util.ExternalDataConstants;
 
@@ -66,8 +68,8 @@ public class CharArrayRecord implements IRawRecord<char[]> {
     private void ensureCapacity(int len) throws IOException {
         if (value.length < len) {
             if (len > ExternalDataConstants.MAX_RECORD_SIZE) {
-                throw new IOException(
-                        "Record is too large!. Maximum record size is " + ExternalDataConstants.MAX_RECORD_SIZE);
+                throw new RuntimeDataException(ErrorCode.INPUT_RECORD_READER_CHAR_ARRAY_RECORD_TOO_LARGE,
+                        ExternalDataConstants.MAX_RECORD_SIZE);
             }
             int newSize = Math.min((int) (len * ExternalDataConstants.DEFAULT_BUFFER_INCREMENT_FACTOR),
                     ExternalDataConstants.MAX_RECORD_SIZE);

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/RecordWithMetadataAndPK.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/RecordWithMetadataAndPK.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/RecordWithMetadataAndPK.java
index bc5de80..c2f74e4 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/RecordWithMetadataAndPK.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/RecordWithMetadataAndPK.java
@@ -21,6 +21,8 @@ package org.apache.asterix.external.input.record;
 import java.io.DataOutput;
 import java.io.IOException;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.api.IDataParser;
 import org.apache.asterix.external.api.IRawRecord;
 import org.apache.asterix.external.util.ExternalDataUtils;
@@ -143,8 +145,8 @@ public class RecordWithMetadataAndPK<T> extends RecordWithPK<T> {
             throws IOException {
         if (length == 0) {
             if (!NonTaggedFormatUtil.isOptional(metaTypes[index])) {
-                throw new HyracksDataException(
-                        "Field " + index + " of meta record is not an optional type so it cannot accept null value. ");
+                throw new RuntimeDataException(
+                        ErrorCode.INPUT_RECORD_RECORD_WITH_METADATA_AND_PK_NULL_IN_NON_OPTIONAL, index);
             }
             fieldValueBufferOutputs[index].writeByte(ATypeTag.SERIALIZED_NULL_TYPE_TAG);
         } else {
@@ -154,12 +156,12 @@ public class RecordWithMetadataAndPK<T> extends RecordWithPK<T> {
     }
 
     @Override
-    public void appendPrimaryKeyToTuple(final ArrayTupleBuilder tb) throws IOException {
+    public void appendPrimaryKeyToTuple(final ArrayTupleBuilder tb) throws HyracksDataException {
         for (int i = 0; i < pkIndexes.length; i++) {
             if (keyIndicator[i] == 1) {
                 tb.addField(getMetadata(pkIndexes[i]));
             } else {
-                throw new HyracksDataException("Can't get PK from record part");
+                throw new RuntimeDataException(ErrorCode.INPUT_RECORD_RECORD_WITH_METADATA_AND_PK_CANNT_GET_PKEY);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/RecordWithPK.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/RecordWithPK.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/RecordWithPK.java
index 02ab028..df69aa6 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/RecordWithPK.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/RecordWithPK.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 
 import org.apache.asterix.external.api.IRawRecord;
 import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 
@@ -86,7 +87,7 @@ public class RecordWithPK<T> implements IRawRecord<T> {
         record.set(t);
     }
 
-    public void appendPrimaryKeyToTuple(final ArrayTupleBuilder tb) throws IOException {
+    public void appendPrimaryKeyToTuple(final ArrayTupleBuilder tb) throws HyracksDataException {
         for (final ArrayBackedValueStorage pkStorage : pkFieldValueBuffers) {
             tb.addField(pkStorage);
         }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/DCPMessageToRecordConverter.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/DCPMessageToRecordConverter.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/DCPMessageToRecordConverter.java
index 01466fd..38e5fa3 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/DCPMessageToRecordConverter.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/DCPMessageToRecordConverter.java
@@ -24,6 +24,8 @@ import java.nio.CharBuffer;
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.StandardCharsets;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.api.IRawRecord;
 import org.apache.asterix.external.input.record.CharArrayRecord;
 import org.apache.asterix.external.input.record.RecordWithMetadataAndPK;
@@ -31,7 +33,6 @@ import org.apache.asterix.external.util.ExternalDataConstants;
 import org.apache.asterix.om.types.ARecordType;
 import org.apache.asterix.om.types.BuiltinType;
 import org.apache.asterix.om.types.IAType;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 import com.couchbase.client.core.message.dcp.DCPRequest;
 import com.couchbase.client.core.message.dcp.MutationMessage;
@@ -93,7 +94,9 @@ public class DCPMessageToRecordConverter implements IRecordToRecordWithMetadataA
             recordWithMetadata.reset();
             recordWithMetadata.setMetadata(0, key);
         } else {
-            throw new HyracksDataException("Unknown DCP request: " + dcpRequest);
+            throw new RuntimeDataException(
+                    ErrorCode.INPUT_RECORD_CONVERTER_DCP_MSG_TO_RECORD_CONVERTER_UNKNOWN_DCP_REQUEST,
+                    dcpRequest.toString());
         }
         return recordWithMetadata;
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/SocketClientInputStream.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/SocketClientInputStream.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/SocketClientInputStream.java
index 4321bcd..b49c11b 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/SocketClientInputStream.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/SocketClientInputStream.java
@@ -31,7 +31,7 @@ public class SocketClientInputStream extends AsterixInputStream {
     private final Socket socket;
     private InputStream in;
 
-    public SocketClientInputStream(Pair<String, Integer> address) throws UnknownHostException, IOException {
+    public SocketClientInputStream(Pair<String, Integer> address) throws IOException {
         this.socket = new Socket(address.first, address.second);
         this.in = socket.getInputStream();
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunction.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunction.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunction.java
index baaa731..1b89b0c 100755
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunction.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunction.java
@@ -21,7 +21,8 @@ package org.apache.asterix.external.library;
 import java.io.IOException;
 
 import org.apache.asterix.common.api.IAppRuntimeContext;
-import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.common.library.ILibraryManager;
 import org.apache.asterix.external.api.IExternalFunction;
 import org.apache.asterix.external.api.IFunctionFactory;
@@ -86,7 +87,8 @@ public abstract class ExternalFunction implements IExternalFunction {
             externalFunctionFactory = (IFunctionFactory) clazz.newInstance();
             externalFunction = externalFunctionFactory.getExternalFunction();
         } catch (Exception e) {
-            throw new HyracksDataException(" Unable to load/instantiate class " + classname, e);
+            throw new RuntimeDataException(ErrorCode.LIBRARY_EXTERNAL_FUNCTION_UNABLE_TO_LOAD_CLASS, e,
+                    classname);
         }
     }
 
@@ -98,7 +100,7 @@ public abstract class ExternalFunction implements IExternalFunction {
         return finfo;
     }
 
-    public void setArguments(IFrameTupleReference tuple) throws AlgebricksException, IOException, AsterixException {
+    public void setArguments(IFrameTupleReference tuple) throws AlgebricksException, IOException {
         for (int i = 0; i < evaluatorFactories.length; i++) {
             argumentEvaluators[i].evaluate(tuple, inputVal);
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
index b344598..0e80e4b 100755
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalFunctionProvider.java
@@ -18,6 +18,8 @@
  */
 package org.apache.asterix.external.library;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.api.IExternalFunction;
 import org.apache.asterix.external.api.IExternalScalarFunction;
 import org.apache.asterix.external.api.IFunctionHelper;
@@ -39,9 +41,10 @@ public class ExternalFunctionProvider {
                 return new ExternalScalarFunction(finfo, args, context);
             case AGGREGATE:
             case UNNEST:
-                throw new IllegalArgumentException(" UDF of kind" + finfo.getKind() + " not supported.");
+                throw new RuntimeDataException(ErrorCode.LIBRARY_EXTERNAL_FUNCTION_UNSUPPORTED_KIND,
+                        finfo.getKind());
             default:
-                throw new IllegalArgumentException(" unknown function kind" + finfo.getKind());
+                throw new RuntimeDataException(ErrorCode.LIBRARY_EXTERNAL_FUNCTION_UNKNOWN_KIND, finfo.getKind());
         }
     }
 }
@@ -66,7 +69,6 @@ class ExternalScalarFunction extends ExternalFunction implements IExternalScalar
             result.set(resultBuffer.getByteArray(), resultBuffer.getStartOffset(), resultBuffer.getLength());
             functionHelper.reset();
         } catch (Exception e) {
-            e.printStackTrace();
             throw new HyracksDataException(e);
         }
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
index 3373f70..968dbf6 100755
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
@@ -24,6 +24,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.common.library.ILibraryManager;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 
@@ -32,11 +34,12 @@ public class ExternalLibraryManager implements ILibraryManager {
     private final Map<String, ClassLoader> libraryClassLoaders = new HashMap<>();
 
     @Override
-    public void registerLibraryClassLoader(String dataverseName, String libraryName, ClassLoader classLoader) {
+    public void registerLibraryClassLoader(String dataverseName, String libraryName, ClassLoader classLoader)
+            throws RuntimeDataException {
         String key = getKey(dataverseName, libraryName);
         synchronized (libraryClassLoaders) {
             if (libraryClassLoaders.get(key) != null) {
-                throw new IllegalStateException("Library class loader already registered!");
+                throw new RuntimeDataException(ErrorCode.LIBRARY_EXTERNAL_LIBRARY_CLASS_REGISTERED);
             }
             libraryClassLoaders.put(key, classLoader);
         }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/024fafe2/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
index 912192d..c1b22dc 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
@@ -23,6 +23,8 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.common.exceptions.ErrorCode;
+import org.apache.asterix.common.exceptions.RuntimeDataException;
 import org.apache.asterix.external.api.IFunctionHelper;
 import org.apache.asterix.external.api.IJObject;
 import org.apache.asterix.external.library.java.JObjectPointableVisitor;
@@ -38,8 +40,6 @@ import org.apache.asterix.om.types.BuiltinType;
 import org.apache.asterix.om.types.IAType;
 import org.apache.asterix.om.util.container.IObjectPool;
 import org.apache.asterix.om.util.container.ListObjectPool;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.common.exceptions.NotImplementedException;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IDataOutputProvider;
 import org.apache.hyracks.data.std.api.IValueReference;
@@ -119,7 +119,8 @@ public class JavaFunctionHelper implements IFunctionHelper {
                 jObject = pointableVisitor.visit((AListVisitablePointable) pointable, getTypeInfo(index, type));
                 break;
             case ANY:
-                throw new IllegalStateException("Cannot handle a function argument of type " + type.getTypeTag());
+                throw new RuntimeDataException(ErrorCode.LIBRARY_JAVA_FUNCTION_HELPER_CANNOT_HANDLE_ARGU_TYPE,
+                        type.getTypeTag());
             default:
                 pointable = pointableAllocator.allocateFieldValue(type);
                 pointable.set(valueReference);
@@ -147,7 +148,7 @@ public class JavaFunctionHelper implements IFunctionHelper {
     }
 
     @Override
-    public IJObject getObject(JTypeTag jtypeTag) {
+    public IJObject getObject(JTypeTag jtypeTag) throws RuntimeDataException {
         IJObject retValue = null;
         switch (jtypeTag) {
             case INT:
@@ -164,8 +165,10 @@ public class JavaFunctionHelper implements IFunctionHelper {
                 break;
             default:
                 try {
-                    throw new NotImplementedException("Object of type " + jtypeTag.name() + " not supported.");
+                    throw new RuntimeDataException(ErrorCode.LIBRARY_JAVA_FUNCTION_HELPER_OBJ_TYPE_NOT_SUPPORTED,
+                            jtypeTag.name());
                 } catch (IllegalStateException e) {
+                    // Exception is not thrown
                     e.printStackTrace();
                 }
                 break;