You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ii...@apache.org on 2016/09/20 19:51:39 UTC

[1/2] couch commit: updated refs/heads/master to f129308

Repository: couchdb-couch
Updated Branches:
  refs/heads/master 2ad85bcfc -> f129308c4


Make sure clustered authentication_db is sys_db

Fixes the case when the following are configured to something other than _users
 - chttpd_auth.authentication_db
 - couch_httpd_auth.authentication_db

Introduce "couchdb.users_db_suffix" config key

Remove distinction between clustered and local users databases
configuration. We remove following configuration options and replace
them with "couchdb.users_db_suffix":

- chttpd_auth.authentication_db
- couch_httpd_auth.authentication_db

COUCHDB-2731


Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch/commit/f72e607c
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch/tree/f72e607c
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch/diff/f72e607c

Branch: refs/heads/master
Commit: f72e607c6a8d3b2a345bfeacb7a5c9d6f3216c2b
Parents: 2ad85bc
Author: ILYA Khlopotov <ii...@ca.ibm.com>
Authored: Tue Sep 13 11:42:47 2016 -0700
Committer: ILYA Khlopotov <ii...@ca.ibm.com>
Committed: Tue Sep 20 10:35:05 2016 -0700

----------------------------------------------------------------------
 src/couch_server.erl | 100 +++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 95 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/f72e607c/src/couch_server.erl
----------------------------------------------------------------------
diff --git a/src/couch_server.erl b/src/couch_server.erl
index 364cbb9..417c791 100644
--- a/src/couch_server.erl
+++ b/src/couch_server.erl
@@ -119,9 +119,11 @@ maybe_add_sys_db_callbacks(DbName, Options) when is_binary(DbName) ->
 maybe_add_sys_db_callbacks(DbName, Options) ->
     DbsDbName = config:get("mem3", "shards_db", "_dbs"),
     NodesDbName = config:get("mem3", "nodes_db", "_nodes"),
-    IsReplicatorDb = path_ends_with(DbName, <<"_replicator">>),
-    IsUsersDb = DbName ==config:get("couch_httpd_auth", "authentication_db", "_users") orelse
-	path_ends_with(DbName, <<"_users">>),
+
+    IsReplicatorDb = path_ends_with(DbName, "_replicator"),
+    UsersDbSuffix = config:get("couchdb", "users_db_suffix", "_users"),
+    IsUsersDb = path_ends_with(DbName, "_users")
+        orelse path_ends_with(DbName, UsersDbSuffix),
     if
 	DbName == DbsDbName ->
 	    [sys_db | Options];
@@ -139,8 +141,10 @@ maybe_add_sys_db_callbacks(DbName, Options) ->
 	    Options
     end.
 
-path_ends_with(Path, Suffix) ->
-    Suffix == couch_db:normalize_dbname(Path).
+path_ends_with(Path, Suffix) when is_binary(Suffix) ->
+    Suffix =:= couch_db:dbname_suffix(Path);
+path_ends_with(Path, Suffix) when is_list(Suffix) ->
+    path_ends_with(Path, ?l2b(Suffix)).
 
 check_dbname(#server{}, DbName) ->
     couch_db:validate_dbname(DbName).
@@ -539,3 +543,89 @@ db_closed(Server, Options) ->
         false -> Server#server{dbs_open=Server#server.dbs_open - 1};
         true -> Server
     end.
+
+-ifdef(TEST).
+-include_lib("eunit/include/eunit.hrl").
+
+setup() ->
+    ok = meck:new(config, [passthrough]),
+    ok = meck:expect(config, get, fun config_get/3),
+    ok.
+
+teardown(_) ->
+    (catch meck:unload(config)).
+
+config_get("couchdb", "users_db_suffix", _) -> "users_db";
+config_get(_, _, _) -> undefined.
+
+maybe_add_sys_db_callbacks_pass_test_() ->
+    SysDbCases = [
+        "shards/00000000-3fffffff/foo/users_db.1415960794.couch",
+        "shards/00000000-3fffffff/foo/users_db.1415960794",
+        "shards/00000000-3fffffff/foo/users_db",
+        "shards/00000000-3fffffff/users_db.1415960794.couch",
+        "shards/00000000-3fffffff/users_db.1415960794",
+        "shards/00000000-3fffffff/users_db",
+
+        "shards/00000000-3fffffff/_users.1415960794.couch",
+        "shards/00000000-3fffffff/_users.1415960794",
+        "shards/00000000-3fffffff/_users",
+
+        "foo/users_db.couch",
+        "foo/users_db",
+        "users_db.couch",
+        "users_db",
+        "foo/_users.couch",
+        "foo/_users",
+        "_users.couch",
+        "_users",
+
+        "shards/00000000-3fffffff/foo/_replicator.1415960794.couch",
+        "shards/00000000-3fffffff/foo/_replicator.1415960794",
+        "shards/00000000-3fffffff/_replicator",
+        "foo/_replicator.couch",
+        "foo/_replicator",
+        "_replicator.couch",
+        "_replicator"
+    ],
+
+    NonSysDbCases = [
+        "shards/00000000-3fffffff/foo/mydb.1415960794.couch",
+        "shards/00000000-3fffffff/foo/mydb.1415960794",
+        "shards/00000000-3fffffff/mydb",
+        "foo/mydb.couch",
+        "foo/mydb",
+        "mydb.couch",
+        "mydb"
+    ],
+    {
+        foreach, fun setup/0, fun teardown/1,
+        [
+            [should_add_sys_db_callbacks(C) || C <- SysDbCases]
+            ++
+            [should_add_sys_db_callbacks(?l2b(C)) || C <- SysDbCases]
+            ++
+            [should_not_add_sys_db_callbacks(C) || C <- NonSysDbCases]
+            ++
+            [should_not_add_sys_db_callbacks(?l2b(C)) || C <- NonSysDbCases]
+        ]
+    }.
+
+should_add_sys_db_callbacks(DbName) ->
+    {test_name(DbName), ?_test(begin
+        Options = maybe_add_sys_db_callbacks(DbName, [other_options]),
+        ?assert(lists:member(sys_db, Options)),
+        ok
+    end)}.
+should_not_add_sys_db_callbacks(DbName) ->
+    {test_name(DbName), ?_test(begin
+        Options = maybe_add_sys_db_callbacks(DbName, [other_options]),
+        ?assertNot(lists:member(sys_db, Options)),
+        ok
+    end)}.
+
+test_name(DbName) ->
+    lists:flatten(io_lib:format("~p", [DbName])).
+
+
+-endif.


[2/2] couch commit: updated refs/heads/master to f129308

Posted by ii...@apache.org.
Merge remote branch 'cloudant:74046-authentication_db-should-be-sysdb'

This closes #198

Signed-off-by: ILYA Khlopotov <ii...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch/commit/f129308c
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch/tree/f129308c
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch/diff/f129308c

Branch: refs/heads/master
Commit: f129308c44f761db1c82530e37b8656b563b3a03
Parents: 2ad85bc f72e607
Author: ILYA Khlopotov <ii...@ca.ibm.com>
Authored: Tue Sep 20 12:51:07 2016 -0700
Committer: ILYA Khlopotov <ii...@ca.ibm.com>
Committed: Tue Sep 20 12:51:07 2016 -0700

----------------------------------------------------------------------
 src/couch_server.erl | 100 +++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 95 insertions(+), 5 deletions(-)
----------------------------------------------------------------------