mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-03 11:45:18 +00:00
light: fix early erroring (#6905)
This commit is contained in:
@@ -239,7 +239,7 @@ func NewClientFromTrustedStore(
|
||||
}
|
||||
|
||||
// Validate the number of witnesses.
|
||||
if len(c.witnesses) < 1 {
|
||||
if len(c.witnesses) == 0 {
|
||||
return nil, ErrNoWitnesses
|
||||
}
|
||||
|
||||
@@ -1001,14 +1001,14 @@ func (c *Client) lightBlockFromPrimary(ctx context.Context, height int64) (*type
|
||||
|
||||
case provider.ErrNoResponse, provider.ErrLightBlockNotFound, provider.ErrHeightTooHigh:
|
||||
// we find a new witness to replace the primary
|
||||
c.logger.Debug("error from light block request from primary, replacing...",
|
||||
c.logger.Info("error from light block request from primary, replacing...",
|
||||
"error", err, "height", height, "primary", c.primary)
|
||||
return c.findNewPrimary(ctx, height, false)
|
||||
|
||||
default:
|
||||
// The light client has most likely received either provider.ErrUnreliableProvider or provider.ErrBadLightBlock
|
||||
// These errors mean that the light client should drop the primary and try with another provider instead
|
||||
c.logger.Error("error from light block request from primary, removing...",
|
||||
c.logger.Info("error from light block request from primary, removing...",
|
||||
"error", err, "height", height, "primary", c.primary)
|
||||
return c.findNewPrimary(ctx, height, true)
|
||||
}
|
||||
@@ -1046,7 +1046,7 @@ func (c *Client) findNewPrimary(ctx context.Context, height int64, remove bool)
|
||||
c.providerMutex.Lock()
|
||||
defer c.providerMutex.Unlock()
|
||||
|
||||
if len(c.witnesses) <= 1 {
|
||||
if len(c.witnesses) == 0 {
|
||||
return nil, ErrNoWitnesses
|
||||
}
|
||||
|
||||
@@ -1117,6 +1117,11 @@ func (c *Client) findNewPrimary(ctx context.Context, height int64, remove bool)
|
||||
}
|
||||
}
|
||||
|
||||
// remove witnesses marked as bad. Removal is done in descending order
|
||||
if err := c.removeWitnesses(witnessesToRemove); err != nil {
|
||||
c.logger.Error("failed to remove witnesses", "err", err, "witnessesToRemove", witnessesToRemove)
|
||||
}
|
||||
|
||||
return nil, lastError
|
||||
}
|
||||
|
||||
@@ -1129,7 +1134,7 @@ func (c *Client) compareFirstHeaderWithWitnesses(ctx context.Context, h *types.S
|
||||
c.providerMutex.Lock()
|
||||
defer c.providerMutex.Unlock()
|
||||
|
||||
if len(c.witnesses) < 1 {
|
||||
if len(c.witnesses) == 0 {
|
||||
return ErrNoWitnesses
|
||||
}
|
||||
|
||||
@@ -1171,7 +1176,7 @@ and remove witness. Otherwise, use the different primary`, e.WitnessIndex), "wit
|
||||
|
||||
// remove witnesses that have misbehaved
|
||||
if err := c.removeWitnesses(witnessesToRemove); err != nil {
|
||||
return err
|
||||
c.logger.Error("failed to remove witnesses", "err", err, "witnessesToRemove", witnessesToRemove)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user