ignite-774: rethrow all errors

Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/bc89338f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/bc89338f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/bc89338f

Branch: refs/heads/ignite-646
Commit: bc89338ffcd54d405db82e352f08aa648da37292
Parents: 75425c6
Author: Artem Shutak <ashu...@gridgain.com>
Authored: Thu Apr 23 15:13:16 2015 +0300
Committer: Artem Shutak <ashu...@gridgain.com>
Committed: Thu Apr 23 15:13:16 2015 +0300

----------------------------------------------------------------------
 .../aop/aspectj/GridifyAspectJAspect.java       |  2 +-
 .../aspectj/GridifySetToSetAspectJAspect.java   |  2 +-
 .../aspectj/GridifySetToValueAspectJAspect.java |  2 +-
 .../aop/spring/GridifySetToSetSpringAspect.java |  2 +-
 .../spring/GridifySetToValueSpringAspect.java   |  2 +-
 .../gridify/aop/spring/GridifySpringAspect.java |  2 +-
 .../apache/ignite/cache/CachingProvider.java    |  3 +++
 .../ignite/events/CacheQueryExecutedEvent.java  |  3 ++-
 .../ignite/events/CacheQueryReadEvent.java      |  3 ++-
 .../apache/ignite/internal/IgniteKernal.java    | 15 +++++++++--
 .../org/apache/ignite/internal/IgnitionEx.java  |  6 +++++
 .../deployment/GridDeploymentClassLoader.java   |  2 +-
 .../discovery/GridDiscoveryManager.java         |  3 +++
 .../eventstorage/GridEventStorageManager.java   |  6 +++++
 .../cache/CacheStoreBalancingWrapper.java       |  6 +++++
 .../processors/cache/GridCacheIoManager.java    |  6 +++++
 .../GridDistributedTxRemoteAdapter.java         |  3 +++
 .../cache/distributed/dht/GridDhtTxLocal.java   |  3 +++
 .../GridDhtPartitionsExchangeFuture.java        |  3 +++
 .../near/GridNearTxFinishFuture.java            |  3 +++
 .../query/GridCacheDistributedQueryManager.java |  3 +++
 .../cache/query/GridCacheLocalQueryFuture.java  |  3 +++
 .../query/GridCacheQueryFutureAdapter.java      |  3 +++
 .../cache/query/GridCacheQueryManager.java      |  9 +++++++
 .../jdbc/GridCacheQueryJdbcMetadataTask.java    |  3 +++
 .../cache/transactions/IgniteTxAdapter.java     |  7 +++--
 .../cache/transactions/IgniteTxHandler.java     | 27 ++++++++++++++++++--
 .../transactions/IgniteTxLocalAdapter.java      | 12 +++++++++
 .../closure/GridClosureProcessor.java           | 16 ++++++++++--
 .../processors/igfs/IgfsFileWorkerBatch.java    |  3 +++
 .../internal/processors/igfs/IgfsThread.java    |  8 +++++-
 .../internal/processors/job/GridJobWorker.java  |  9 +++++++
 .../processors/query/GridQueryProcessor.java    |  3 +++
 .../processors/rest/GridRestProcessor.java      |  3 +++
 .../service/GridServiceProcessor.java           |  9 +++++++
 .../processors/task/GridTaskWorker.java         | 12 +++++++++
 .../timeout/GridTimeoutProcessor.java           |  3 +++
 .../ignite/internal/util/IgniteUtils.java       |  2 +-
 .../util/ipc/loopback/IpcServerTcpEndpoint.java |  2 +-
 .../shmem/IpcSharedMemoryServerEndpoint.java    |  2 +-
 .../ignite/internal/util/lang/GridFunc.java     | 12 ++++-----
 .../ignite/internal/util/nio/GridNioServer.java |  6 +++++
 .../apache/ignite/internal/util/typedef/X.java  |  2 +-
 .../ignite/internal/util/worker/GridWorker.java |  3 +++
 .../visor/misc/VisorResolveHostNameTask.java    |  2 +-
 .../visor/node/VisorNodeDataCollectorJob.java   |  9 +++++++
 .../ignite/messaging/MessagingListenActor.java  |  3 +++
 .../org/apache/ignite/spi/IgniteSpiThread.java  |  3 +++
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  3 +++
 .../startup/cmdline/CommandLineStartup.java     |  5 +++-
 .../startup/cmdline/CommandLineTransformer.java |  3 +++
 .../processors/hadoop/HadoopDefaultJobInfo.java |  3 +++
 .../processors/hadoop/igfs/HadoopIgfsIpcIo.java |  3 +++
 .../hadoop/jobtracker/HadoopJobTracker.java     |  5 +++-
 .../hadoop/taskexecutor/HadoopRunnableTask.java |  3 +++
 .../external/HadoopExternalTaskExecutor.java    |  3 +++
 .../processors/hadoop/v2/HadoopV2Job.java       | 11 +++++++-
 .../hadoop/v2/HadoopV2TaskContext.java          |  9 +++++++
 .../query/h2/twostep/GridMapQueryExecutor.java  |  3 +++
 .../http/jetty/GridJettyRestHandler.java        |  3 +++
 .../ignite/schema/ui/SchemaImportApp.java       |  8 +++---
 .../uri/GridUriDeploymentClassLoader.java       |  4 +--
 62 files changed, 284 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifyAspectJAspect.java
----------------------------------------------------------------------
diff --git 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifyAspectJAspect.java
 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifyAspectJAspect.java
index 1cccc1e..f13b64c 100644
--- 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifyAspectJAspect.java
+++ 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifyAspectJAspect.java
@@ -102,7 +102,7 @@ public class GridifyAspectJAspect {
             // If task name was specified.
             return 
ignite.compute().withTimeout(ann.timeout()).execute(ann.taskName(), arg);
         }
-        catch (Throwable e) {
+        catch (Exception e) {
             for (Class<?> ex : ((MethodSignature) 
joinPnt.getSignature()).getMethod().getExceptionTypes()) {
                 // Descend all levels down.
                 Throwable cause = e.getCause();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifySetToSetAspectJAspect.java
----------------------------------------------------------------------
diff --git 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifySetToSetAspectJAspect.java
 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifySetToSetAspectJAspect.java
index 6d5d05f..acd318b 100644
--- 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifySetToSetAspectJAspect.java
+++ 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifySetToSetAspectJAspect.java
@@ -113,7 +113,7 @@ public class GridifySetToSetAspectJAspect extends 
GridifySetToSetAbstractAspect
             return execute(ignite.compute(), 
joinPnt.getSignature().getDeclaringType(), arg, nodeFilter,
                 ann.threshold(), ann.splitSize(), ann.timeout());
         }
-        catch (Throwable e) {
+        catch (Exception e) {
             for (Class<?> ex : ((MethodSignature) 
joinPnt.getSignature()).getMethod().getExceptionTypes()) {
                 // Descend all levels down.
                 Throwable cause = e.getCause();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifySetToValueAspectJAspect.java
----------------------------------------------------------------------
diff --git 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifySetToValueAspectJAspect.java
 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifySetToValueAspectJAspect.java
index 46d4c56..ae39ceb 100644
--- 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifySetToValueAspectJAspect.java
+++ 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/aspectj/GridifySetToValueAspectJAspect.java
@@ -113,7 +113,7 @@ public class GridifySetToValueAspectJAspect extends 
GridifySetToValueAbstractAsp
             return execute(mtd, ignite.compute(), 
joinPnt.getSignature().getDeclaringType(), arg, nodeFilter,
                 ann.threshold(), ann.splitSize(), ann.timeout());
         }
-        catch (Throwable e) {
+        catch (Exception e) {
             for (Class<?> ex : ((MethodSignature) 
joinPnt.getSignature()).getMethod().getExceptionTypes()) {
                 // Descend all levels down.
                 Throwable cause = e.getCause();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySetToSetSpringAspect.java
----------------------------------------------------------------------
diff --git 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySetToSetSpringAspect.java
 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySetToSetSpringAspect.java
index 102b60c..b7499af 100644
--- 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySetToSetSpringAspect.java
+++ 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySetToSetSpringAspect.java
@@ -108,7 +108,7 @@ public class GridifySetToSetSpringAspect extends 
GridifySetToSetAbstractAspect i
             return execute(ignite.compute(), 
invoc.getMethod().getDeclaringClass(), arg, nodeFilter,
                 ann.threshold(), ann.splitSize(), ann.timeout());
         }
-        catch (Throwable e) {
+        catch (Exception e) {
             for (Class<?> ex : invoc.getMethod().getExceptionTypes()) {
                 // Descend all levels down.
                 Throwable cause = e.getCause();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySetToValueSpringAspect.java
----------------------------------------------------------------------
diff --git 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySetToValueSpringAspect.java
 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySetToValueSpringAspect.java
index cf6557c..af4bee6 100644
--- 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySetToValueSpringAspect.java
+++ 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySetToValueSpringAspect.java
@@ -108,7 +108,7 @@ public class GridifySetToValueSpringAspect extends 
GridifySetToValueAbstractAspe
             return execute(mtd, ignite.compute(), 
invoc.getMethod().getDeclaringClass(), arg, nodeFilter,
                 ann.threshold(), ann.splitSize(), ann.timeout());
         }
-        catch (Throwable e) {
+        catch (Exception e) {
             for (Class<?> ex : invoc.getMethod().getExceptionTypes()) {
                 // Descend all levels down.
                 Throwable cause = e.getCause();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySpringAspect.java
----------------------------------------------------------------------
diff --git 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySpringAspect.java
 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySpringAspect.java
index a11e2f1..a7984c5 100644
--- 
a/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySpringAspect.java
+++ 
b/modules/aop/src/main/java/org/apache/ignite/compute/gridify/aop/spring/GridifySpringAspect.java
@@ -96,7 +96,7 @@ public class GridifySpringAspect implements MethodInterceptor 
{
             // If task name was specified.
             return 
ignite.compute().withTimeout(ann.timeout()).execute(ann.taskName(), arg);
         }
-        catch (Throwable e) {
+        catch (Exception e) {
             for (Class<?> ex : invoc.getMethod().getExceptionTypes()) {
                 // Descend all levels down.
                 Throwable cause = e.getCause();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/cache/CachingProvider.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/CachingProvider.java 
b/modules/core/src/main/java/org/apache/ignite/cache/CachingProvider.java
index 9782bbf..47d892f 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/CachingProvider.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/CachingProvider.java
@@ -113,6 +113,9 @@ public class CachingProvider implements 
javax.cache.spi.CachingProvider {
 
                 fut.onDone(e);
 
+                if (e instanceof Error)
+                    throw (Error)e;
+
                 throw CU.convertToCacheException(U.cast(e));
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/events/CacheQueryExecutedEvent.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/events/CacheQueryExecutedEvent.java
 
b/modules/core/src/main/java/org/apache/ignite/events/CacheQueryExecutedEvent.java
index 22892bf..0cc47f1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/events/CacheQueryExecutedEvent.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/events/CacheQueryExecutedEvent.java
@@ -138,7 +138,8 @@ public class CacheQueryExecutedEvent<K, V> extends 
EventAdapter {
     /**
      * Gets query type.
      *
-     * @return Query type. Can be {@code "SQL"}, {@code "TEXT"}, {@code 
"SCAN"} or {@code "SPI"}.
+     * @return Query type. Can be {@code "SQL"}, {@code "SQL_FIELDS"}, {@code 
"FULL_TEXT"}, {@code "SCAN"}, 
+     * {@code "CONTINUOUS"} or {@code "SPI"}.
      */
     public String queryType() {
         return qryType;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/events/CacheQueryReadEvent.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/events/CacheQueryReadEvent.java 
b/modules/core/src/main/java/org/apache/ignite/events/CacheQueryReadEvent.java
index 78acdc1..e1a1f4d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/events/CacheQueryReadEvent.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/events/CacheQueryReadEvent.java
@@ -164,7 +164,8 @@ public class CacheQueryReadEvent<K, V> extends EventAdapter 
{
     /**
      * Gets query type.
      *
-     * @return Query type. Can be {@code "SQL"}, {@code "TEXT"}, {@code 
"SCAN"} or {@code "SPI"}.
+     * @return Query type. Can be {@code "SQL"}, {@code "SQL_FIELDS"}, {@code 
"FULL_TEXT"}, {@code "SCAN"},
+     * {@code "CONTINUOUS"} or {@code "SPI"}.
      */
     public String queryType() {
         return qryType;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 7694835..d9d0e3d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -512,6 +512,9 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
         catch (Throwable e) {
             U.error(log, "Failed to notify lifecycle bean (safely ignored) 
[evt=" + evt +
                 ", gridName=" + gridName + ']', e);
+
+            if (e instanceof Error)
+                throw (Error)e;
         }
     }
 
@@ -822,7 +825,9 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
 
             stop(true);
 
-            if (e instanceof IgniteCheckedException)
+            if (e instanceof Error)
+                throw e;
+            else if (e instanceof IgniteCheckedException)
                 throw (IgniteCheckedException)e;
             else
                 throw new IgniteCheckedException(e);
@@ -1624,7 +1629,7 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
 
                 return "Scala ver. " + props.getProperty("version.number", 
"<unknown>");
             }
-            catch (Throwable ignore) {
+            catch (Exception ignore) {
                 return "Scala ver. <unknown>";
             }
         }
@@ -1703,6 +1708,9 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
                     errOnStop = true;
 
                     U.error(log, "Failed to pre-stop processor: " + comp, e);
+
+                    if (e instanceof Error)
+                        throw e;
                 }
             }
 
@@ -1787,6 +1795,9 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
                     errOnStop = true;
 
                     U.error(log, "Failed to stop component (ignoring): " + 
comp, e);
+
+                    if (e instanceof Error)
+                        throw (Error)e;
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
index 56ec3ae..cde8316 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
@@ -1465,6 +1465,9 @@ public class IgnitionEx {
             catch (Throwable e) {
                 unregisterFactoryMBean();
 
+                if (e instanceof Error)
+                    throw e;
+
                 throw new IgniteCheckedException("Unexpected exception when 
starting grid.", e);
             }
             finally {
@@ -1981,6 +1984,9 @@ public class IgnitionEx {
             }
             catch (Throwable e) {
                 U.error(log, "Failed to properly stop grid instance due to 
undeclared exception.", e);
+
+                if (e instanceof Error)
+                    throw e;
             }
             finally {
                 state = grid0.context().segmented() ? STOPPED_ON_SEGMENTATION 
: STOPPED;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentClassLoader.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentClassLoader.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentClassLoader.java
index eddf0a2..168216c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentClassLoader.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentClassLoader.java
@@ -435,7 +435,7 @@ class GridDeploymentClassLoader extends ClassLoader 
implements GridDeploymentInf
         }
         // Catch Throwable to secure against any errors resulted from
         // corrupted class definitions or other user errors.
-        catch (Throwable e) {
+        catch (Exception e) {
             throw new ClassNotFoundException("Failed to load class due to 
unexpected error: " + name, e);
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index f6be4ed..0950774 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -1640,6 +1640,9 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
                 }
                 catch (Throwable t) {
                     U.error(log, "Unexpected exception in discovery worker 
thread (ignored).", t);
+
+                    if (t instanceof Error)
+                        throw (Error)t;
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
index 3e41a6a..6ebe480 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
@@ -740,6 +740,9 @@ public class GridEventStorageManager extends 
GridManagerAdapter<EventStorageSpi>
                 }
                 catch (Throwable e) {
                     U.error(log, "Unexpected exception in listener 
notification for event: " + evt, e);
+
+                    if (e instanceof Error)
+                        throw (Error)e;
                 }
             }
         }
@@ -1077,6 +1080,9 @@ public class GridEventStorageManager extends 
GridManagerAdapter<EventStorageSpi>
                     evts = Collections.emptyList();
 
                     ex = e;
+
+                    if (e instanceof Error)
+                        throw (Error)e;
                 }
 
                 // Response message.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheStoreBalancingWrapper.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheStoreBalancingWrapper.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheStoreBalancingWrapper.java
index 8020005..7bbf08b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheStoreBalancingWrapper.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheStoreBalancingWrapper.java
@@ -98,6 +98,9 @@ public class CacheStoreBalancingWrapper<K, V> implements 
CacheStore<K, V> {
         catch (Throwable e) {
             fut.onError(key, e);
 
+            if (e instanceof Error)
+                throw e;
+
             throw e;
         }
     }
@@ -173,6 +176,9 @@ public class CacheStoreBalancingWrapper<K, V> implements 
CacheStore<K, V> {
             catch (Throwable e) {
                 span.onError(needLoad, e);
 
+                if (e instanceof Error)
+                    throw e;
+
                 throw e;
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
index 6fefdfd..b8668e6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
@@ -289,6 +289,9 @@ public class GridCacheIoManager extends 
GridCacheSharedManagerAdapter {
                     "[senderId=" + nodeId + ", err=" + X.cause(e, 
ClassNotFoundException.class).getMessage() + ']');
             else
                 U.error(log, "Failed to process message [senderId=" + nodeId + 
']', e);
+
+            if (e instanceof Error)
+                throw (Error)e;
         }
         finally {
             if (depEnabled)
@@ -326,6 +329,9 @@ public class GridCacheIoManager extends 
GridCacheSharedManagerAdapter {
         }
         catch (Throwable e) {
             U.error(log, "Failed processing message [senderId=" + nodeId + ", 
msg=" + msg + ']', e);
+
+            if (e instanceof Error)
+                throw e;
         }
         finally {
             // Reset thread local context.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
index 5fdc1e4..5c75390 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
@@ -659,6 +659,9 @@ public class GridDistributedTxRemoteAdapter extends 
IgniteTxAdapter
                             // as there is no way to rollback at this point.
                             err = new 
IgniteTxHeuristicCheckedException("Commit produced a runtime exception " +
                                 "(all transaction entries will be 
invalidated): " + CU.txString(this), ex);
+
+                            if (ex instanceof Error)
+                                throw (Error)ex;
                         }
                     }
                 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
index f3266df..aff15d9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
@@ -673,6 +673,9 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter 
implements GridCacheMa
             catch (Throwable ex) {
                 U.error(log, "Failed to send finish response to node 
(transaction was " +
                     (commit ? "committed" : "rolledback") + ") [node=" + 
nearNodeId + ", res=" + res + ']', ex);
+
+                if (ex instanceof Error)
+                    throw (Error)ex;
             }
         }
         else {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
index 6633b5c..45d332c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
@@ -631,6 +631,9 @@ public class GridDhtPartitionsExchangeFuture extends 
GridFutureAdapter<AffinityT
 
                 onDone(e);
 
+                if (e instanceof Error)
+                    throw (Error)e;
+
                 return;
             }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
index 3b2418e..3052810 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
@@ -231,6 +231,9 @@ public final class GridNearTxFinishFuture<K, V> extends 
GridCompoundIdentityFutu
                         }
                         catch (Throwable t) {
                             U.error(log, "Failed to invalidate entry.", t);
+
+                            if (t instanceof Error)
+                                throw (Error)t;
                         }
                     }
                 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
index 99c771f..a579aab 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedQueryManager.java
@@ -191,6 +191,9 @@ public class GridCacheDistributedQueryManager<K, V> extends 
GridCacheQueryManage
                         U.error(log(), "Failed to run query.", e);
 
                         sendQueryResponse(sndId, new 
GridCacheQueryResponse(cctx.cacheId(), req.id(), e.getCause()), 0);
+
+                        if (e instanceof Error)
+                            throw (Error)e;
                     }
                     finally {
                         threads.remove(req.id());

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalQueryFuture.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalQueryFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalQueryFuture.java
index 8039617..66db0f7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalQueryFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalQueryFuture.java
@@ -91,6 +91,9 @@ public class GridCacheLocalQueryFuture<K, V, R> extends 
GridCacheQueryFutureAdap
             }
             catch (Throwable e) {
                 onDone(e);
+
+                if (e instanceof Error)
+                    throw (Error)e;
             }
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
index 85f7326..a8bace0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
@@ -405,6 +405,9 @@ public abstract class GridCacheQueryFutureAdapter<K, V, R> 
extends GridFutureAda
         }
         catch (Throwable e) {
             onPageError(nodeId, e);
+
+            if (e instanceof Error)
+                throw (Error)e;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
index 16063af..1eb29dc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
@@ -1187,6 +1187,9 @@ public abstract class GridCacheQueryManager<K, V> extends 
GridCacheManagerAdapte
                 U.error(log, "Failed to run fields query [qry=" + qryInfo + ", 
node=" + cctx.nodeId() + "]", e);
 
                 onFieldsPageReady(qryInfo.local(), qryInfo, null, null, null, 
true, e);
+
+                if (e instanceof Error)
+                    throw (Error)e;
             }
             finally {
                 if (rmvRes)
@@ -1439,6 +1442,9 @@ public abstract class GridCacheQueryManager<K, V> extends 
GridCacheManagerAdapte
                 U.error(log, "Failed to run query [qry=" + qryInfo + ", node=" 
+ cctx.nodeId() + "]", e);
 
                 onPageReady(loc, qryInfo, null, true, e);
+
+                if (e instanceof Error)
+                    throw (Error)e;
             }
             finally {
                 if (rmvIter)
@@ -1530,6 +1536,9 @@ public abstract class GridCacheQueryManager<K, V> extends 
GridCacheManagerAdapte
             }
             catch (Throwable e) {
                 fut.onDone(e);
+
+                if (e instanceof Error)
+                    throw (Error)e;
             }
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcMetadataTask.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcMetadataTask.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcMetadataTask.java
index 495f887..6111acd 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcMetadataTask.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/jdbc/GridCacheQueryJdbcMetadataTask.java
@@ -156,6 +156,9 @@ public class GridCacheQueryJdbcMetadataTask extends 
ComputeTaskAdapter<String, b
                 catch (IgniteCheckedException e) {
                     throw new IgniteException(e);
                 }
+
+                if (t instanceof Error)
+                    throw (Error)t;
             }
 
             byte[] packet = new byte[data.length + 1];

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
index bc09f9e..0e38c43 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
@@ -378,8 +378,8 @@ public abstract class IgniteTxAdapter extends 
GridMetadataAwareAdapter
      * @return Flag indicating whether near cache should be updated.
      */
     protected boolean updateNearCache(
-        GridCacheContext<?, ?> cacheCtx, 
-        KeyCacheObject key, 
+        GridCacheContext<?, ?> cacheCtx,
+        KeyCacheObject key,
         AffinityTopologyVersion topVer
     ) {
         return false;
@@ -472,6 +472,9 @@ public abstract class IgniteTxAdapter extends 
GridMetadataAwareAdapter
             catch (Throwable t) {
                 U.error(log, "Failed to invalidate transaction entries while 
reverting a commit.", t);
 
+                if (t instanceof Error)
+                    throw (Error)t;
+
                 break;
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
index 8e47105..affe168 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
@@ -522,6 +522,9 @@ public class IgniteTxHandler {
                 else
                     U.error(log, "Failed to send finish response to node 
[nodeId=" + nodeId + ", " +
                         "res=" + res + ']', e);
+
+                if (e instanceof Error)
+                    throw (Error)e;
             }
 
             return null;
@@ -623,6 +626,9 @@ public class IgniteTxHandler {
                         else
                             U.error(log, "Failed to send finish response to 
node [nodeId=" + nodeId + ", " +
                                 "res=" + res + ']', e);
+
+                        if (e instanceof Error)
+                            throw (Error)e;
                     }
 
                     return null;
@@ -632,16 +638,21 @@ public class IgniteTxHandler {
         catch (Throwable e) {
             U.error(log, "Failed completing transaction [commit=" + 
req.commit() + ", tx=" + tx + ']', e);
 
+            IgniteInternalFuture<IgniteInternalTx> res = null;
+
             if (tx != null) {
                 IgniteInternalFuture<IgniteInternalTx> rollbackFut = 
tx.rollbackAsync();
 
                 // Only for error logging.
                 rollbackFut.listen(CU.errorLogger(log));
 
-                return rollbackFut;
+                res = rollbackFut;
             }
 
-            return new GridFinishedFuture<>(e);
+            if (e instanceof Error)
+                throw (Error)e;
+
+            return res == null ? new GridFinishedFuture<IgniteInternalTx>(e) : 
res;
         }
     }
 
@@ -668,6 +679,9 @@ public class IgniteTxHandler {
         catch (Throwable e) {
             U.error(log, "Failed completing transaction [commit=" + commit + 
", tx=" + tx + ']', e);
 
+            if (e instanceof Error)
+                throw e;
+
             if (tx != null)
                 return tx.rollbackAsync();
 
@@ -883,6 +897,9 @@ public class IgniteTxHandler {
             catch (IgniteCheckedException ex) {
                 U.error(log, "Failed to invalidate transaction: " + tx, ex);
             }
+
+            if (e instanceof Error)
+                throw (Error)e;
         }
     }
 
@@ -918,6 +935,9 @@ public class IgniteTxHandler {
             tx.systemInvalidate(true);
 
             tx.rollback();
+
+            if (e instanceof Error)
+                throw (Error)e;
         }
     }
 
@@ -941,6 +961,9 @@ public class IgniteTxHandler {
             }
             else
                 U.error(log, "Failed to send finish response to node [nodeId=" 
+ nodeId + ", res=" + res + ']', e);
+
+            if (e instanceof Error)
+                throw (Error)e;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 5bd4fdf..3d3e77f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -431,6 +431,9 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
         catch (Throwable e) {
             setRollbackOnly();
 
+            if (e instanceof Error)
+                throw e;
+
             throw new IgniteCheckedException("Transaction validation produced 
a runtime exception: " + this, e);
         }
     }
@@ -643,6 +646,9 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                 // Safe to remove transaction from committed tx list because 
nothing was committed yet.
                 cctx.tm().removeCommittedTx(this);
 
+                if (ex instanceof Error)
+                    throw (Error)ex;
+
                 throw new IgniteCheckedException("Failed to commit transaction 
to database: " + this, ex);
             }
         }
@@ -970,8 +976,14 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter
                             }
                             catch (Throwable ex1) {
                                 U.error(log, "Failed to uncommit transaction: 
" + this, ex1);
+
+                                if (ex1 instanceof Error)
+                                    throw ex1;
                             }
 
+                            if (ex instanceof Error)
+                                throw ex;
+
                             throw err;
                         }
                     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
index 1fe0223..658557e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
@@ -760,6 +760,9 @@ public class GridClosureProcessor extends 
GridProcessorAdapter {
                             U.error(log, "Closure execution failed with 
error.", e);
 
                         fut.onDone(U.cast(e));
+
+                        if (e instanceof Error)
+                            throw e;
                     }
                 }
             };
@@ -819,9 +822,12 @@ public class GridClosureProcessor extends 
GridProcessorAdapter {
             return runLocal(c, plc);
         }
         catch (Throwable e) {
-            if (e instanceof Error)
+            if (e instanceof Error) {
                 U.error(log, "Closure execution failed with error.", e);
 
+                throw (Error)e;
+            }
+
             // If execution was rejected - rerun locally.
             if (e.getCause() instanceof RejectedExecutionException) {
                 U.warn(log, "Closure execution has been rejected (will execute 
in the same thread) [plc=" + plc +
@@ -833,9 +839,12 @@ public class GridClosureProcessor extends 
GridProcessorAdapter {
                     return new GridFinishedFuture();
                 }
                 catch (Throwable t) {
-                    if (t instanceof Error)
+                    if (t instanceof Error) {
                         U.error(log, "Closure execution failed with error.", 
t);
 
+                        throw t;
+                    }
+
                     return new GridFinishedFuture(U.cast(t));
                 }
             }
@@ -890,6 +899,9 @@ public class GridClosureProcessor extends 
GridProcessorAdapter {
                             U.error(log, "Closure execution failed with 
error.", e);
 
                         fut.onDone(U.cast(e));
+
+                        if (e instanceof Error)
+                            throw (Error)e;
                     }
                 }
             };

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileWorkerBatch.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileWorkerBatch.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileWorkerBatch.java
index 5b92c84..1a2f3cb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileWorkerBatch.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileWorkerBatch.java
@@ -151,6 +151,9 @@ public abstract class IgfsFileWorkerBatch implements 
Runnable {
         catch (Throwable e) {
             // Safety. This should never happen under normal conditions.
             err = e;
+
+            if (e instanceof Error)
+                throw e;
         }
         finally {
             // Order of events is very important here. First, we close the 
stream so that metadata locks are released.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsThread.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsThread.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsThread.java
index 3523bc8..f64fc3e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsThread.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsThread.java
@@ -52,16 +52,22 @@ public abstract class IgfsThread extends Thread {
             X.error("Failed to execute IGFS ad-hoc thread: " + e.getMessage());
 
             e.printStackTrace();
+
+            if (e instanceof Error)
+                throw e;
         }
         finally {
             try {
                 cleanup();
             }
             // Catch all.
-            catch (Throwable e) {
+            catch (Throwable  e) {
                 X.error("Failed to clean up IGFS ad-hoc thread: " + 
e.getMessage());
 
                 e.printStackTrace();
+
+                if (e instanceof Error)
+                    throw e;
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/job/GridJobWorker.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/job/GridJobWorker.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/job/GridJobWorker.java
index b691180..d1ee5ad 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/job/GridJobWorker.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/job/GridJobWorker.java
@@ -400,6 +400,9 @@ public class GridJobWorker extends GridWorker implements 
GridTimeoutObject {
             ex = handleThrowable(e);
 
             assert ex != null;
+
+            if (e instanceof Error)
+                throw e;
         }
         finally {
             if (ex != null)
@@ -521,6 +524,9 @@ public class GridJobWorker extends GridWorker implements 
GridTimeoutObject {
             ex = handleThrowable(e);
 
             assert ex != null;
+
+            if (e instanceof Error)
+                throw (Error)e;
         }
         finally {
             // Finish here only if not held by this thread.
@@ -617,6 +623,9 @@ public class GridJobWorker extends GridWorker implements 
GridTimeoutObject {
         catch (Throwable e) {
             U.error(log, "Failed to cancel job due to undeclared user 
exception [jobId=" + ses.getJobId() +
                 ", ses=" + ses + ']', e);
+
+            if (e instanceof Error)
+                throw e;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index 35e8d73..2ed6c62 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -351,6 +351,9 @@ public class GridQueryProcessor extends 
GridProcessorAdapter {
                     log.error("Failed to rebuild indexes for type: " + 
desc.name(), e);
 
                     fut.onDone(e);
+
+                    if (e instanceof Error)
+                        throw e;
                 }
             }
         };

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index 4bc87ad..52ca610 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -123,6 +123,9 @@ public class GridRestProcessor extends GridProcessorAdapter 
{
                             U.error(log, "Client request execution failed with 
error.", e);
 
                         fut.onDone(U.cast(e));
+
+                        if (e instanceof Error)
+                            throw e;
                     }
                     finally {
                         workersCnt.decrement();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
index f57a627..22d1ff0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
@@ -819,6 +819,9 @@ public class GridServiceProcessor extends 
GridProcessorAdapter {
                             catch (Throwable e) {
                                 log.error("Service execution stopped with 
error [name=" + svcCtx.name() +
                                     ", execId=" + svcCtx.executionId() + ']', 
e);
+
+                                if (e instanceof Error)
+                                    throw (Error)e;
                             }
                             finally {
                                 // Suicide.
@@ -872,6 +875,9 @@ public class GridServiceProcessor extends 
GridProcessorAdapter {
             catch (Throwable e) {
                 log.error("Failed to cancel service (ignoring) [name=" + 
svcCtx.name() +
                     ", execId=" + svcCtx.executionId() + ']', e);
+
+                if (e instanceof Error)
+                    throw e;
             }
             finally {
                 try {
@@ -1243,6 +1249,9 @@ public class GridServiceProcessor extends 
GridProcessorAdapter {
             }
             catch (Throwable t) {
                 log.error("Error when executing service: " + svcName.get(), t);
+
+                if (t instanceof Error)
+                    throw t;
             }
             finally {
                 busyLock.leaveBusy();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
index 3e2d013..f6d686c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
@@ -458,6 +458,9 @@ class GridTaskWorker<T, R> extends GridWorker implements 
GridTimeoutObject {
             U.error(log, errMsg, e);
 
             finishTask(null, new ComputeUserUndeclaredException(errMsg, e));
+
+            if (e instanceof Error)
+                throw e;
         }
     }
 
@@ -885,6 +888,9 @@ class GridTaskWorker<T, R> extends GridWorker implements 
GridTimeoutObject {
                     // hence forced to fail the whole deployed task.
                     finishTask(null, tmp);
 
+                    if (e instanceof Error)
+                        throw e;
+
                     return null;
                 }
             }
@@ -938,6 +944,9 @@ class GridTaskWorker<T, R> extends GridWorker implements 
GridTimeoutObject {
             U.error(log, errMsg, e);
 
             userE = new ComputeUserUndeclaredException(errMsg ,e);
+
+            if (e instanceof Error)
+                throw e;
         }
         finally {
             finishTask(reduceRes, userE);
@@ -998,6 +1007,9 @@ class GridTaskWorker<T, R> extends GridWorker implements 
GridTimeoutObject {
 
             finishTask(null, new ComputeUserUndeclaredException(errMsg, e));
 
+            if (e instanceof Error)
+                throw (Error)e;
+
             return false;
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/processors/timeout/GridTimeoutProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/timeout/GridTimeoutProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/timeout/GridTimeoutProcessor.java
index c72a895..81ff72b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/timeout/GridTimeoutProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/timeout/GridTimeoutProcessor.java
@@ -134,6 +134,9 @@ public class GridTimeoutProcessor extends 
GridProcessorAdapter {
                         }
                         catch (Throwable e) {
                             U.error(log, "Error when executing timeout 
callback: " + timeoutObj, e);
+
+                            if (e instanceof Error)
+                                throw e;
                         }
                     }
                     else

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java 
b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index 1aac985..901274d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -7975,7 +7975,7 @@ public abstract class IgniteUtils {
 
             return true;
         }
-        catch (Throwable ignored) {
+        catch (Exception ignored) {
             return false;
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/loopback/IpcServerTcpEndpoint.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/loopback/IpcServerTcpEndpoint.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/loopback/IpcServerTcpEndpoint.java
index ccb6d02..7a4cc69 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/loopback/IpcServerTcpEndpoint.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/loopback/IpcServerTcpEndpoint.java
@@ -168,7 +168,7 @@ public class IpcServerTcpEndpoint implements 
IpcServerEndpoint {
                 }
             }
             catch (Throwable t) {
-                if (t instanceof IgniteCheckedException)
+                if (t instanceof IgniteCheckedException || t instanceof Error)
                     throw t;
 
                 throw new IgniteCheckedException("Invalid value '" + 
e.getValue() + "' of the property '" + e.getKey() + "' in " +

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryServerEndpoint.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryServerEndpoint.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryServerEndpoint.java
index 4f43474..86a0886 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryServerEndpoint.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryServerEndpoint.java
@@ -496,7 +496,7 @@ public class IpcSharedMemoryServerEndpoint implements 
IpcServerEndpoint {
                 }
             }
             catch (Throwable t) {
-                if (t instanceof IgniteCheckedException)
+                if (t instanceof IgniteCheckedException || t instanceof Error)
                     throw t;
 
                 throw new IgniteCheckedException("Invalid value '" + 
e.getValue() + "' of the property '" + e.getKey() + "' in " +

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java 
b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
index c7574f3..c86c5a4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
@@ -550,7 +550,7 @@ public class GridFunc {
 
                     return (R)mtd.invoke(t, args);
                 }
-                catch (Throwable e) {
+                catch (Exception e) {
                     throw wrap(e);
                 }
             }
@@ -586,7 +586,7 @@ public class GridFunc {
 
                     mtd.invoke(t, args);
                 }
-                catch (Throwable e) {
+                catch (Exception e) {
                     throw wrap(e);
                 }
             }
@@ -624,7 +624,7 @@ public class GridFunc {
 
                     return (R)mtd.invoke(o, args);
                 }
-                catch (Throwable e) {
+                catch (Exception e) {
                     throw wrap(e);
                 }
             }
@@ -661,7 +661,7 @@ public class GridFunc {
 
                     mtd.invoke(o, args);
                 }
-                catch (Throwable e) {
+                catch (Exception e) {
                     throw wrap(e);
                 }
             }
@@ -701,7 +701,7 @@ public class GridFunc {
 
                     return (R)mtd.invoke(null, args);
                 }
-                catch (Throwable e) {
+                catch (Exception e) {
                     throw wrap(e);
                 }
             }
@@ -738,7 +738,7 @@ public class GridFunc {
 
                     mtd.invoke(null, args);
                 }
-                catch (Throwable e) {
+                catch (Exception e) {
                     throw wrap(e);
                 }
             }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 9a7c1fa..88fad71 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -580,6 +580,9 @@ public class GridNioServer<T> {
             U.close(srvrCh, log);
             U.close(selector, log);
 
+            if (e instanceof Error)
+                throw (Error)e;
+
             throw new IgniteCheckedException("Failed to initialize NIO 
selector.", e);
         }
     }
@@ -1169,6 +1172,9 @@ public class GridNioServer<T> {
             }
             catch (Throwable e) {
                 U.error(log, "Caught unhandled exception in NIO worker thread 
(restart the node).", e);
+
+                if (e instanceof Error)
+                    throw e;
             }
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/X.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/X.java 
b/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/X.java
index fe48475..d5c5314 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/X.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/X.java
@@ -255,7 +255,7 @@ public final class X {
             return !deep ? shallowClone(obj) : (T)deepClone(new 
GridLeanMap<Integer, Integer>(),
                 new ArrayList<>(), obj, honorCloneable);
         }
-        catch (Throwable e) {
+        catch (Exception e) {
             throw new IgniteException("Unable to clone instance of class: " + 
obj.getClass(), e);
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
index 1dc682b..99fa270 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
@@ -124,6 +124,9 @@ public abstract class GridWorker implements Runnable {
                 U.error(log, "Runtime error caught during grid runnable 
execution: " + this, e);
             else
                 U.warn(log, "Runtime exception occurred during grid runnable 
execution caused by thread interruption: " + e.getMessage());
+
+            if (e instanceof Error)
+                throw e;
         }
         finally {
             synchronized (mux) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorResolveHostNameTask.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorResolveHostNameTask.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorResolveHostNameTask.java
index ea7eb91..76e610f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorResolveHostNameTask.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorResolveHostNameTask.java
@@ -89,7 +89,7 @@ public class VisorResolveHostNameTask extends 
VisorOneNodeTask<Void, Map<String,
                         res.put(ip, hostName);
                 }
             }
-            catch (Throwable e) {
+            catch (Exception e) {
                 throw new IgniteException("Failed to resolve host name", e);
             }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java
index c77ad2d..ceead59 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java
@@ -105,6 +105,9 @@ public class VisorNodeDataCollectorJob extends 
VisorJob<VisorNodeDataCollectorTa
         }
         catch (Throwable eventsEx) {
             res.eventsEx(eventsEx);
+
+            if (eventsEx instanceof Error)
+                throw eventsEx;
         }
     }
 
@@ -139,6 +142,9 @@ public class VisorNodeDataCollectorJob extends 
VisorJob<VisorNodeDataCollectorTa
         }
         catch (Throwable cachesEx) {
             res.cachesEx(cachesEx);
+
+            if (cachesEx instanceof Error)
+                throw (Error)cachesEx;
         }
     }
 
@@ -174,6 +180,9 @@ public class VisorNodeDataCollectorJob extends 
VisorJob<VisorNodeDataCollectorTa
         }
         catch (Throwable igfssEx) {
             res.igfssEx(igfssEx);
+
+            if (igfssEx instanceof Error)
+                throw igfssEx;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/messaging/MessagingListenActor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/messaging/MessagingListenActor.java
 
b/modules/core/src/main/java/org/apache/ignite/messaging/MessagingListenActor.java
index 486069f..04b640f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/messaging/MessagingListenActor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/messaging/MessagingListenActor.java
@@ -74,6 +74,9 @@ public abstract class MessagingListenActor<T> implements 
IgniteBiPredicate<UUID,
         }
         catch (Throwable e) {
             onError(e);
+
+            if (e instanceof Error)
+                throw (Error)e;
         }
 
         return keepGoing;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiThread.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiThread.java 
b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiThread.java
index 313807d..5682868 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiThread.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiThread.java
@@ -71,6 +71,9 @@ public abstract class IgniteSpiThread extends Thread {
         // not to kill any threads from the underlying thread pool.
         catch (Throwable e) {
             U.error(log, "Runtime error caught during grid runnable execution: 
" + this, e);
+
+            if (e instanceof Error)
+                throw e;
         }
         finally {
             cleanup();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index b40bf75..6a5eb25 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -1223,6 +1223,9 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
             catch (Throwable t) {
                 fut.onDone(t);
 
+                if (t instanceof Error)
+                    throw t;
+
                 throw U.cast(t);
             }
             finally {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineStartup.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineStartup.java
 
b/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineStartup.java
index f286cd3..4ddbbd0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineStartup.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineStartup.java
@@ -120,7 +120,7 @@ public final class CommandLineStartup {
 
             appCls.getDeclaredMethod("setAboutHandler", 
aboutHndCls).invoke(osxApp, aboutHndProxy);
         }
-        catch (Throwable ignore) {
+        catch (Exception ignore) {
             // Ignore.
         }
     }
@@ -297,6 +297,9 @@ public final class CommandLineStartup {
 
             exit("Failed to start grid: " + e.getMessage() + note, false, -1);
 
+            if (e instanceof Error)
+                throw e;
+
             return;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineTransformer.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineTransformer.java
 
b/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineTransformer.java
index cfed5e9..6b2c809 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineTransformer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/startup/cmdline/CommandLineTransformer.java
@@ -90,6 +90,9 @@ public class CommandLineTransformer {
 
             if (ps != null)
                 ps.println(TRANSFORMATION_FAILED_FLAG);
+
+            if (t instanceof Error)
+                throw (Error)t;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopDefaultJobInfo.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopDefaultJobInfo.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopDefaultJobInfo.java
index 76e9a43..d0a327e 100644
--- 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopDefaultJobInfo.java
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopDefaultJobInfo.java
@@ -103,6 +103,9 @@ public class HadoopDefaultJobInfo implements HadoopJobInfo, 
Externalizable {
         }
         // NB: java.lang.NoClassDefFoundError may be thrown from 
Class#getConstructor() call.
         catch (Throwable t) {
+            if (t instanceof Error)
+                throw (Error)t;
+            
             throw new IgniteCheckedException(t);
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsIpcIo.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsIpcIo.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsIpcIo.java
index 7d590c7..0264e7b 100644
--- 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsIpcIo.java
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsIpcIo.java
@@ -589,6 +589,9 @@ public class HadoopIgfsIpcIo implements HadoopIgfsIo {
                     log.error("Failed to obtain endpoint input stream 
(connection will be closed)", e);
 
                 err = e;
+
+                if (e instanceof Error)
+                    throw (Error)e;
             }
             finally {
                 close0(err);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/HadoopJobTracker.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/HadoopJobTracker.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/HadoopJobTracker.java
index 3757060..2f07817 100644
--- 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/HadoopJobTracker.java
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/HadoopJobTracker.java
@@ -1042,7 +1042,7 @@ public class HadoopJobTracker extends HadoopComponent {
             try {
                 fut.get();
             }
-            catch (Throwable e) {
+            catch (Exception e) {
                 if (e.getCause() instanceof HadoopTaskCancelledException)
                     return true;
             }
@@ -1086,6 +1086,9 @@ public class HadoopJobTracker extends HadoopComponent {
             }
             catch (Throwable e) {
                 U.error(log, "Unhandled exception while processing event.", e);
+
+                if (e instanceof Error)
+                    throw (Error)e;
             }
             finally {
                 busyLock.readUnlock();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/HadoopRunnableTask.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/HadoopRunnableTask.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/HadoopRunnableTask.java
index 2b36267..2e04ac1 100644
--- 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/HadoopRunnableTask.java
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/HadoopRunnableTask.java
@@ -138,6 +138,9 @@ public abstract class HadoopRunnableTask implements 
Callable<Void> {
             err = e;
 
             U.error(log, "Task execution failed.", e);
+
+            if (e instanceof Error)
+                throw e;
         }
         finally {
             execEndTs = U.currentTimeMillis();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/HadoopExternalTaskExecutor.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/HadoopExternalTaskExecutor.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/HadoopExternalTaskExecutor.java
index 0791d1e..66fb42a 100644
--- 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/HadoopExternalTaskExecutor.java
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/HadoopExternalTaskExecutor.java
@@ -398,6 +398,9 @@ public class HadoopExternalTaskExecutor extends 
HadoopTaskExecutorAdapter {
                 }
                 catch (Throwable e) {
                     fut.onDone(new IgniteCheckedException("Failed to 
initialize child process: " + job, e));
+
+                    if (e instanceof Error)
+                        throw (Error)e;
                 }
                 finally {
                     busyLock.readUnlock();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/v2/HadoopV2Job.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/v2/HadoopV2Job.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/v2/HadoopV2Job.java
index e3c2bfa..d265ca8 100644
--- 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/v2/HadoopV2Job.java
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/v2/HadoopV2Job.java
@@ -172,7 +172,10 @@ public class HadoopV2Job implements HadoopJob {
                 }
             }
             catch (Throwable e) {
-                throw transformException(e);
+                if (e instanceof Error)
+                    throw (Error)e;
+                else
+                    throw transformException(e);
             }
         }
         finally {
@@ -235,6 +238,9 @@ public class HadoopV2Job implements HadoopJob {
 
             fut.onDone(te);
 
+            if (e instanceof Error)
+                throw (Error)e;
+
             throw te;
         }
     }
@@ -287,6 +293,9 @@ public class HadoopV2Job implements HadoopJob {
                 catch (Throwable e) {
                     if (err == null)
                         err = e;
+
+                    if (e instanceof Error)
+                        throw (Error)e;
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/v2/HadoopV2TaskContext.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/v2/HadoopV2TaskContext.java
 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/v2/HadoopV2TaskContext.java
index 24f10a6..e9c859bd 100644
--- 
a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/v2/HadoopV2TaskContext.java
+++ 
b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/v2/HadoopV2TaskContext.java
@@ -183,6 +183,9 @@ public class HadoopV2TaskContext extends HadoopTaskContext {
                 task = createTask();
             }
             catch (Throwable e) {
+                if (e instanceof Error)
+                    throw e;
+
                 throw transformException(e);
             }
 
@@ -193,6 +196,9 @@ public class HadoopV2TaskContext extends HadoopTaskContext {
                 task.run(this);
             }
             catch (Throwable e) {
+                if (e instanceof Error)
+                    throw e;
+
                 throw transformException(e);
             }
         }
@@ -242,6 +248,9 @@ public class HadoopV2TaskContext extends HadoopTaskContext {
             locFs.setWorkingDirectory(new Path(locDir.getAbsolutePath()));
         }
         catch (Throwable e) {
+            if (e instanceof Error)
+                throw (Error)e;
+
             throw transformException(e);
         }
         finally {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
index 747ccb1..918a541 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
@@ -270,6 +270,9 @@ public class GridMapQueryExecutor {
             U.error(log, "Failed to execute local query: " + req, e);
 
             sendError(node, req.requestId(), e);
+
+            if (e instanceof Error)
+                throw (Error)e;
         }
         finally {
             h2.setFilters(null);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
index 9c60c61..fac9818 100644
--- 
a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
+++ 
b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
@@ -272,6 +272,9 @@ public class GridJettyRestHandler extends AbstractHandler {
             U.error(log, "Failed to process HTTP request [action=" + act + ", 
req=" + req + ']', e);
 
             cmdRes = new GridRestResponse(STATUS_FAILED, e.getMessage());
+
+            if (e instanceof Error)
+                throw (Error)e;
         }
 
         JsonConfig cfg = new GridJettyJsonConfig();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/schema-import/src/main/java/org/apache/ignite/schema/ui/SchemaImportApp.java
----------------------------------------------------------------------
diff --git 
a/modules/schema-import/src/main/java/org/apache/ignite/schema/ui/SchemaImportApp.java
 
b/modules/schema-import/src/main/java/org/apache/ignite/schema/ui/SchemaImportApp.java
index 5ab5a81..00d1bc8 100644
--- 
a/modules/schema-import/src/main/java/org/apache/ignite/schema/ui/SchemaImportApp.java
+++ 
b/modules/schema-import/src/main/java/org/apache/ignite/schema/ui/SchemaImportApp.java
@@ -679,7 +679,7 @@ public class SchemaImportApp extends Application {
 
                 drivers.put(jdbcDrvCls, drv);
             }
-            catch (Throwable e) {
+            catch (Exception e) {
                 throw new IllegalStateException(e);
             }
         }
@@ -737,7 +737,7 @@ public class SchemaImportApp extends Application {
                     if (jarFolder.exists())
                         fc.setInitialDirectory(jarFolder);
                 }
-                catch (Throwable ignored) {
+                catch (Exception ignored) {
                     // No-op.
                 }
 
@@ -942,7 +942,7 @@ public class SchemaImportApp extends Application {
                     if (outFolder.exists())
                         dc.setInitialDirectory(outFolder);
                 }
-                catch (Throwable ignored) {
+                catch (Exception ignored) {
                     // No-op.
                 }
 
@@ -1548,7 +1548,7 @@ public class SchemaImportApp extends Application {
                 appCls.getDeclaredMethod("setDockIconImage", 
java.awt.Image.class)
                     .invoke(osxApp, fromFXImage(image("ignite", 128), null));
             }
-            catch (Throwable ignore) {
+            catch (Exception ignore) {
                 // No-op.
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bc89338f/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentClassLoader.java
----------------------------------------------------------------------
diff --git 
a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentClassLoader.java
 
b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentClassLoader.java
index e15215c..3d57cf6 100644
--- 
a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentClassLoader.java
+++ 
b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentClassLoader.java
@@ -65,7 +65,7 @@ class GridUriDeploymentClassLoader extends URLClassLoader {
             }
             // Catch Throwable to secure against any errors resulted from
             // corrupted class definitions or other user errors.
-            catch (Throwable e) {
+            catch (Exception e) {
                 throw new ClassNotFoundException("Failed to load class due to 
unexpected error: " + name, e);
             }
         }
@@ -96,7 +96,7 @@ class GridUriDeploymentClassLoader extends URLClassLoader {
             }
             // Catch Throwable to secure against any errors resulted from
             // corrupted class definitions or other user errors.
-            catch (Throwable e) {
+            catch (Exception e) {
                 throw new ClassNotFoundException("Failed to load class due to 
unexpected error: " + name, e);
             }
         }

Reply via email to