YugabyteDB (2.13.1.0-b60, 21121d69985fbf76aa6958d8f04a9bfa936293b5)

Coverage Report

Created: 2022-03-22 16:43

/Users/deen/code/yugabyte-db/src/yb/client/client_error.cc
Line
Count
Source (jump to first uncovered line)
1
// Copyright (c) YugaByte, Inc.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
4
// in compliance with the License.  You may obtain a copy of the License at
5
//
6
// http://www.apache.org/licenses/LICENSE-2.0
7
//
8
// Unless required by applicable law or agreed to in writing, software distributed under the License
9
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
10
// or implied.  See the License for the specific language governing permissions and limitations
11
// under the License.
12
//
13
14
#include "yb/client/client_error.h"
15
16
namespace yb {
17
namespace client {
18
19
const std::string kClientErrorCategoryName = "client error";
20
21
StatusCategoryRegisterer client_error_category_registerer(
22
    StatusCategoryDescription::Make<ClientErrorTag>(&kClientErrorCategoryName));
23
24
1.17M
bool IsRetryableClientError(const Status& s) {
25
1.17M
  if (s.ok()) {
26
0
    return false;
27
0
  }
28
1.17M
  switch (ClientError(s).value()) {
29
1.17M
    case ClientErrorCode::kNone:
30
1.17M
    case ClientErrorCode::kTablePartitionListVersionDoesNotMatch:
31
      // This error can't be retried at YBClient/YBSession level, because YBClient/YBSession caller
32
      // used knowledge about table partitions for preparing set of YBOperation instances.
33
      // However, when the partition list version does not match, it means that the tablet has
34
      // been split and each of child tablets is only serving the part of the original tablet key
35
      // range.
36
      // Upper layers might need to know the updated partition list to rebuild YBOperation instances
37
      // again to cover desired key range.
38
1.17M
      return false;
39
2.01k
    case ClientErrorCode::kTablePartitionListIsStale:
40
2.01k
    case ClientErrorCode::kExpiredRequestToBeRetried:
41
2.01k
    case ClientErrorCode::kTabletNotYetRunning:
42
2.01k
    case ClientErrorCode::kMetaCacheInvalidated:
43
2.01k
      return true;
44
1.17M
  }
45
0
  FATAL_INVALID_ENUM_VALUE(ClientErrorCode, ClientError(s).value());
46
0
}
47
48
} // namespace client
49
} // namespace yb