You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ShardFailure.IsTransient: whether a shard's failure is expected to clear on its own. (#1016, for JasperFx/wolverine#4986)
ShardFailure.For sets it from the exception graph, through the new TransientFailures.IsTransient(Exception). The failure is transient when anything in the inner exceptions or an AggregateException is one of these:
a DbException that reports IsTransient;
a TimeoutException;
a SocketException;
an IOException that isn't a file system one.
Supervisors can use it to restart a paused shard only when waiting will help. That covers a pool exhausted during a large rebuild, but not a missing column. ShardFailureCategory.Other alone can't tell those two apart.
It's a flag next to Category, not a new category, so nothing that switches on the category changes. A failure serialized before this release reads back as false.
TransientFailures.AddClassifier(Func<Exception, bool?>) is for a driver whose own IsTransient is weak. Probes against each store's pinned driver:
Npgsql 9.0.4 classifies correctly. Pool exhausted, timeouts and 57P01 are transient; 42703 is not.
Microsoft.Data.SqlClient 7.0.0 and Microsoft.Data.Sqlite 10.0.9 don't override IsTransient at all. Polecat and Fisher should each add a classifier.
Label only. It doesn't change the daemon's retry decisions, and it isn't persisted to the extended progression row.