-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* No queued retry on bad data Allows the queued-retry to identify permanent errors from the consumer attached to it. This way it can safely drop batches of data data without burdening the system with retries. * Move errorkind package and use require package in tests
- Loading branch information
Paulo Janotti
authored
Jul 3, 2019
1 parent
886e62f
commit 31d6389
Showing
9 changed files
with
200 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
// Copyright 2019, OpenTelemetry Authors | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
// Package errorkind provides wrappers to easily classify errors. This allows | ||
// appropriate action by error handlers without the need to know each individual | ||
// error type/instance. | ||
package errorkind | ||
|
||
// permanent is an error that will be always returned if its source | ||
// receives the same inputs. | ||
type permanent struct { | ||
error | ||
} | ||
|
||
// Permanent wraps an error to indicate that it is a permanent error, i.e.: an | ||
// error that will be always returned if its source receives the same inputs. | ||
func Permanent(err error) error { | ||
return permanent{err} | ||
} | ||
|
||
// IsPermanent checks if an error was wrapped with the Permanent function, that | ||
// is used to indicate that a given error will always be returned in the case | ||
// that its sources receives the same input. | ||
func IsPermanent(err error) bool { | ||
if err != nil { | ||
_, isPermanent := err.(permanent) | ||
return isPermanent | ||
} | ||
return false | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
// Copyright 2019, OpenTelemetry Authors | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
// Package errorkind provides wrappers to easily classify errors, allowing | ||
// appropriate action by error handlers without need to know each individual | ||
// error type/instance. | ||
package errorkind | ||
|
||
import ( | ||
"errors" | ||
"testing" | ||
) | ||
|
||
func TestPermanent(t *testing.T) { | ||
err := errors.New("testError") | ||
if IsPermanent(err) { | ||
t.Fatalf("IsPermanent() = true, want false") | ||
} | ||
err = Permanent(err) | ||
if !IsPermanent(err) { | ||
t.Fatalf("IsPermanent() = false, want true") | ||
} | ||
} | ||
|
||
func TestIsPermanent_NilError(t *testing.T) { | ||
var err error | ||
if IsPermanent(err) { | ||
t.Fatalf("IsPermanent() = true, want false") | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters