From 6cebfc13ccdcd9cb2a5b576fa369b957e651752a Mon Sep 17 00:00:00 2001 From: Mark Payne Date: Wed, 27 Jul 2016 20:23:13 -0400 Subject: [PATCH] CURATOR-337: Do not attempt to release a mutex unless it has actually been acquired --- .../recipes/leader/LeaderSelector.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/leader/LeaderSelector.java b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/leader/LeaderSelector.java index ec33533f4b..c177302a05 100644 --- a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/leader/LeaderSelector.java +++ b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/leader/LeaderSelector.java @@ -419,16 +419,19 @@ void doWork() throws Exception } finally { - hasLeadership = false; - try - { - mutex.release(); - } - catch ( Exception e ) + if ( hasLeadership ) { - ThreadUtils.checkInterrupted(e); - log.error("The leader threw an exception", e); - // ignore errors - this is just a safety + hasLeadership = false; + try + { + mutex.release(); + } + catch ( Exception e ) + { + ThreadUtils.checkInterrupted(e); + log.error("The leader threw an exception", e); + // ignore errors - this is just a safety + } } } }