Page 1 of 1

REST service unresponsible after systemmode change

Posted: Mon 28 Oct 2013, 07:22
by cyberde
Hello,

Today I've found out that my plugin and client programs couldn't access the REST service of SK after a systemmode change. It appears that when SK changes a scenario (either client, or via REST) the REST service becomes unresponsive for about two minutes.

Code: Select all

28-10-2013 7:14:44: SwitchKingSystemMode: received new active system mode ID: 2, Name: Night
28-10-2013 7:14:44: SwitchKingClient: Set datasource 49 to Off
28-10-2013 7:16:24: SwitchKingClient: Get datasource 39
28-10-2013 7:16:24: SwitchKingDatasource: received update ID: 49, Value: Off
In the above log you can see that my plugin sets certain DataSource values after changing a systemmode through rest (respons due to the ISystemModeEventListener implementation). My plugin also implements the IDataSourceValueEventListener, and as you can see it takes about 1.5/2 minutes for it to do the request and receive the OnSystemModeChanged event. During that time the REST service is unresponsive, also through the browser.

Just now I've gotten the following error in the SwitchKing Client as well:

Code: Select all

************** Exception Text **************
System.TimeoutException: The request channel timed out while waiting for a reply after 00:01:00. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout. ---> System.TimeoutException: The HTTP request to 'http://localhost:8080/SwitchKingFrameworkServiceHost' has exceeded the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout. ---> System.Net.WebException: The operation has timed out
   at System.Net.HttpWebRequest.GetResponse()
   at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   --- End of inner exception stack trace ---
   at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
   at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   --- End of inner exception stack trace ---
Any ideas? :)

Cheers

Re: REST service unresponsible after systemmode change

Posted: Mon 28 Oct 2013, 07:30
by Martin
Do you have any error messages in Switch Kings server logs?

Re: REST service unresponsible after systemmode change

Posted: Mon 28 Oct 2013, 08:04
by cyberde
Hi Martin,

No I don't have any error messages in the logs. It seems that the service is too busy sending out the signals to synchronize the devices after a system mode change and thus blocking the REST service.

Re: REST service unresponsible after systemmode change

Posted: Mon 28 Oct 2013, 08:44
by Martin
A synchronization of devices (which can occurr after a system mode change) should usually not take one or two minutes unless the system consists of many devices and that all devices have their "Send Count" turned up. Even if that would have been the case, a REST call should have been able to sneak in between two synchronization commands.

Do you have any devices that does not have a schedule connected - i.e. an empty timeline? If so, try to configure these devices so that they are not affected by schedules since they might cause heavy CPU load when Switch King tries to find a defined state.

You could also try turning on debug logging to see what really happens during the time when a REST call is made and a schedule mode has changed.

Re: REST service unresponsible after systemmode change

Posted: Mon 28 Oct 2013, 09:27
by cyberde
Yes devices have a sent count of 3 (with 500ms interval, should just be 4 seconds though) because if the bad reception I get sometimes, according to the history log you can see that it's synchronizing the 27 devices I have at the moment. Which does take up about 1.5/2 minutes. The indicated Server Load in SK changes to High Load, so yes maybe something is going wrong.

I'm not home at the moment, so I will try this afternoon to test it by turning on debug logging. How do I change to debug logging?

Re: REST service unresponsible after systemmode change

Posted: Mon 28 Oct 2013, 09:34
by Martin

Re: REST service unresponsible after systemmode change

Posted: Mon 28 Oct 2013, 10:00
by cyberde
Thanks, that's why I couldn't find it :)
I'll test it this afternoon and report back.

Re: REST service unresponsible after systemmode change

Posted: Mon 28 Oct 2013, 16:30
by cyberde
I've figured out what went wrong, on a SystemModeChange my plugin immediately called the restserver/systemmodes/active call which resulted in a block somehow (that call took like 1.5 minutes to complete). Now I'm using the parameters to determine which systemmode has been activated and so far it seems to work smoothly now.

Re: REST service unresponsible after systemmode change

Posted: Mon 28 Oct 2013, 16:39
by Martin
How do you call the REST service? Do you use the local IP?

Re: REST service unresponsible after systemmode change

Posted: Mon 28 Oct 2013, 19:48
by cyberde
I'm calling it through localhost, so 127.0.0.1...