You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Initial tidy
Remove legacy code from handoff_sender. The handoff_receiver must keep unused references, as during an upgrade an updated node could be a receiver to a non-updated node sending.
For non-batch not such an issue, as all supported versions for upgrade already supported batch. However, receiver must still indicate it supports batch due to above problem.
All handoff receiver/sender code tidied down to 80-column width
* Change AckSync to every batch by default
Do away with timer based sync, and ack-sync based on threshold only.
Also log ongoing transfer progress every ack-log threshold.
Log at point of error reason for error - avoid generic {shutdown, timeout} error with no clue as to actual point of code origin.
* Standardise send_sync into function
Fix issue that configure message does not respond sync, and so another sync is now required.
* Receiver needs vnode module not master
* Make first log indicate batch_count of 0
Confusing that the first log on the sending of a batch will indicate a batch_count of 100 not 0
* Batch threshold can be either count or size
Clarify log text, as batch_size no longer fixed
* Reinstate keepalive of receiver
Need to distinguish between failed fold and slow fold - and so the keepalive of the receiver has value.
Now implemented by checking a keepalive_next time every visit item, rather than continuously entering and exiting selective receive
* Further comments
* Update after review
* Metadata exchange on join
Make a metadata exchange part of the join process. This prevents the situation where a bucket type is active in a cluster, then a node joins (as part of cluster expansion, say), but the bucket properties are not known to joining node during handoff of objects of that type.
Now, the join cannot be staged without a metadata exchange, so that all joining nodes know of cluster metadata (e.g. bucket types) before the join is committed and handoffs start.
* Attempt exchange on Join
It is only an attempt - failure (i.e. timeout) would be no different to the current state with a potential race, so we don't block joins. Joins will normally be safer because of this.
0 commit comments