Netflix / dyno

Java client for Dynomite
https://github.com/Netflix/dynomite
Apache License 2.0
186 stars 94 forks source link

Using Dyno lock with conductor #315

Open charybr opened 1 year ago

charybr commented 1 year ago

Hi,

We have conductor using Dynomite for persistence and queuing. Conductor uses Dyno client to connect to Dynomite. Now we want to enable locking in conductor for consistency. I had a look at this PR - https://github.com/Netflix/dyno/pull/271. Is there a way to enable locking using Dyno client? If yes, what are the configuration to be set on conductor side.

Best Regards, Chary

charybr commented 1 year ago

I think we need to instantiate DynoLockClient in Conductor. Is it right?

charybr commented 1 year ago

Hi @rsrinivasanNetflix ,

https://github.com/Netflix/dyno/blob/0552980e8cd3cb81fd4fb83787e44107f13e422e/dyno-recipes/src/main/java/com/netflix/dyno/recipes/lock/VotingHostsFromTokenRange.java#L36

In VotingHostsFromToken when votingSize is not provided (i.e DEFAULT_LOCK_VOTING_SIZE = -1 in ConnectionPoolConfigurationImpl) effectiveVotingSize is set to MAX_VOTING_SIZE (5). This makes it DynoLockClient quorum to 3. Is this intentional ? OR effectiveVotingSize should be set to MIN_VOTING_SIZE ?

effectiveVotingSize = votingSize == -1 ? MIN_VOTING_SIZE : votingSize;