Expose copy default transient error list#3903
Expose copy default transient error list#3903MatthiasHuygelen wants to merge 11 commits intodotnet:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR exposes the previously private default transient error list as a public property to address issue #2342, allowing consumers to extend the error code list without needing to copy/paste the base set from the repository.
Changes:
- Adds a new public property
DefaultTransientErrorstoSqlConfigurableRetryFactorythat returns a read-only copy of the default transient error list - Removes duplicated error list from test helper class
RetryLogicTestHelperand migrates to use the new public API - Adds XML documentation for the new public property and documents additional error codes (64, 20, 0, -2, 207, 18456, 42108, 42109)
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs | Adds public DefaultTransientErrors property that returns a ReadOnlyCollection<int> copy of the private transient error list; adds missing error codes to the private list |
| src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/RetryLogic/RetryLogicTestHelper.cs | Removes duplicated private error list and updates code to reference the new public SqlConfigurableRetryFactory.DefaultTransientErrors property |
| doc/snippets/Microsoft.Data.SqlClient/SqlConfigurableRetryFactory.xml | Adds XML documentation for the new property and documents the previously undocumented error codes |
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
@dotnet-policy-service agree |
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
paulmedynski
left a comment
There was a problem hiding this comment.
Thanks for the submission. The team will need to discuss the public API changes, and I have one implementation suggestion.
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
doc/snippets/Microsoft.Data.SqlClient/SqlConfigurableRetryFactory.xml
Outdated
Show resolved
Hide resolved
src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.cs
Outdated
Show resolved
Hide resolved
src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.cs
Outdated
Show resolved
Hide resolved
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
doc/snippets/Microsoft.Data.SqlClient/SqlConfigurableRetryFactory.xml
Outdated
Show resolved
Hide resolved
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/RetryLogic/RetryLogicTestHelper.cs
Outdated
Show resolved
Hide resolved
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Outdated
Show resolved
Hide resolved
|
@paulmedynski I also considered Open to other suggestions, too. |
@paulmedynski So what should I do? |
|
|
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
paulmedynski
left a comment
There was a problem hiding this comment.
Thanks for making the changes I requested. A few small tweaks left.
|
@MatthiasHuygelen - I broke PR pipeline runs for forked repos with #3928, and #3950 should fix it. Once that merges, can you rebase/merge main? Then I will kick off the PR pipeline runs. |
|
@MatthiasHuygelen - Can you merge/rebase main? #3950 has been merged and should fix the pipeline issues we're seeing here. |
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
doc/snippets/Microsoft.Data.SqlClient/SqlConfigurableRetryFactory.xml:126
- The
<exception cref="T:System.ArgumentNullException">text uses Markdown-style backticks around the parameter name (retryLogicOption). For consistency with the rest of the XML docs (and to ensure tooling formats it correctly), this should use<paramref name="retryLogicOption" />instead of backticks.
<exception cref="T:System.ArgumentNullException">
If the `retryLogicOption` parameter was null.
</exception>
...osoft.Data.SqlClient/src/Microsoft/Data/SqlClient/Reliability/SqlConfigurableRetryFactory.cs
Show resolved
Hide resolved
| The following table shows the inner transient error list. | ||
| </para> |
There was a problem hiding this comment.
BaselineTransientErrors docs say “inner transient error list”, but this is now a public baseline list meant for reuse by applications. Consider renaming this text to “baseline/default transient error list” (and, if relevant, mention that callers should treat it as a baseline to copy/extend rather than a stable contract).
| The following table shows the inner transient error list. | |
| </para> | |
| The following table shows the baseline/default transient error list used by the built-in retry providers. | |
| </para> | |
| <para> | |
| Callers should treat this list as a starting point to copy and extend for their own retry logic, rather than as a stable contract that will remain unchanged. | |
| </para> |
Description
The default set of transient error codes is private. This seems to make it difficult to extend error codes without copy/pasting the base set from this repository. So we expose a copy.
Issues
#2342