aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-03-14 20:30:26 -0700
committerChris Lu <chris.lu@gmail.com>2020-03-14 20:30:26 -0700
commit7b37178716c9d25667d31b73ef4d2d34758b9289 (patch)
tree102f17bb65f6398ca1b1d04933c77de15841d475
parentd022b6bc0ec908b58f4a073382b28eac4bba03ef (diff)
downloadseaweedfs-7b37178716c9d25667d31b73ef4d2d34758b9289.tar.xz
seaweedfs-7b37178716c9d25667d31b73ef4d2d34758b9289.zip
filer: close stores if interrupted
-rw-r--r--weed/filer2/abstract_sql/abstract_sql_store.go4
-rw-r--r--weed/filer2/cassandra/cassandra_store.go4
-rw-r--r--weed/filer2/etcd/etcd_store.go4
-rw-r--r--weed/filer2/filer.go4
-rw-r--r--weed/filer2/filerstore.go6
-rw-r--r--weed/filer2/leveldb/leveldb_store.go4
-rw-r--r--weed/filer2/leveldb2/leveldb2_store.go6
-rw-r--r--weed/filer2/redis/universal_redis_store.go5
-rw-r--r--weed/server/filer_server.go4
9 files changed, 41 insertions, 0 deletions
diff --git a/weed/filer2/abstract_sql/abstract_sql_store.go b/weed/filer2/abstract_sql/abstract_sql_store.go
index 864c858d3..ff041d0a3 100644
--- a/weed/filer2/abstract_sql/abstract_sql_store.go
+++ b/weed/filer2/abstract_sql/abstract_sql_store.go
@@ -184,3 +184,7 @@ func (store *AbstractSqlStore) ListDirectoryEntries(ctx context.Context, fullpat
return entries, nil
}
+
+func (store *AbstractSqlStore) Shutdown() {
+ store.DB.Close()
+}
diff --git a/weed/filer2/cassandra/cassandra_store.go b/weed/filer2/cassandra/cassandra_store.go
index 6f25fffec..d57df23eb 100644
--- a/weed/filer2/cassandra/cassandra_store.go
+++ b/weed/filer2/cassandra/cassandra_store.go
@@ -154,3 +154,7 @@ func (store *CassandraStore) ListDirectoryEntries(ctx context.Context, fullpath
return entries, err
}
+
+func (store *CassandraStore) Shutdown() {
+ store.session.Close()
+}
diff --git a/weed/filer2/etcd/etcd_store.go b/weed/filer2/etcd/etcd_store.go
index 83a6ddc5d..6c352c8d0 100644
--- a/weed/filer2/etcd/etcd_store.go
+++ b/weed/filer2/etcd/etcd_store.go
@@ -196,3 +196,7 @@ func getNameFromKey(key []byte) string {
return string(key[sepIndex+1:])
}
+
+func (store *EtcdStore) Shutdown() {
+ store.client.Close()
+}
diff --git a/weed/filer2/filer.go b/weed/filer2/filer.go
index d3343f610..e226552ad 100644
--- a/weed/filer2/filer.go
+++ b/weed/filer2/filer.go
@@ -308,3 +308,7 @@ func (f *Filer) cacheSetDirectory(dirpath string, dirEntry *Entry, level int) {
f.directoryCache.Set(dirpath, dirEntry, time.Duration(minutes)*time.Minute)
}
+
+func (f *Filer) Shutdown() {
+ f.store.Shutdown()
+}
diff --git a/weed/filer2/filerstore.go b/weed/filer2/filerstore.go
index f724f79c2..e3476aa96 100644
--- a/weed/filer2/filerstore.go
+++ b/weed/filer2/filerstore.go
@@ -25,6 +25,8 @@ type FilerStore interface {
BeginTransaction(ctx context.Context) (context.Context, error)
CommitTransaction(ctx context.Context) error
RollbackTransaction(ctx context.Context) error
+
+ Shutdown()
}
type FilerStoreWrapper struct {
@@ -133,3 +135,7 @@ func (fsw *FilerStoreWrapper) CommitTransaction(ctx context.Context) error {
func (fsw *FilerStoreWrapper) RollbackTransaction(ctx context.Context) error {
return fsw.actualStore.RollbackTransaction(ctx)
}
+
+func (fsw *FilerStoreWrapper) Shutdown() {
+ fsw.actualStore.Shutdown()
+}
diff --git a/weed/filer2/leveldb/leveldb_store.go b/weed/filer2/leveldb/leveldb_store.go
index 807fcb56f..9ddb9bacb 100644
--- a/weed/filer2/leveldb/leveldb_store.go
+++ b/weed/filer2/leveldb/leveldb_store.go
@@ -216,3 +216,7 @@ func getNameFromKey(key []byte) string {
return string(key[sepIndex+1:])
}
+
+func (store *LevelDBStore) Shutdown() {
+ store.db.Close()
+}
diff --git a/weed/filer2/leveldb2/leveldb2_store.go b/weed/filer2/leveldb2/leveldb2_store.go
index 0b07c6833..1e6827356 100644
--- a/weed/filer2/leveldb2/leveldb2_store.go
+++ b/weed/filer2/leveldb2/leveldb2_store.go
@@ -236,3 +236,9 @@ func hashToBytes(dir string, dbCount int) ([]byte, int) {
return b, int(x) % dbCount
}
+
+func (store *LevelDB2Store) Shutdown() {
+ for d := 0; d < store.dbCount; d++ {
+ store.dbs[d].Close()
+ }
+}
diff --git a/weed/filer2/redis/universal_redis_store.go b/weed/filer2/redis/universal_redis_store.go
index c5b9d9416..1f8a0413a 100644
--- a/weed/filer2/redis/universal_redis_store.go
+++ b/weed/filer2/redis/universal_redis_store.go
@@ -180,3 +180,8 @@ func (store *UniversalRedisStore) ListDirectoryEntries(ctx context.Context, full
func genDirectoryListKey(dir string) (dirList string) {
return dir + DIR_LIST_MARKER
}
+
+
+func (store *UniversalRedisStore) Shutdown() {
+ store.Client.Close()
+}
diff --git a/weed/server/filer_server.go b/weed/server/filer_server.go
index 656bb2ed8..c3b959c7c 100644
--- a/weed/server/filer_server.go
+++ b/weed/server/filer_server.go
@@ -102,6 +102,10 @@ func NewFilerServer(defaultMux, readonlyMux *http.ServeMux, option *FilerOption)
maybeStartMetrics(fs, option)
+ util.OnInterrupt(func() {
+ fs.filer.Shutdown()
+ })
+
return fs, nil
}