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

Amrit Sarkar commented on SOLR-11003:
-------------------------------------

Varun,

thank you for the constructive feedback.

> We could however argue that this improvement could be implemented for the 
> regular transaction log as well. So let's put this for another Jira
I understand what you are saying, we can certainly do this to make the 
back-compat safe. This can be part of next iteration of CDCR optimisation.

> In CDCRBiDirectionalTest can we have one try block instead of two currently. 
> In the finally we could do a null check before shutting down
I was following {{CdcrBootstrapTest}} format Shalin wrote, but yeah maybe two 
try catch not required, changed as suggested.

> Methods like cdcrStart are the same in CdcrBootstrapTest. Can we put them in 
> a util class and reuse?We also have 
> BaseCdcrDistributedZkTest#invokeCdcrAction . Let's refactor the usage
> waitForClusterToSync is the same as CdcrBootsrapTest#waitForTargetToSync
Positively, moved to {{CdcrTestsUtil}}, we can surely make some code effective 
refactoring when we write this.

> Even CdcrBootstrapTest#indexDocs can be factored into the util class and 
> reused here?
We can, but then we have to specify the {{prefix}} for id for each collection, 
we can leave the refactoring there I guess.

> Can we use the logger instead of System.out.println
Done.

> After we add docs to cluster 1, can we do a assert that the numFound is not 0 
> . Just a sanity check to make sure we indexed docs atleast.
We have already added this check at every stage, doing {{*:*}} at source.

> Are we printing the queue responses just for debugging? can we change that to 
> an assert?
We cannot assert on that, as queue responses will be different for different 
clusters, we are just printing it for our reference.

> For /get?getVersions=X we need to do distrib=false . But since this is a one 
> shard collection we don't need to I guess. You can add fingerprint=true and 
> use the maxVersionEncountered key instead of calculating the max in code?
I have to see this, how to do this part. I copied _blindly_ from 
{{CdcrBootstrapTest}}, and as {{fingerprint}} was not introduced when bootstrap 
came in, its not there.

> After a DBQ/delete-by-id/atomic updates we do a 2s thread wait. Can we not 
> rely on this and use waitForClusterToSync? In general we should not be doing 
> any thread sleeps in the test
Yeah that was poor test writing, fixed this. Thanks for pointing it out.

Pending: introducing {{fingerprint}} to get the maxVersion. 


> Enabling bi-directional CDCR on cluster for better failover
> -----------------------------------------------------------
>
>                 Key: SOLR-11003
>                 URL: https://issues.apache.org/jira/browse/SOLR-11003
>             Project: Solr
>          Issue Type: Improvement
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: CDCR
>            Reporter: Amrit Sarkar
>            Assignee: Varun Thacker
>         Attachments: SOLR-11003-tlogutils.patch, SOLR-11003.patch, 
> SOLR-11003.patch, SOLR-11003.patch, SOLR-11003.patch, SOLR-11003.patch, 
> SOLR-11003.patch, SOLR-11003.patch, sample-configs.zip
>
>
> The latest version of Solr CDCR across collections / clusters is in 
> active-passive format, where we can index into source collection and the 
> updates gets forwarded to the passive one and vice-versa is not supported.
> https://lucene.apache.org/solr/guide/6_6/cross-data-center-replication-cdcr.html
> https://issues.apache.org/jira/browse/SOLR-6273
> We are try to get a  design ready to index in both collections and the 
> updates gets reflected across the collections in real-time (given the backlog 
> of replicating updates to other data center). ClusterACollectionA => 
> ClusterBCollectionB | ClusterBCollectionB => ClusterACollectionA.
> The STRONG RECOMMENDED way to keep indexing in ClusterACollectionA which 
> forwards the updates to ClusterBCollectionB. If ClusterACollectionA gets 
> down, we point the indexer and searcher application to ClusterBCollectionB. 
> Once ClusterACollectionA is up, depending on updates count, they will be 
> bootstrapped or forwarded to ClusterACollectionA from ClusterBCollectionB and 
> keep indexing on the ClusterBCollectionB.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to