For posterity, we discovered when connecting to NetSuite using the same credentials, that NetSuite allows a maximum of ten simultaneous requests under the same session. The amount of simultaneous requests that you can issue varies depending on your NetSuite license. If you exceed the number of simultaneous requests based on your license, you will start to receive WS_CONCUR_SESSION_DISALLWD errors from NetSuite on your SuiteTalk responses.
NetSuite apparently pools the session on their side based on the credentials that you provide. That means that this hard-limit of ten simultaneous requests spans across multiple orchestrations.
This means two things:
1) When connecting to NetSuite, you have to use a different set of credentials for each orchestration that you configure to support multiple instances.
2) You have to manually check the response of each and every NetSuite call (including searches) to ensure that the call completed successfully. Otherwise the orchestration will keep running and will mysteriously fail at a later point.
I hope that this helps somebody out in the future.
Pinned topic NetSuite Simultaneous Request Hard Limit
Answered question This question has been answered.
Unanswered question This question has not been answered yet.
Updated on 2012-03-02T22:01:48Z at 2012-03-02T22:01:48Z by GregWilhelm
GregWilhelm 270004PFWN6 Posts
Re: NetSuite Simultaneous Request Hard Limit2012-03-02T22:01:48ZThis is the accepted answer. This is the accepted answer.The response that I got from NetSuite regarding this issue is:
At this time, there is no way to disable this multi-threaded behaviour on the NetSuite end. As the documentation suggests, the Cast Iron application will have to retry the request if and when it encounters a WS_CONCUR_SESSION_DISALLWD error.
Their suggestion is to manually build in retry logic into every NetSuite SuiteTalk call made from Cast Iron (this functionality doesn't appear to be built-in). Seeing how some or our orchestrations have upwards of seven distinct NetSuite requests, we are just going to fail the orchestration at that point instead of trying to implement this with loops and sleeps on every call.