-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compat Documentation for DevDiv 258978 #649
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've left a number of suggested changes, @jimcarley, and I've also changed the first references to TransactionCancel and TransactionTerminate so that they'll be resolved as links after migration to dotnet/docs.
NotPlanned | ||
|
||
### Change Description | ||
Under some circumstances when using <xref:System.ServiceModel.Activities.IWorkflowInstanceManagement.TransactedCancel%2A?displayProperty=nameWithType> or <xref:System.ServiceModel.Activities.IWorkflowInstanceManagement.TransactedTerminate%2A?displayProperty=nameWithType> feature to Cancel or Terminate a worklow service instance, it is possible to cause that workflow instance to encounter a stack overflow due to endless recursion when trying to persist itself as part of processing the request. The problem occurs if the workflow instance is in a state where it is waiting for some other outstanding WCF request to another service to complete. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
using --> using the
instead of feature, APIs might be a better choice
Cancel and Terminate should be lowercased
it is possible to case that workflow instance to --> the workflow instance may
### Change Description | ||
Under some circumstances when using <xref:System.ServiceModel.Activities.IWorkflowInstanceManagement.TransactedCancel%2A?displayProperty=nameWithType> or <xref:System.ServiceModel.Activities.IWorkflowInstanceManagement.TransactedTerminate%2A?displayProperty=nameWithType> feature to Cancel or Terminate a worklow service instance, it is possible to cause that workflow instance to encounter a stack overflow due to endless recursion when trying to persist itself as part of processing the request. The problem occurs if the workflow instance is in a state where it is waiting for some other outstanding WCF request to another service to complete. | ||
|
||
The TransactedCancel and TransactedTerminate operations create "work items" that are queued up for the workflow service instance. These "work items" are not executed as part of the processing of the TransactedCancel/TransactedTerminate request. Because the workflow service instance is busy waiting for the other outstanding WCF request to complete, the work item created remains queued. The TransactedCancel/TransactedTerminate operation completes and control is returned back to the client. When the transaction associated with the TransactedCancel/TransactedTerminate operations attempts to commit, it needs to persist the workflow serivce instance state. But because there is an outstanding WCF request for the instance, we cannot persist, and an endless recursion loop occurs leading to the stack overflow. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TransactedCancel and TransactedTerminate should be fenced (e.g., `TransactedCancel`) so they don't become localized here and throughout.
no need for quotation marks around work items here or elsewhere
queued up --> queued
operations attempts --> operation attempts
we cannot persist --> it would be better to phrase this in a way that doesn't involve "we", and that has a direct object; perhaps "WF cannot persist the instance state, and..."
occurs leading --> leads
|
||
The TransactedCancel and TransactedTerminate operations create "work items" that are queued up for the workflow service instance. These "work items" are not executed as part of the processing of the TransactedCancel/TransactedTerminate request. Because the workflow service instance is busy waiting for the other outstanding WCF request to complete, the work item created remains queued. The TransactedCancel/TransactedTerminate operation completes and control is returned back to the client. When the transaction associated with the TransactedCancel/TransactedTerminate operations attempts to commit, it needs to persist the workflow serivce instance state. But because there is an outstanding WCF request for the instance, we cannot persist, and an endless recursion loop occurs leading to the stack overflow. | ||
|
||
Because TransactedCancel and TransactedTerminate only create a "work item" in memory, the fact that a transaction exists doesn't have any effect. A rollback of the transaction does not cause the work item to be discarded. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cause the work item to be discarded --> discard the work item.
|
||
Because TransactedCancel and TransactedTerminate only create a "work item" in memory, the fact that a transaction exists doesn't have any effect. A rollback of the transaction does not cause the work item to be discarded. | ||
|
||
Therefore we have introduced an AppSetting which can be added to the Web.Config/App.Config of the workflow service that tells it to ignore transactions for TransactedCancel and TransactedTerminate. This allows the transaction to commit without waiting for the workflow instance to persist. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Therefore --> To address this issue, starting with .NET Framework 4.7.2,
|
||
Therefore we have introduced an AppSetting which can be added to the Web.Config/App.Config of the workflow service that tells it to ignore transactions for TransactedCancel and TransactedTerminate. This allows the transaction to commit without waiting for the workflow instance to persist. | ||
|
||
The AppSetting for this feature is named "microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate". A value of "true" indicates that the transaction should be ignored, thus avoiding the stack overflow. The default value of this AppSetting is "false", so existing workflow service instances are not affected. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
instead of using quotes for the app setting, it should be fenced. So should true and false.
### Recommended Action | ||
If you are using AppFabric or another <xref:System.ServiceModel.Activities.IWorkflowInstanceManagement> client and are encountering a stack overflow in the workflow serivce instance when trying to cancel or terminate a workflow instance, you can add the following to the <appSettings> section of the web.config/app.config for the workflow service: | ||
|
||
<add key="microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate" value="true"/> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do this as:
<add key="microsoft:WorkflowServices:IgnoreTransactionsForTransactedCancelAndTransactedTerminate" value="true"/>
I have made the changes suggested by @rpetrusha, as well as a few others. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for making the changes, @jimcarley. I'll merge this PR. Then, because it was opened in master rather than net472, I'll open new PRs to add it to the net472 branch and remove it from the master branch.
* Corrected category to remove duplication, generated readme (#542) * Fixed bad links (#543) * Making relative link use home operation (#544) * Link fixes (#545) * fixed xrefs and links * reverted change * Update the issue with the list of types potentially impacted (#538) * Update the issue with the list of types potentially impacted * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md (#546) * Add Neutronium reference (#547) * Adding Neutronium link * As by PR * Create 521954 - BCL CultureAwareComparer with ignore casing on serial… (#553) * Create 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update known issues for #521954 * Update 521954 - BCL CultureAwareComparer with ignore casing on serial… (#555) * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md (#558) LGTM * Update 521954 - BCL CultureAwareComparer with ignore casing on serialized on previous versions of .NET do not correctly deserialize on .NET 4.7.1.md * Typo fix (#554) * Add known issue for 523633 (#559) * Add known issue for 523633 * Add known issue for 523633 * Fixes for review comments for 523633 * Fixes for review comments for 523633 * Changes so content syncs with PR #3686 in dotnet/docs (#561) * Added Core WF and Orleans.Activities (#562) * Update platforms.json Update .NET Core entries to include the November Update release. * Added release notes for 6.0.2 * Update README.md * Update README.md * Update README.md * Adding Known Issue for the 471 stack trace perf issue (#567) * Adding Known Issue for the 471 stack trace perf issue * Incorporated review comments * Update dotnet471-known-issues.md * Add ServicetStack to frameworks list (#574) Adding in link to the ServiceStack web framework (which I am not involved with or a representative of, but that I use and have contributed minor tweaks to) * Miscellanous formatting fixes (#573) * Miscellanous formatting fixes * Corrected quirked/build time break sections * 2.0.2 release notes * 1.7.2 release notes * readability fixes * Resolving PR feedback * Resolving PR feedback * Resolving PR feedback * Converted asset IDs to xrefs, corrected formatting (#581) * Add .NET 4.7.1 Networking known issue 534719 (#580) * Add .NET 4.7.1 Networking known issue 534719 Add known issue document for bug 534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly. * Addressed PR feedback * Removed duplicate words (#583) * Add release notes for UWP 6.0.5 * Add more consistency to net-native1.7 readme * Replaced unprintable characters. (#586) * Fixed links broken in dotnet/docs (#588) * Updated the readme with the 5.2.4 release. * Updated README with the 5.3.5 release * Updated the README with the 5.4.2 release * Updated README with 6.0.6 release. * Added the link for ZDP update for Known Issues fixed by it. (#595) * Added the link for ZDP update for Known Issues fixed by it. * Added platform information * Added Switch.System.Net.DontEnableSystemDefaultTlsVersions AppContext switch (#603) * Replaced MSDN link with link to docs.microsoft.com * Corrected typos * Added Switch.System.Net.DontEnableSystemDefaultTlsVersions switch * Clarify Portable PDB feature disabled in 4.7.1 (#606) * Update guidance for Portable PDB in 4.7.1 (#607) * Update guidance for Portable PDB in 4.7.1 * Address review feedback * More review feedback * Added new known issue for 517815-BCL * Add known issue for 470006 - GC large object crashes Added a known issue, written by Chris Ahna, about GC crashes when we have a high rate of large object allocations and frees. * Updated to include proposed changes from review * Updated to incorporate feedback * fixed formatting (#614) * fixed formatting (hopefully) * Fixed links broken after migration * Documented two .NET Framework 4.6 app compat switches (#615) * Documented DontEnableSchSendAuxRecord switch * added note * added second switch * Finished documenting switches * Added readme * Fixed formatting issues * Adding additional fix info (#616) * Adding additional fix info Adding info for the Fall Creators Update patch * Update 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md * Update 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md Fixing links (copy/pasting doesn't format them correctly) * Update 517815-BCL Applications making heavy use of System.Diagnostics.StackTrace might run more slowly on .NET 4.7.1.md Minor changes * Update .NET UWP release notes for 6.0.7 release * fixed based on feedback. * Fix inline code span (#618) * Fix inline code ' -> ` * Update wpf-selector-crash-when-removing-item-from-custom-collection.md * Fixed formatting of opening XML tag (#622) * Update known issue 517815-BCL Stack traces are missing source information (#623) * Update 517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md Add the portable PDB conversion tool as a workaround now that it is better documented how to use it. * Update 517815-BCL Stack traces are missing source information for frames with debug information in the Portable PDB format.md PR feedback * Assorted changes (#625) * Assorted changes * Removed remaining occurences of 'en-us' * Removed comments (#628) * Fix compat doc links (#632) * ~/docsframework -> ~/docs/framework * fix bookmark: #Networking.md -> #Networking * fix bookmark: #mitigation.md -> #mitigation * Fixing index.md URI (#633) * Corrected language tags, formatting issue (#637) * Add compatibility documentation for Unicode bidirectional character fix. (#636) * Add draft documentation for Unicode bidirectional character fix. * Clarify that unencoded bidi control characters will be encoded. * Address feedback. * removed app compat issue for 472 branch (#640) * Correct docs site bookmarks (#634) * Misc issues (#644) * Miscellaneous formatting and link changes * Proper usage of .NET Framework * Removed 'please' * Fix typo (#646) * Changed docs.microsoft.com/dotnet URLs to relative URLs (#645) * Changed docs.microsoft.com/dotnet URLs to relative URLs * removed trailing spaces, added </p> and </br> HTML tags * Updated with release notes for 6.0.8 * Added new projects (#647) * Added new projects Added a new web framework, 2 new libraries and a project template * Fixed some typos * Remove Google Apps for Work (#648) Google Apps for Work was rebranded G Suite. However, you can just say Gmail instead of G Suite Gmail. * Added categories list (#650) * Update 510901-BCL Apps targeting .NET-4.6.1 that use .NET Standard libraries might be broken when running on .NET 4.7.1.md Added link for Windows 10 Fall Creators Update fix * Compat Documentation for DevDiv 258978 (#649) * Create WF-258978.md * Update WF-258978.md * Update WF-258978.md * Update WF-258978.md * Update WF-258978.md * Update WF-258978.md * Update WF-258978.md * Update WF-258978.md * Created links to APIs * Update WF-258978.md * Unfenced some text * Deleting to move file to net472 branch (#653) * Update Early Access Info (#642) * Update Early Access Info Updated early access version and removed old release notes link. * Updated per requested changes * Update 523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md * Update 534719-Networking ServicePoint.ConnectionLimit default behavio… (#664) * Update 534719-Networking ServicePoint.ConnectionLimit default behavior with loopback changed unexpectedly.md * Update known issue 534719 to describe broader impact * Simplified syntax (#672) * Create 553390 - BCL - SGEN crashes because it references System.IO.Co… (#670) * Create 553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md * Update 553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md * Update 553390 - BCL - SGEN crashes because it references System.IO.Compression.ZipFile.dll.md * Update dotnet471-known-issues.md * re-add ASPNET472CompatDoc (#668) * re-add ASPNET472CompatDoc * Minor edits, added links. * Minor changes, added links. * Changed targeted version, removed reverted section * Deletion to move file to 472 branch (#675) * Adding known issue about 12 shims when targeting 4.7.1 (#677) * Adding known issue about 12 shims when targeting 4.7.1 * PR Feedback * PR Feedback * PR Feedback * Feedback * Added Visual Studio reference (#681) * Added Visual Studio reference * Update 523633 - Setup - OS upgrade to Windows 10 gets the product in bad state.md * Fixed broken links (#683) * Added line breaks, fixed other formatting issues (#684) * Added line breaks, other formatting changes (#685) * Added line breaks, other formatting changes * additional formatting change * Add Flubu to .NET Open Source Developer Projects (#690) * Update dotnet-developer-projects.md * Update dotnet-developer-projects.md
No description provided.