You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by sh...@apache.org on 2020/05/18 05:51:02 UTC
[incubator-ratis] branch master updated: RATIS-930. Fix failed to
remove RaftStorageDirectory (#101)
This is an automated email from the ASF dual-hosted git repository.
shashikant pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ratis.git
The following commit(s) were added to refs/heads/master by this push:
new 6064300 RATIS-930. Fix failed to remove RaftStorageDirectory (#101)
6064300 is described below
commit 60643005d0a6faaa25c1810fac9fcb68cda88c3b
Author: runzhiwang <51...@users.noreply.github.com>
AuthorDate: Mon May 18 13:50:56 2020 +0800
RATIS-930. Fix failed to remove RaftStorageDirectory (#101)
---
.../apache/ratis/server/impl/RaftServerImpl.java | 26 ++++++++++++++++------
1 file changed, 19 insertions(+), 7 deletions(-)
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
index 083094a..2653936 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
@@ -41,6 +41,7 @@ import org.slf4j.LoggerFactory;
import javax.management.ObjectName;
import java.io.IOException;
+import java.nio.file.NoSuchFileException;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
@@ -274,15 +275,26 @@ public class RaftServerImpl implements RaftServerProtocol, RaftServerAsynchronou
} catch (Exception ignored) {
LOG.warn("{}: Failed to close state", getMemberId(), ignored);
}
- leaderElectionMetrics.unregister();
- raftServerMetrics.unregister();
- RaftServerMetrics.removeRaftServerMetrics(this);
+ try {
+ leaderElectionMetrics.unregister();
+ raftServerMetrics.unregister();
+ RaftServerMetrics.removeRaftServerMetrics(this);
+ } catch (Exception ignored) {
+ LOG.warn("{}: Failed to unregister metric", getMemberId(), ignored);
+ }
if (deleteDirectory) {
final RaftStorageDirectory dir = state.getStorage().getStorageDir();
- try {
- FileUtils.deleteFully(dir.getRoot());
- } catch(Exception ignored) {
- LOG.warn("{}: Failed to remove RaftStorageDirectory {}", getMemberId(), dir, ignored);
+ for (int i = 0; i < FileUtils.NUM_ATTEMPTS; i ++) {
+ try {
+ FileUtils.deleteFully(dir.getRoot());
+ LOG.info("{}: Succeed to remove RaftStorageDirectory {}", getMemberId(), dir);
+ break;
+ } catch (NoSuchFileException e) {
+ LOG.warn("{}: Some file does not exist {}", getMemberId(), dir, e);
+ } catch (Exception ignored) {
+ LOG.error("{}: Failed to remove RaftStorageDirectory {}", getMemberId(), dir, ignored);
+ break;
+ }
}
}
});