Hello, I wrote a non realtime C# program including a dataLayer interface. This program provides and subscribes data. The variables master-state-machine/value and master-state-machine/state are provided and written by the non realtime C# application and read by multiple realtime applications. The variables, that are subscribed by the non realtime C# application, are provided and written by multiple realtime applications. During startup all connections are established and the variables are created. Log messages: ctrlX Data Layer system started. ctrlX Data Layer client created. ctrlX Data Layer provider created. Successfully created node 'master-state-machine/value' Successfully created node 'master-state-machine/state' Afterwards the variables are written in irregular intervals. Log messages: OnWrite master-state-machine/value: 2 Execute State2 Change state from State2 to State3 OnWrite master-state-machine/value: 1 OnWrite master-state-machine/state: 3 After some time, these async write operations take longer than 10 seconds. These long operations will be registered as timeouts by my application, since a write operations should not take 10 seconds. Log messages: Execute State6 Change state from State6 to State7 Write value 7 to master-state-machine/state timed out. Wait execute State7 Execute State7 Change state from State7 to State8 Write value 1 to master-state-machine/value timed out. Wait execute State7 Write value 7 to master-state-machine/state timed out. Write value 7 to master-state-machine/state timed out. Execute State7 After some time it seems, that all these operations go through at once. Log messages: Change state from State7 to State8 OnWrite master-state-machine/state: 7 OnWrite master-state-machine/value: 1 OnWrite master-state-machine/state: 7 OnWrite master-state-machine/state: 7 After that the application runs smoothly for some time. Then these "timeouts" reappear and cause a bunch of failed results. Log messages: Execute State9 OnWrite master-state-machine/state: 9 Write value 1 to master-state-machine/value timed out. Write value 9 to master-state-machine/state timed out. Wait execute State9 Execute State9 Write value 1 to master-state-machine/value failed. Result: System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[Datalayer.IClientAsyncResult,Datalayer.Internal.Client+<WriteAsync>d__56]. Write value 9 to master-state-machine/state failed. Result: System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[Datalayer.IClientAsyncResult,Datalayer.Internal.Client+<WriteAsync>d__56]. Wait execute State9 Execute State9 These AsyncTaskMethodBuilder messages occur about 10 times. Afterwards the application runs smoothly for a short time. Then all subscriptions send a DL_TIMEOUT for every subscribed value. Log messages: Failed subscription change in Provider V1. Result: DL_TIMEOUT Failed subscription change in Provider V2. Result: DL_TIMEOUT Failed subscription change in Provider V3. Result: DL_TIMEOUT Failed subscription change in ConditionHandler V1. Result: DL_TIMEOUT Failed subscription change in ConditionHandler V2. Result: DL_TIMEOUT Failed subscription change in ConditionHandler V3. Result: DL_TIMEOUT Failed subscription change in ConditionHandler V4. Result: DL_TIMEOUT Failed subscription change in InputVariable for CurrentState_Slave2. Result: DL_TIMEOUT Failed subscription change in InputVariable for State_Slave1. Result: DL_TIMEOUT After that, the application runs smoothly again for a while. These errors occur in alternating order after that. Code of write operation: result = this.client.WriteAsync(path, new Variant(valueToWrite)); if (result?.Wait(10000) == false) { Console.WriteLine( $"Write value {value} to {path} timed out."); return false; } How could this problem be caused/fixed? The CPU load is low. Thank you and best regards
... View more