diff options
author | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2019-12-20 11:25:46 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2019-12-20 12:03:26 +0000 |
commit | e577768f8d9c0c815396fba6a0a7a11f3e24e580 (patch) | |
tree | d90136e6da44061714e46b2a2857d0d722a129a1 /storage/src/tests/distributor/twophaseupdateoperationtest.cpp | |
parent | d1ef9ba58add96123213fd8fe65a6dcc6ffdb5a6 (diff) |
Disable fast update path restarts by default
Even with the fix in #11561 we are still observing replica
divergence warnings in the logs. Disabling this feature entirely
until the issue has been fully investigated and a complete fix
has been implemented.
Also emit a log message when the distributor has forced convergence
of a detected inconsistent update.
Diffstat (limited to 'storage/src/tests/distributor/twophaseupdateoperationtest.cpp')
-rw-r--r-- | storage/src/tests/distributor/twophaseupdateoperationtest.cpp | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/storage/src/tests/distributor/twophaseupdateoperationtest.cpp b/storage/src/tests/distributor/twophaseupdateoperationtest.cpp index 619c3151295..8f728c39bb8 100644 --- a/storage/src/tests/distributor/twophaseupdateoperationtest.cpp +++ b/storage/src/tests/distributor/twophaseupdateoperationtest.cpp @@ -1048,28 +1048,28 @@ TEST_F(TwoPhaseUpdateOperationTest, safe_path_consistent_get_reply_timestamps_do } TEST_F(TwoPhaseUpdateOperationTest, fast_path_not_restarted_if_replica_set_altered_between_get_send_and_receive) { - setupDistributor(3, 3, "storage:3 distributor:1"); - getConfig().set_update_fast_path_restart_enabled(true); - - std::shared_ptr<TwoPhaseUpdateOperation> cb(sendUpdate("0=1/2/3,1=2/3/4")); // Inconsistent replicas. - DistributorMessageSenderStub sender; - cb->start(sender, framework::MilliSecTime(0)); - - // Replica set changes between time of Get requests sent and - // responses received. This may happen e.g. if concurrent mutations - // to the same bucket create a new replica. If this happens, we - // must not send the Update operations verbatim, as they will - // be started with the _current_ replica set, not the one that - // was present during the Get request. - BucketId bucket(0x400000000000cac4); // Always the same in the test. - addNodesToBucketDB(bucket, "0=1/2/3,1=2/3/4,2=3/3/3"); - - Timestamp old_timestamp = 500; - ASSERT_EQ("Get => 0,Get => 1", sender.getCommands(true)); - replyToGet(*cb, sender, 0, old_timestamp); - replyToGet(*cb, sender, 1, old_timestamp); - - ASSERT_EQ("Put => 1,Put => 2,Put => 0", sender.getCommands(true, false, 2)); + setupDistributor(3, 3, "storage:3 distributor:1"); + getConfig().set_update_fast_path_restart_enabled(true); + + std::shared_ptr<TwoPhaseUpdateOperation> cb(sendUpdate("0=1/2/3,1=2/3/4")); // Inconsistent replicas. + DistributorMessageSenderStub sender; + cb->start(sender, framework::MilliSecTime(0)); + + // Replica set changes between time of Get requests sent and + // responses received. This may happen e.g. if concurrent mutations + // to the same bucket create a new replica. If this happens, we + // must not send the Update operations verbatim, as they will + // be started with the _current_ replica set, not the one that + // was present during the Get request. + BucketId bucket(0x400000000000cac4); // Always the same in the test. + addNodesToBucketDB(bucket, "0=1/2/3,1=2/3/4,2=3/3/3"); + + Timestamp old_timestamp = 500; + ASSERT_EQ("Get => 0,Get => 1", sender.getCommands(true)); + replyToGet(*cb, sender, 0, old_timestamp); + replyToGet(*cb, sender, 1, old_timestamp); + + ASSERT_EQ("Put => 1,Put => 2,Put => 0", sender.getCommands(true, false, 2)); } // XXX currently differs in behavior from content nodes in that updates for |