You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2021/10/12 18:56:08 UTC

[couchdb] branch 3.x updated: Return empty list from fabric:inactive_index_files/1 when database doesn't exist

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

vatamane pushed a commit to branch 3.x
in repository https://gitbox.apache.org/repos/asf/couchdb.git


The following commit(s) were added to refs/heads/3.x by this push:
     new 79f64a7  Return empty list from fabric:inactive_index_files/1 when database doesn't exist
79f64a7 is described below

commit 79f64a7897d72217780a0708ec657fcd6ef99b26
Author: jiahuili <Ji...@ibm.com>
AuthorDate: Thu Oct 7 08:36:56 2021 -0500

    Return empty list from fabric:inactive_index_files/1 when database doesn't exist
---
 src/fabric/src/fabric.erl              | 10 ++++--
 src/fabric/test/eunit/fabric_tests.erl | 60 ++++++++++++++++++++++++++++++++++
 2 files changed, 67 insertions(+), 3 deletions(-)

diff --git a/src/fabric/src/fabric.erl b/src/fabric/src/fabric.erl
index 6386034..372f892 100644
--- a/src/fabric/src/fabric.erl
+++ b/src/fabric/src/fabric.erl
@@ -504,9 +504,13 @@ cleanup_index_files() ->
 %% @doc clean up index files for a specific db
 -spec cleanup_index_files(dbname()) -> ok.
 cleanup_index_files(DbName) ->
-    lists:foreach(fun(File) ->
-        file:delete(File)
-    end, inactive_index_files(DbName)).
+    try lists:foreach(
+        fun(File) ->
+            file:delete(File)
+        end, inactive_index_files(DbName))
+    catch
+        error:database_does_not_exist -> ok
+    end.
 
 %% @doc inactive index files for a specific db
 -spec inactive_index_files(dbname()) -> ok.
diff --git a/src/fabric/test/eunit/fabric_tests.erl b/src/fabric/test/eunit/fabric_tests.erl
new file mode 100644
index 0000000..5399593
--- /dev/null
+++ b/src/fabric/test/eunit/fabric_tests.erl
@@ -0,0 +1,60 @@
+% Licensed under the Apache License, Version 2.0 (the "License"); you may not
+% use this file except in compliance with the License. You may obtain a copy of
+% the License at
+%
+%   http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+% License for the specific language governing permissions and limitations under
+% the License.
+
+-module(fabric_tests).
+
+
+-include_lib("couch/include/couch_eunit.hrl").
+
+
+cleanup_index_files_test_() ->
+    {
+        setup,
+        fun setup/0,
+        fun teardown/1,
+        fun(Ctx) -> [
+            t_cleanup_index_files(),
+            t_cleanup_index_files_with_existing_db(Ctx),
+            t_cleanup_index_files_with_deleted_db(Ctx)
+        ] end
+    }.
+
+
+setup() ->
+    Ctx = test_util:start_couch([fabric]),
+    % TempDb is deleted in the test "t_cleanup_index_files_with_deleted_db".
+    TempDb = ?tempdb(),
+    fabric:create_db(TempDb),
+    {Ctx, TempDb}.
+
+
+teardown({Ctx, _TempDb}) ->
+    test_util:stop_couch(Ctx).
+
+
+t_cleanup_index_files() ->
+    ?_assert(
+        lists:all(fun(Res) -> Res =:= ok end, fabric:cleanup_index_files())).
+
+
+t_cleanup_index_files_with_existing_db({_Ctx, TempDb}) ->
+    ?_assertEqual(ok, fabric:cleanup_index_files(TempDb)).
+
+
+t_cleanup_index_files_with_deleted_db({_Ctx, TempDb}) ->
+    ?_test(
+        begin
+            fabric:delete_db(TempDb, []),
+            ?assertError(database_does_not_exist,
+                fabric:inactive_index_files(TempDb)),
+            ?assertEqual(ok, fabric:cleanup_index_files(TempDb))
+        end).