Hi,
I have an orchestration "GetConfigData" which is used to read some
configuration data from the database. The orchestration has two
parameters:
parConfigKey and parConfigValue which is output param.
When this orchestration is called (using Call shape) from two or more
orchestrations running simultaneously in some cases parConfigDataKey is
returned which does not match the expected value.
To solve this problem I implemented a simple test orchestration
"TestGetConfigData" which has 2 input parameters: parKey and
parExpectedValue. The orchestration inside an infinite loop creates a
request
message (containing parConfigKey), sends it to request-resonse ****t
(associated with SQL adapter) and validates if an attribute ConfigValue
received in response is equal to parExpectedValue (if validation fails the
orchestration suspends). During every run of the loop the following
information is logged into a logfile parConfigKey, request message,
response
message (every instance of TestGetConfigData has its own log file).
Next I created an orchestration which creates two instances of
"TestGetConfigData" by using two StartOrchestration shapes.
When I started an application both instances of "TestGetConfigData" were
suspended after few seconds. When I analyzed the log files I found that
(after some time) one of orchestrations received a response which should
be
delivered to the other and vice versa.
Here are two log files:
Instance 1 (parameters: parKey= "DEBUG_MODE", parExpectedValue = "true")
- <Log>
- <!-- Started orchestration:
parKey:DEBUG_MODE
{**********************************}
varCounter:0
parKey: (1)DEBUG_MODE
parKey: (2)DEBUG_MODE
request:<ns0:GetConfigDataOpRootReq
xmlns:ns0="http://And.Order****tal.Schemas.Internal.SQL"><ns0:OP_BTS_ConfigDataGet
Key="DEBUG_MODE" /></ns0:GetConfigDataOpRootReq>
varKey: (3)DEBUG_MODE
response:<GetConfigDataOpRootResp
xmlns="http://And.Order****tal.Schemas.Internal.SQL"><row
Value="true"
/></GetConfigDataOpRootResp>
varVal1:true
*************************************
varCounter:1
parKey: (1)DEBUG_MODE
parKey: (2)DEBUG_MODE
request:<ns0:GetConfigDataOpRootReq
xmlns:ns0="http://And.Order****tal.Schemas.Internal.SQL"><ns0:OP_BTS_ConfigDataGet
Key="DEBUG_MODE" /></ns0:GetConfigDataOpRootReq>
parKey: (3)DEBUG_MODE
response:<GetConfigDataOpRootResp
xmlns="http://And.Order****tal.Schemas.Internal.SQL"><row
Value="true"
/></GetConfigDataOpRootResp>
varVal1:true
*************************************
varCounter:2
parKey: (1)DEBUG_MODE
parKey: (2)DEBUG_MODE
request:<ns0:GetConfigDataOpRootReq
xmlns:ns0="http://And.Order****tal.Schemas.Internal.SQL"><ns0:OP_BTS_ConfigDataGet
Key="DEBUG_MODE" /></ns0:GetConfigDataOpRootReq>
parKey: (3)DEBUG_MODE
response:<GetConfigDataOpRootResp
xmlns="http://And.Order****tal.Schemas.Internal.SQL"><row
Value="true"
/></GetConfigDataOpRootResp>
varVal1:true
*************************************
varCounter:3
parKey: (1)DEBUG_MODE
parKey: (2)DEBUG_MODE
request:<ns0:GetConfigDataOpRootReq
xmlns:ns0="http://And.Order****tal.Schemas.Internal.SQL"><ns0:OP_BTS_ConfigDataGet
Key="DEBUG_MODE" /></ns0:GetConfigDataOpRootReq>
varKey: (3)DEBUG_MODE
response:<GetConfigDataOpRootResp
xmlns="http://And.Order****tal.Schemas.Internal.SQL"><row
Value="true"
/></GetConfigDataOpRootResp>
varVal1:true
*************************************
varCounter:4
parKey: (1)DEBUG_MODE
parKey: (2)DEBUG_MODE
request:<ns0:GetConfigDataOpRootReq
xmlns:ns0="http://And.Order****tal.Schemas.Internal.SQL"><ns0:OP_BTS_ConfigDataGet
Key="DEBUG_MODE" /></ns0:GetConfigDataOpRootReq>
parKey: (3)DEBUG_MODE
response:<GetConfigDataOpRootResp
xmlns="http://And.Order****tal.Schemas.Internal.SQL"><row
Value="3"
/></GetConfigDataOpRootResp>
varVal1:3
-->
</Log>
Instance 2 (parameters: parKey= "REPEATER_RETRIES_COUNT", parExpectedValue
=
"3")
- <Log>
- <!-- Started orchestration:
parKey:REPEATER_RETRIES_COUNT
{**********************************}
varCounter:0
varKey: (1)REPEATER_RETRIES_COUNT
varKey: (2)REPEATER_RETRIES_COUNT
request:<ns0:GetConfigDataOpRootReq
xmlns:ns0="http://And.Order****tal.Schemas.Internal.SQL"><ns0:OP_BTS_ConfigDataGet
Key="REPEATER_RETRIES_COUNT" /></ns0:GetConfigDataOpRootReq>
varKey: (3)REPEATER_RETRIES_COUNT
response:<GetConfigDataOpRootResp
xmlns="http://And.Order****tal.Schemas.Internal.SQL"><row
Value="3"
/></GetConfigDataOpRootResp>
varVal1:3
*************************************
varCounter:1
varKey: (1)REPEATER_RETRIES_COUNT
varKey: (2)REPEATER_RETRIES_COUNT
request:<ns0:GetConfigDataOpRootReq
xmlns:ns0="http://And.Order****tal.Schemas.Internal.SQL"><ns0:OP_BTS_ConfigDataGet
Key="REPEATER_RETRIES_COUNT" /></ns0:GetConfigDataOpRootReq>
varKey: (3)REPEATER_RETRIES_COUNT
response:<GetConfigDataOpRootResp
xmlns="http://And.Order****tal.Schemas.Internal.SQL"><row
Value="3"
/></GetConfigDataOpRootResp>
varVal1:3
*************************************
varCounter:2
varKey: (1)REPEATER_RETRIES_COUNT
varKey: (2)REPEATER_RETRIES_COUNT
request:<ns0:GetConfigDataOpRootReq
xmlns:ns0="http://And.Order****tal.Schemas.Internal.SQL"><ns0:OP_BTS_ConfigDataGet
Key="REPEATER_RETRIES_COUNT" /></ns0:GetConfigDataOpRootReq>
varKey: (3)REPEATER_RETRIES_COUNT
response:<GetConfigDataOpRootResp
xmlns="http://And.Order****tal.Schemas.Internal.SQL"><row
Value="true"
/></GetConfigDataOpRootResp>
varVal1:true
-->
</Log>
I tested it on three machines and on every machine the result is the same.
Had someone the similar problem?
Thanks for your help
Regards,
Pawel G