-
Notifications
You must be signed in to change notification settings - Fork 5
/
errors.go
234 lines (180 loc) · 5.13 KB
/
errors.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
package gocbcorex
import (
"context"
"errors"
"fmt"
"strings"
)
var (
ErrParsingFailure = errors.New("parsing failure")
ErrInternalServerError = errors.New("internal server error")
ErrVbucketMapOutdated = errors.New("the vbucket map is out of date")
ErrCollectionManifestOutdated = errors.New("the collection manifest is out of date")
ErrServiceNotAvailable = errors.New("service is not available")
ErrRepeatedReplicaRead = errors.New("a replica has already been returned from this node")
)
type placeholderError struct {
Inner string
}
func (pe placeholderError) Error() string {
return pe.Inner
}
type CoreError struct {
InnerError error
Context string
}
func (e CoreError) Error() string {
return e.InnerError.Error()
}
type CollectionNotFoundError struct {
CoreError
ManifestUid uint64
}
func (e CollectionNotFoundError) Error() string {
return e.InnerError.Error()
}
type CollectionManifestOutdatedError struct {
Cause error
ManifestUid uint64
ServerManifestUid uint64
}
func (e CollectionManifestOutdatedError) Error() string {
return fmt.Sprintf("collection manifest outdated: our manifest uid: %d, server manifest uid: %d", e.ManifestUid, e.ServerManifestUid)
}
func (e CollectionManifestOutdatedError) Unwrap() error {
return ErrCollectionManifestOutdated
}
type VbucketMapOutdatedError struct {
Cause error
}
func (e VbucketMapOutdatedError) Error() string {
return "vbucket map outdated"
}
func (e VbucketMapOutdatedError) Unwrap() error {
return ErrVbucketMapOutdated
}
type contextualDeadline struct {
Message string
}
func (e contextualDeadline) Error() string {
return e.Message + ": " + context.DeadlineExceeded.Error()
}
func (e contextualDeadline) Unwrap() error {
return context.DeadlineExceeded
}
type retrierDeadlineError struct {
Cause error
RetryCause error
}
func (e retrierDeadlineError) Error() string {
if e.RetryCause != nil {
return fmt.Sprintf("timed out during retrying: %s (retry cause: %s)", e.Cause, e.RetryCause)
} else {
return fmt.Sprintf("timed out during retrying: %s", e.Cause)
}
}
func (e retrierDeadlineError) Unwrap() error {
return e.Cause
}
type illegalStateError struct {
Message string
}
func (e illegalStateError) Error() string {
return fmt.Sprintf("illegal state: %s", e.Message)
}
var ErrInvalidVbucket = errors.New("invalid vbucket")
type invalidVbucketError struct {
RequestedVbId uint16
NumVbuckets uint16
}
func (e invalidVbucketError) Error() string {
return fmt.Sprintf("invalid vbucket requested (%d >= %d)", e.RequestedVbId, e.NumVbuckets)
}
func (e invalidVbucketError) Unwrap() error {
return ErrInvalidVbucket
}
var ErrInvalidReplica = errors.New("invalid replica")
type invalidReplicaError struct {
RequestedReplica uint32
NumServers uint32
}
func (e invalidReplicaError) Error() string {
return fmt.Sprintf("invalid replica requested (%d >= %d)", e.RequestedReplica, e.NumServers)
}
func (e invalidReplicaError) Unwrap() error {
return ErrInvalidReplica
}
var ErrNoServerAssigned = errors.New("no server assigned to vbucket")
type noServerAssignedError struct {
RequestedVbId uint16
}
func (e noServerAssignedError) Error() string {
return fmt.Sprintf("vbucket %d has no assigned server", e.RequestedVbId)
}
func (e noServerAssignedError) Unwrap() error {
return ErrNoServerAssigned
}
var ErrInvalidArgument = errors.New("invalid argument")
var ErrBootstrapAllFailed = errors.New("all bootstrap hosts failed")
type BootstrapAllFailedError struct {
Errors map[string]error
}
func (e BootstrapAllFailedError) Error() string {
var errStrs []string
for endpoint, err := range e.Errors {
errStrs = append(errStrs, fmt.Sprintf("%s: {%s}", endpoint, err.Error()))
}
return fmt.Sprintf("all bootstrap hosts failed (%s)", strings.Join(errStrs, ", "))
}
func (e BootstrapAllFailedError) Unwrap() error {
return ErrBootstrapAllFailed
}
type contextualError struct {
Message string
Cause error
}
func (e contextualError) Error() string {
return fmt.Sprintf("%s: %s", e.Message, e.Cause.Error())
}
func (e contextualError) Unwrap() error {
return e.Cause
}
type serviceNotAvailableError struct {
Service ServiceType
}
func (e serviceNotAvailableError) Error() string {
return strings.ToLower(e.Service.String()) + " service not available"
}
func (e serviceNotAvailableError) Unwrap() error {
return ErrServiceNotAvailable
}
type PathProjectionError struct {
Path string
Cause error
}
func (e PathProjectionError) Error() string {
return fmt.Sprintf("%s (path: %s)", e.Cause, e.Path)
}
func (e PathProjectionError) Unwrap() error {
return e.Cause
}
type KvBucketError struct {
Cause error
BucketName string
}
func (e KvBucketError) Error() string {
return fmt.Sprintf("%s (bucket: %s)", e.Cause, e.BucketName)
}
func (e KvBucketError) Unwrap() error {
return e.Cause
}
type RetryOrchestrationError struct {
Cause error
OriginalCause error
}
func (e RetryOrchestrationError) Error() string {
return fmt.Sprintf("error occured deciding whether to retry operation: %s (original error: %s)", e.Cause, e.OriginalCause)
}
func (e RetryOrchestrationError) Unwrap() error {
return e.Cause
}