Skip to content

Commit 0d2750b

Browse files
authored
transactions: rename forward_compat_behavior enum members (#760)
1 parent f74d5d2 commit 0d2750b

File tree

4 files changed

+104
-78
lines changed

4 files changed

+104
-78
lines changed

core/transactions/attempt_context_impl.cxx

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -576,8 +576,8 @@ attempt_context_impl::create_document_metadata(
576576
}),
577577
});
578578
txn["fc"] = {
579-
{ to_string(forward_compat_stage::WWC_INSERTING), fc_check },
580-
{ to_string(forward_compat_stage::WWC_INSERTING_GET), fc_check },
579+
{ to_string(forward_compat_stage::WRITE_WRITE_CONFLICT_INSERTING), fc_check },
580+
{ to_string(forward_compat_stage::WRITE_WRITE_CONFLICT_INSERTING_GET), fc_check },
581581
{ to_string(forward_compat_stage::GETS), fc_check },
582582
{ to_string(forward_compat_stage::CLEANUP_ENTRY), fc_check },
583583
};
@@ -637,7 +637,7 @@ attempt_context_impl::replace(const transaction_get_result& document,
637637

638638
self->check_and_handle_blocking_transactions(
639639
document,
640-
forward_compat_stage::WWC_REPLACING,
640+
forward_compat_stage::WRITE_WRITE_CONFLICT_REPLACING,
641641
[self,
642642
existing_sm,
643643
document,
@@ -1117,8 +1117,8 @@ attempt_context_impl::check_atr_entry_for_blocking_document(const transaction_ge
11171117
return e.attempt_id() == doc.links().staged_attempt_id();
11181118
});
11191119
if (it != entries.end()) {
1120-
auto fwd_err = check_forward_compat(forward_compat_stage::WWC_READING_ATR,
1121-
it->forward_compat());
1120+
auto fwd_err = check_forward_compat(
1121+
forward_compat_stage::WRITE_WRITE_CONFLICT_READING_ATR, it->forward_compat());
11221122
if (fwd_err) {
11231123
return cb(fwd_err);
11241124
}
@@ -1209,7 +1209,7 @@ attempt_context_impl::remove(const transaction_get_result& document, VoidCallbac
12091209
}
12101210
return self->check_and_handle_blocking_transactions(
12111211
document,
1212-
forward_compat_stage::WWC_REMOVING,
1212+
forward_compat_stage::WRITE_WRITE_CONFLICT_REMOVING,
12131213
[self, document, cb = std::move(cb), op_id, error_handler = std::move(error_handler)](
12141214
std::optional<transaction_operation_failed> err1) mutable {
12151215
if (err1) {
@@ -3334,8 +3334,9 @@ attempt_context_impl::create_staged_insert_error_handler(const core::document_id
33343334
doc->links().is_document_in_transaction(),
33353335
doc->links().is_deleted());
33363336

3337-
if (auto err = check_forward_compat(forward_compat_stage::WWC_INSERTING_GET,
3338-
doc->links().forward_compat());
3337+
if (auto err = check_forward_compat(
3338+
forward_compat_stage::WRITE_WRITE_CONFLICT_INSERTING_GET,
3339+
doc->links().forward_compat());
33393340
err) {
33403341
return self->op_completed_with_error(std::forward<Handler>(cb), *err);
33413342
}
@@ -3391,7 +3392,7 @@ attempt_context_impl::create_staged_insert_error_handler(const core::document_id
33913392
}
33923393
self->check_and_handle_blocking_transactions(
33933394
*doc,
3394-
forward_compat_stage::WWC_INSERTING,
3395+
forward_compat_stage::WRITE_WRITE_CONFLICT_INSERTING,
33953396
[self, id, op_id, content, doc, cb = std::forward<Handler>(cb), delay](
33963397
std::optional<transaction_operation_failed> err) mutable {
33973398
if (err) {

core/transactions/attempt_context_impl.hxx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ namespace transactions
6262
* insert and delete documents, as well as commit or rollback the transaction.
6363
*/
6464
class transactions;
65-
enum class forward_compat_stage;
65+
enum class forward_compat_stage : std::uint8_t;
6666
class staged_mutation_queue;
6767
class staged_mutation;
6868
struct attempt_context_testing_hooks;
@@ -96,15 +96,15 @@ private:
9696
codec::encoded_value content,
9797
core::transactions::async_attempt_context::Callback&& cb) override;
9898

99-
auto insert(const core::document_id& id,
100-
codec::encoded_value content) -> core::transactions::transaction_get_result override;
99+
auto insert(const core::document_id& id, codec::encoded_value content)
100+
-> core::transactions::transaction_get_result override;
101101

102102
void replace(const transaction_get_result& document,
103103
codec::encoded_value content,
104104
core::transactions::async_attempt_context::Callback&& cb) override;
105105

106-
auto replace(const transaction_get_result& document,
107-
codec::encoded_value content) -> transaction_get_result override;
106+
auto replace(const transaction_get_result& document, codec::encoded_value content)
107+
-> transaction_get_result override;
108108

109109
auto insert_raw(const collection& coll, const std::string& id, codec::encoded_value content)
110110
-> std::pair<couchbase::error, couchbase::transactions::transaction_get_result> override;

core/transactions/forward_compat.cxx

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,19 +127,19 @@ auto
127127
create_forward_compat_stage(const std::string& str) -> forward_compat_stage
128128
{
129129
if (str == "WW_R") {
130-
return forward_compat_stage::WWC_READING_ATR;
130+
return forward_compat_stage::WRITE_WRITE_CONFLICT_READING_ATR;
131131
}
132132
if (str == "WW_RP") {
133-
return forward_compat_stage::WWC_REPLACING;
133+
return forward_compat_stage::WRITE_WRITE_CONFLICT_REPLACING;
134134
}
135135
if (str == "WW_RM") {
136-
return forward_compat_stage::WWC_REMOVING;
136+
return forward_compat_stage::WRITE_WRITE_CONFLICT_REMOVING;
137137
}
138138
if (str == "WW_I") {
139-
return forward_compat_stage::WWC_INSERTING;
139+
return forward_compat_stage::WRITE_WRITE_CONFLICT_INSERTING;
140140
}
141141
if (str == "WW_IG") {
142-
return forward_compat_stage::WWC_INSERTING_GET;
142+
return forward_compat_stage::WRITE_WRITE_CONFLICT_INSERTING_GET;
143143
}
144144
if (str == "G") {
145145
return forward_compat_stage::GETS;
@@ -228,4 +228,48 @@ check_forward_compat(forward_compat_stage stage, std::optional<tao::json::value>
228228
return std::nullopt;
229229
}
230230

231+
auto
232+
to_string(forward_compat_stage value) -> std::string
233+
{
234+
switch (value) {
235+
case forward_compat_stage::WRITE_WRITE_CONFLICT_READING_ATR:
236+
return "WW_R";
237+
case forward_compat_stage::WRITE_WRITE_CONFLICT_REPLACING:
238+
return "WW_RP";
239+
case forward_compat_stage::WRITE_WRITE_CONFLICT_REMOVING:
240+
return "WW_RM";
241+
case forward_compat_stage::WRITE_WRITE_CONFLICT_INSERTING:
242+
return "WW_I";
243+
case forward_compat_stage::WRITE_WRITE_CONFLICT_INSERTING_GET:
244+
return "WW_IG";
245+
case forward_compat_stage::GETS:
246+
return "G";
247+
case forward_compat_stage::GETS_READING_ATR:
248+
return "G_A";
249+
case forward_compat_stage::CLEANUP_ENTRY:
250+
return "CL_E";
251+
};
252+
throw std::runtime_error("Unknown forward compatibility stage");
253+
}
254+
auto
255+
create_forward_compat_behavior(const std::string& str) -> forward_compat_behavior
256+
{
257+
if (str == "r") {
258+
return forward_compat_behavior::RETRY_TXN;
259+
}
260+
return forward_compat_behavior::FAIL_FAST_TXN;
261+
}
262+
auto
263+
forward_compat_behavior_name(forward_compat_behavior b) -> const char*
264+
{
265+
switch (b) {
266+
case forward_compat_behavior::CONTINUE:
267+
return "CONTINUE";
268+
case forward_compat_behavior::RETRY_TXN:
269+
return "RETRY_TXN";
270+
case forward_compat_behavior::FAIL_FAST_TXN:
271+
return "FAIL_FAST_TRANSACTION";
272+
}
273+
return "unknown behavior";
274+
}
231275
} // namespace couchbase::core::transactions

core/transactions/forward_compat.hxx

Lines changed: 40 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -16,91 +16,72 @@
1616
#pragma once
1717

1818
#include "internal/exceptions_internal.hxx"
19+
1920
#include <cstdint>
20-
#include <list>
2121
#include <optional>
22-
#include <stdexcept>
2322
#include <string>
23+
#include <vector>
2424

2525
namespace couchbase::core::transactions
2626
{
27-
// TODO(SA): rename using long and human-readable names
28-
enum class forward_compat_stage {
29-
WWC_READING_ATR,
30-
WWC_REPLACING,
31-
WWC_REMOVING,
32-
WWC_INSERTING,
33-
WWC_INSERTING_GET,
27+
enum class forward_compat_stage : std::uint8_t {
28+
WRITE_WRITE_CONFLICT_READING_ATR,
29+
WRITE_WRITE_CONFLICT_REPLACING,
30+
WRITE_WRITE_CONFLICT_REMOVING,
31+
WRITE_WRITE_CONFLICT_INSERTING,
32+
WRITE_WRITE_CONFLICT_INSERTING_GET,
3433
GETS,
3534
GETS_READING_ATR,
36-
CLEANUP_ENTRY
35+
CLEANUP_ENTRY,
3736
};
3837

39-
inline auto
40-
to_string(forward_compat_stage value) -> const char*
41-
{
42-
switch (value) {
43-
case forward_compat_stage::WWC_READING_ATR:
44-
return "WW_R";
45-
case forward_compat_stage::WWC_REPLACING:
46-
return "WW_RP";
47-
case forward_compat_stage::WWC_REMOVING:
48-
return "WW_RM";
49-
case forward_compat_stage::WWC_INSERTING:
50-
return "WW_I";
51-
case forward_compat_stage::WWC_INSERTING_GET:
52-
return "WW_IG";
53-
case forward_compat_stage::GETS:
54-
return "G";
55-
case forward_compat_stage::GETS_READING_ATR:
56-
return "G_A";
57-
case forward_compat_stage::CLEANUP_ENTRY:
58-
return "CL_E";
59-
};
60-
throw std::runtime_error("Unknown forward compatibility stage");
61-
}
38+
auto
39+
to_string(forward_compat_stage value) -> std::string;
6240

63-
enum class forward_compat_behavior {
41+
enum class forward_compat_behavior : std::uint8_t {
6442
CONTINUE,
6543
RETRY_TXN,
6644
FAIL_FAST_TXN
6745
};
6846

69-
inline auto
70-
create_forward_compat_behavior(const std::string& str) -> forward_compat_behavior
71-
{
72-
if (str == "r") {
73-
return forward_compat_behavior::RETRY_TXN;
74-
}
75-
return forward_compat_behavior::FAIL_FAST_TXN;
76-
}
47+
auto
48+
create_forward_compat_behavior(const std::string& str) -> forward_compat_behavior;
7749

7850
// used only for logging
79-
inline auto
80-
forward_compat_behavior_name(forward_compat_behavior b) -> const char*
81-
{
82-
switch (b) {
83-
case forward_compat_behavior::CONTINUE:
84-
return "CONTINUE";
85-
case forward_compat_behavior::RETRY_TXN:
86-
return "RETRY_TXN";
87-
case forward_compat_behavior::FAIL_FAST_TXN:
88-
return "FAIL_FAST_TRANSACTION";
89-
}
90-
return "unknown behavior";
91-
}
51+
auto
52+
forward_compat_behavior_name(forward_compat_behavior b) -> const char*;
9253

9354
struct forward_compat_supported {
9455
std::uint32_t protocol_major = 2;
9556
std::uint32_t protocol_minor = 0;
9657
std::list<std::string> extensions{
97-
"TI", "MO", "BM", "QU", "SD", "BF3787", "BF3705", "BF3838", "RC", "UA", "CO",
98-
"BF3791", "CM", "SI", "QC", "IX", "TS", "PU", "BS", "RP", "RX",
58+
"BF3705", // BF-CBD-3705
59+
"BF3787", // BF-CBD-3787
60+
"BF3791", // BF-CBD-3791
61+
"BF3838", // BF-CBD-3838
62+
"BM", // ExtBinaryMetadata
63+
"BS", // ExtBinarySupport
64+
"CM", // ExtCustomMetadataCollection
65+
"CO", // ExtAllKVCombinations
66+
"IX", // ExtInsertExisting
67+
"MO", // ExtMemoryOptUnstaging
68+
"PU", // ExtParallelUnstaging
69+
"QC", // ExtQueryContext
70+
"QU", // ExtQuery
71+
"RC", // ExtRemoveCompleted
72+
"RP", // ExtReplicaFromPreferredGroup
73+
"RX", // ExtReplaceBodyWithXattr
74+
"SD", // ExtStoreDurability
75+
"SI", // ExtSDKIntegration
76+
"TI", // ExtTransactionId
77+
"TS", // ExtThreadSafety
78+
"UA", // ExtUnknownATRStates
9979
};
10080
};
10181

10282
class transaction_operation_failed;
10383

104-
std::optional<transaction_operation_failed>
105-
check_forward_compat(forward_compat_stage stage, std::optional<tao::json::value> json);
84+
auto
85+
check_forward_compat(forward_compat_stage stage, std::optional<tao::json::value> json)
86+
-> std::optional<transaction_operation_failed>;
10687
} // namespace couchbase::core::transactions

0 commit comments

Comments
 (0)