[ 
https://issues.apache.org/jira/browse/COUCHDB-2983?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15232655#comment-15232655
 ] 

ASF GitHub Bot commented on COUCHDB-2983:
-----------------------------------------

GitHub user iilyak opened a pull request:

    https://github.com/apache/couchdb-couch/pull/160

    Change normalize_dbname semantic add dbname_suffix

    normalize_dbname used to return last componenent of the shard path. But
    it was doing so only if argument was passed as a binary. We change the
    semantic of normalize_dbname so it does following:
    
      1. expects either type binary or list
      2. expect any kind of database name
         - plain database name
         - plain database name with '.couch' extension
         - shard name with suffix (creation time)
         - shard name with suffix (creation time) and .couch extension
      3. always returns a binary containing all components of a database name
      4. removes information about shard
      5. removes shard's suffix
    
    For cases we need last component of the path (old behaviour) we
    intoroduce dbname_suffix/1
    
    COUCHDB-2983

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/cloudant/couchdb-couch 
2983-change-semantic-of-normalize_dbname

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/couchdb-couch/pull/160.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #160
    
----
commit 026c5dabd7c421f483a7fc0fd8fc594831aac018
Author: ILYA Khlopotov <[email protected]>
Date:   2016-04-08T17:47:24Z

    Change normalize_dbname semantic add dbname_suffix
    
    normalize_dbname used to return last componenent of the shard path. But
    it was doing so only if argument was passed as a binary. We change the
    semantic of normalize_dbname so it does following:
    
      1. expects either type binary or list
      2. expect any kind of database name
         - plain database name
         - plain database name with '.couch' extension
         - shard name with suffix (creation time)
         - shard name with suffix (creation time) and .couch extension
      3. always returns a binary containing all components of a database name
      4. removes information about shard
      5. removes shard's suffix
    
    For cases we need last component of the path (old behaviour) we
    intoroduce dbname_suffix/1
    
    COUCHDB-2983

----


> is_replicator_db do not take into account shard's suffix
> --------------------------------------------------------
>
>                 Key: COUCHDB-2983
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-2983
>             Project: CouchDB
>          Issue Type: Bug
>          Components: Database Core, Replication
>            Reporter: ILYA
>            Assignee: ILYA
>
> We use number of ways to detect replicator db:
> 1. [<<"_replicator">> == 
> couch_db:normalize_dbname(Path)|https://github.com/apache/couchdb-fabric/blob/master/src/fabric_util.erl#L289]
>  in fabric.
> 2. hardcoded as 
> [<<"_replicator">>|https://github.com/apache/couchdb-couch-replicator/blob/master/src/couch_replicator_manager.erl#L166:L167]
>  in replicator_manager
> 3. calculated as [lists:last(binary:split(mem3:dbname(DbName), <<"/">>, 
> ...))|https://github.com/apache/couchdb-couch-replicator/blob/master/src/couch_replicator_manager.erl#L924]
>  in replicator_manager:is_replicator_db
> We need to unify the way we do it. We also would want to make sure we remove 
> shard's suffix from the last part of the path. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to