Fix up case where subscription is terminated due to ACLs changing or a snapshot restore occurring (#17566)
* Fix up case where subscription is terminated due to ACLs changing or a snapshot restore occurring * Add changelog entry * Switch to use errors.Is
This commit is contained in:
parent
0a21fb9cd8
commit
07831049be
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:bug
|
||||||
|
xds: Fixed a bug where modifying ACLs on a token being actively used for an xDS connection caused all xDS updates to fail.
|
||||||
|
```
|
|
@ -5,6 +5,7 @@ package proxycfgglue
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
|
|
||||||
"github.com/hashicorp/go-hclog"
|
"github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/go-memdb"
|
"github.com/hashicorp/go-memdb"
|
||||||
|
@ -141,6 +142,12 @@ func newUpdateEvent(correlationID string, result any, err error) proxycfg.Update
|
||||||
if acl.IsErrNotFound(err) {
|
if acl.IsErrNotFound(err) {
|
||||||
err = proxycfg.TerminalError(err)
|
err = proxycfg.TerminalError(err)
|
||||||
}
|
}
|
||||||
|
// these are also errors where we should mark them
|
||||||
|
// as terminal for the sake of proxycfg, since they require
|
||||||
|
// a resubscribe.
|
||||||
|
if errors.Is(err, stream.ErrSubForceClosed) || errors.Is(err, stream.ErrShuttingDown) {
|
||||||
|
err = proxycfg.TerminalError(err)
|
||||||
|
}
|
||||||
return proxycfg.UpdateEvent{
|
return proxycfg.UpdateEvent{
|
||||||
CorrelationID: correlationID,
|
CorrelationID: correlationID,
|
||||||
Result: result,
|
Result: result,
|
||||||
|
|
Loading…
Reference in New Issue