You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2024/01/22 09:42:10 UTC

(camel) branch main updated: CAMEL-20297 camel-zookeeper: do not swallow interrupted exceptions

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 6c020ccb5e1 CAMEL-20297 camel-zookeeper: do not swallow interrupted exceptions
6c020ccb5e1 is described below

commit 6c020ccb5e17df828182801df02b854b1aa5c16e
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Jan 19 11:09:33 2024 +0100

    CAMEL-20297 camel-zookeeper: do not swallow interrupted exceptions
---
 .../component/zookeepermaster/group/internal/ZooKeeperGroup.java   | 1 +
 .../org/apache/camel/component/zookeeper/ConnectionHolder.java     | 2 ++
 .../org/apache/camel/component/zookeeper/ZooKeeperConsumer.java    | 7 +++++++
 .../camel/component/zookeeper/operations/AnyOfOperations.java      | 2 ++
 .../camel/component/zookeeper/operations/CreateOperation.java      | 3 +++
 .../camel/component/zookeeper/operations/DeleteOperation.java      | 3 +++
 .../component/zookeeper/operations/ExistenceChangedOperation.java  | 3 +++
 .../camel/component/zookeeper/operations/ExistsOperation.java      | 3 +++
 .../camel/component/zookeeper/operations/GetChildrenOperation.java | 3 +++
 .../camel/component/zookeeper/operations/GetDataOperation.java     | 3 +++
 .../camel/component/zookeeper/operations/SetDataOperation.java     | 3 +++
 11 files changed, 33 insertions(+)

diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroup.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroup.java
index cce971c489e..8fd26534033 100644
--- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroup.java
+++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroup.java
@@ -182,6 +182,7 @@ public class ZooKeeperGroup<T extends NodeState> implements Group<T> {
             try {
                 executorService.awaitTermination(5, TimeUnit.SECONDS);
             } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
                 throw (IOException) new InterruptedIOException().initCause(e);
             }
             try {
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ConnectionHolder.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ConnectionHolder.java
index 95da0b4be7b..f52a9419e37 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ConnectionHolder.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ConnectionHolder.java
@@ -71,6 +71,7 @@ public class ConnectionHolder implements Watcher {
         try {
             connectionLatch.await();
         } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
             throw RuntimeCamelException.wrapRuntimeCamelException(e);
         }
     }
@@ -95,6 +96,7 @@ public class ConnectionHolder implements Watcher {
         } catch (InterruptedException e) {
             LOG.warn("Error closing zookeeper connection {}. This exception will be ignored.",
                     configuration.getConnectString(), e);
+            Thread.currentThread().interrupt();
         }
     }
 }
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConsumer.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConsumer.java
index b646ca3609c..a7540c3274a 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConsumer.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConsumer.java
@@ -139,6 +139,7 @@ public class ZooKeeperConsumer extends DefaultConsumer {
                         LOG.trace(String.format("Processing '%s' operation", current.getClass().getSimpleName()));
                     }
                 } catch (InterruptedException e) {
+                    Thread.currentThread().interrupt();
                     continue;
                 }
                 String node = current.getNode();
@@ -151,6 +152,10 @@ public class ZooKeeperConsumer extends DefaultConsumer {
                         getProcessor().process(createExchange(node, result, watchedEvent));
                         watchedEvent = null;
                     }
+                } catch (InterruptedException e) {
+                    Thread.currentThread().interrupt();
+                    handleException(e);
+                    backoffAndThenRestart();
                 } catch (Exception e) {
                     handleException(e);
                     backoffAndThenRestart();
@@ -172,6 +177,8 @@ public class ZooKeeperConsumer extends DefaultConsumer {
                     Thread.sleep(configuration.getBackoff());
                     initializeConsumer();
                 }
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
             } catch (Exception e) {
                 // ignore
             }
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/AnyOfOperations.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/AnyOfOperations.java
index be4997d34ff..528d41e175d 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/AnyOfOperations.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/AnyOfOperations.java
@@ -51,6 +51,8 @@ public class AnyOfOperations extends ZooKeeperOperation implements WatchedEventP
                     operationProvidingResult = op;
                     return result;
                 }
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
             } catch (Exception e) {
             }
         }
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/CreateOperation.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/CreateOperation.java
index 18d24e37c95..2827303893c 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/CreateOperation.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/CreateOperation.java
@@ -56,6 +56,9 @@ public class CreateOperation extends ZooKeeperOperation<String> {
             }
             // for consistency with other operations return an empty stats set.
             return new OperationResult<>(created, new Stat());
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            return new OperationResult<>(e);
         } catch (Exception e) {
             return new OperationResult<>(e);
         }
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/DeleteOperation.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/DeleteOperation.java
index e9c7cf0be84..c5c03e3a137 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/DeleteOperation.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/DeleteOperation.java
@@ -47,6 +47,9 @@ public class DeleteOperation extends ZooKeeperOperation<Boolean> {
                 }
             }
             return new OperationResult<>(true, null, true);
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            return new OperationResult<>(e);
         } catch (Exception e) {
             return new OperationResult<>(e);
         }
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/ExistenceChangedOperation.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/ExistenceChangedOperation.java
index 8fd0b01a60d..24c4cd54cba 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/ExistenceChangedOperation.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/ExistenceChangedOperation.java
@@ -45,6 +45,9 @@ public class ExistenceChangedOperation extends FutureEventDrivenOperation<String
             String path = getNode();
             Stat statistics = connection.exists(path, true);
             return new OperationResult<>(path, statistics);
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            return new OperationResult<>(e);
         } catch (Exception e) {
             return new OperationResult<>(e);
         }
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/ExistsOperation.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/ExistsOperation.java
index 4e86c326891..da0c3f895dd 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/ExistsOperation.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/ExistsOperation.java
@@ -44,6 +44,9 @@ public class ExistsOperation extends ZooKeeperOperation<String> {
                 LOG.trace(ok ? "node exists" : "node does not exist");
             }
             return new OperationResult<>(node, statistics, ok);
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            return new OperationResult<>(e);
         } catch (Exception e) {
             return new OperationResult<>(e);
         }
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/GetChildrenOperation.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/GetChildrenOperation.java
index 90982f19758..a2cf4edd1c1 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/GetChildrenOperation.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/GetChildrenOperation.java
@@ -47,6 +47,9 @@ public class GetChildrenOperation extends ZooKeeperOperation<List<String>> {
                 }
             }
             return new OperationResult<>(children, statistics);
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            return new OperationResult<>(e);
         } catch (Exception e) {
             return new OperationResult<>(e);
         }
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/GetDataOperation.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/GetDataOperation.java
index ffe52a975e8..1b738851992 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/GetDataOperation.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/GetDataOperation.java
@@ -44,6 +44,9 @@ public class GetDataOperation extends ZooKeeperOperation<byte[]> {
                 }
             }
             return new OperationResult<>(connection.getData(node, true, statistics), statistics);
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            return new OperationResult<>(e);
         } catch (Exception e) {
             return new OperationResult<>(e);
         }
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/SetDataOperation.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/SetDataOperation.java
index d23586e209d..6c3b9c2781b 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/SetDataOperation.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/operations/SetDataOperation.java
@@ -51,6 +51,9 @@ public class SetDataOperation extends ZooKeeperOperation<byte[]> {
                 }
             }
             return new OperationResult<>(data, statistics);
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            return new OperationResult<>(e);
         } catch (Exception e) {
             return new OperationResult<>(e);
         }