Github user fdaniel7 commented on the issue:
https://github.com/apache/incubator-geode/pull/245
It looks like when tryPrimary == false, the intention was that
ClientMetadata::getServerLocation() will return a secondary bucket from
m_bucketServerLocationsList[bucketId], considering that there's only one
primary location and 0 or more secondaries. the range of the randomization is
definitely wrong in
m_bucketServerLocationsList[bucketId].at(randgen((int)m_bucketServerLocationsList[bucketId].size())).
Since we don't want to assume that the primary is always located in
m_bucketServerLocationsList[bucketId].at(0), a while loop is added.
I don't see a point splitting this function to sections unless we want
specifically primary bucket or secondary.
The reason why I wanted to change this code is because
ClientMetadataService::markPrimaryBucketForTimeoutButLookSecondaryBucket()
doesn't work properly since prBuckets->setBucketTimeout(i) will be called only
if getServerLocation randomized the primary bucket, which makes no sense.
I'm going to add new pull request with a new function for marking buckets
as blacklisted.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---