Couchbase C++ SDK 1.0.2 (rev. 51f4775)
Loading...
Searching...
No Matches
retry_reason.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright 2020-Present Couchbase, Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#pragma once
19
21
22#include <fmt/core.h>
23
30template<>
31struct fmt::formatter<couchbase::retry_reason> {
32 template<typename ParseContext>
33 constexpr auto parse(ParseContext& ctx)
34 {
35 return ctx.begin();
36 }
37
38 template<typename FormatContext>
39 auto format(couchbase::retry_reason reason, FormatContext& ctx) const
40 {
41 string_view name = "unknown";
42 switch (reason) {
44 name = "do_not_retry";
45 break;
47 name = "unknown";
48 break;
50 name = "socket_not_available";
51 break;
53 name = "service_not_available";
54 break;
56 name = "node_not_available";
57 break;
59 name = "kv_not_my_vbucket";
60 break;
62 name = "kv_collection_outdated";
63 break;
65 name = "kv_error_map_retry_indicated";
66 break;
68 name = "kv_locked";
69 break;
71 name = "kv_temporary_failure";
72 break;
74 name = "kv_sync_write_in_progress";
75 break;
77 name = "kv_sync_write_re_commit_in_progress";
78 break;
80 name = "service_response_code_indicated";
81 break;
83 name = "socket_closed_while_in_flight";
84 break;
86 name = "circuit_breaker_open";
87 break;
89 name = "query_prepared_statement_failure";
90 break;
92 name = "query_index_not_found";
93 break;
95 name = "analytics_temporary_failure";
96 break;
98 name = "search_too_many_requests";
99 break;
101 name = "views_temporary_failure";
102 break;
104 name = "views_no_active_partition";
105 break;
106 }
107 return format_to(ctx.out(), "{}", name);
108 }
109};
Represents a single item from the result of collection::scan()
Definition allow_querying_search_index_options.hxx:28
retry_reason
Enumeration of possible retry reasons for operations.
Definition retry_reason.hxx:28
@ service_not_available
The service on a node (i.e.
@ node_not_available
The node where the operation is supposed to be dispatched to is not available.
@ socket_not_available
The socket is not available into which the operation should’ve been written.
@ key_value_error_map_retry_indicated
An unknown response was returned and the consulted KV error map indicated a retry.
@ key_value_not_my_vbucket
A not my vbucket response has been received.
@ socket_closed_while_in_flight
While an operation was in-flight, the underlying socket has been closed.
@ unknown
All unexpected/unknown retry errors must not be retried to avoid accidental data loss and non-determi...
@ key_value_collection_outdated
A KV response has been received which signals an outdated collection.
@ do_not_retry
default value, e.g.
@ circuit_breaker_open
The circuit breaker is open for the given socket/endpoint and as a result the operation is not sent i...
auto format(couchbase::retry_reason reason, FormatContext &ctx) const
Definition retry_reason.hxx:39
constexpr auto parse(ParseContext &ctx)
Definition retry_reason.hxx:33