Author Topic: OperationCanceledException / Response timeout on RetrieveMultipleObjects request  (Read 4680 times)

Offline simon

  • Newbie
  • *
  • Posts: 11
  • Karma: 0
When trying to RetrieveMultipleObjects for DNs from ConfigServer I get the following exception:

OperationCanceledException
Receiving of responses have been timed out

The strange thing is the RetrieveObject right before executes and gets a response successfully.

The environment:
Genesys / Platform SDK .NET 8.1.
ConfigServer is running on Windows 2008 and the client on Windows 7 and 8.

The code:

I'm using the PlatformSDK's WarmStandby for the connection logic to the server.

Code that works:

CfgPersonQuery personQuery = new CfgPersonQuery();
personQuery.UserName = "PersonObjectUsername"; // it's actually replaced with a real username
CfgPerson agentCfgPerson = iConfService.RetrieveObject<CfgPerson>(personQuery);
-> agentCfgPerson gets instantiated and populated with the correct data

Code that gives the exception (and runs straight after the code above gets its response):

CfgDNQuery dnQuery = new CfgDNQuery();
dnQuery.DnType = CfgDNType.CFGCommDN;
var commsDnList = iConfService.RetrieveMultipleObjects<CfgDN>(dnQuery);

I would rather avoid having to use the alternate methods to get an XML response and parse that data.

Any ideas what might be the cause for this?

Further info:

In the WarmStandby block I'm setting the client channel to 5 secs:
this.clientChannel.Timeout = new TimeSpan(0, 0, 5);
But even with 30 secs I still get the same exception error.

And the Config Server log shows no errors, rather it shows it sends the results back to the client immediately after receiving the retrieve request:


00:44:36.059 Trc 04520 New client 124 connected
00:44:36.059 Trc 24300 Extended info : New client [124] connected, protocol [cfglib]
00:44:36.059 Total number of clients: 19
00:44:37.199 Trc 04541 Message MSGCFG_GETSERVERPROTOCOL received from 124 ( '')

  MSGCFG_GETSERVERPROTOCOL
  attr: IATRCFG_REQUESTID          value:  1
  attr: SATRCFG_PROTOCOLEX          value:  "CfgProtocol 5.1.3.79"
  attr: SATRCFG_APPNAME            value:  "default"
  attr: IATRCFG_SECURELIBRARY      value:  1

00:44:37.199 Trc 04542 Message MSGCFG_SERVERPROTOCOL sent to 124 ( '')

  MSGCFG_SERVERPROTOCOL
  attr: SATRCFG_PROTOCOL            value:  "CfgProtocol 5.1.3.78"
  attr: IATRCFG_REQUESTID          value:  1

00:44:38.074 Trc 04541 Message MSGCFG_CLIENTREGISTER received from 124 ( '')

  MSGCFG_CLIENTREGISTER
  attr: IATRCFG_REQUESTID          value:  2
  attr: Unknown message attribute  value:  0
  attr: SATRCFG_PROTOCOLEX          value:  "CfgProtocol 5.1.3.78"
  attr: SATRCFG_USERPASS            value:  "******"
  attr: SATRCFG_USERNAME            value:  "usernamedummytest"
  attr: SATRCFG_APPNAME            value:  "default"
  attr: IATRCFG_APPTYPE            value:  19 [SCE]

00:44:38.074 Current number of sessions for account [star01] is 0 of 0
00:44:38.074 Number of GUI clients: 5
00:44:38.074 Trc 04522 Client 124 authorized, name 'default', type 'SCE'
00:44:38.074 Trc 22121 Extended info : Client 124 authorized, name [default], type [SCE], user name [star01], protocol [cfglib], address [172.30.1.136:4818]. Authentication type : [internal]
00:44:38.074 Trc 04542 Message MSGCFG_CLIENTREGISTERED sent to 124 (SCE 'default')

  MSGCFG_CLIENTREGISTERED
  attr: IATRCFG_CRYPTPASSW          value:  1
  attr: IATRCFG_BACKUPCFGSERVERDBID value:  0
  attr: IATRCFG_CFGSERVERDBID      value:  99
  attr: IATRCFG_EXTERNALAUTH        value:  0
  attr: IATRCFG_SESSIONNUMBER      value:  280
  attr: IATRCFG_SERVERENCODING      value:  0
  attr: SATRCFG_LOCALEVERSION      value:  "8.1.100.10"
  attr: SATRCFG_SCHEMAVERSION      value:  "8.1.100.09"
  attr: SATRCFG_PROTOCOLEX          value:  "CfgProtocol 5.1.3.78"
  attr: SATRCFG_PROTOCOL            value:  "CfgProtocol 5.1.3.54"
  attr: IATRCFG_UNSOLEVENTNUM      value:  3656
  attr: IATRCFG_REQUESTID          value:  2

00:44:39.074 Trc 04541 Message MSGCFG_GETOBJECTINFO received from 124 (SCE 'default')

  MSGCFG_GETOBJECTINFO
  attr: IATRCFG_REQUESTID          value:  3
  attr: BATRCFG_FILTER              value:
  attr: IATRCFG_OBJECTTYPE          value:  3 [CfgPerson]

  Filter :
  key: user_name                  type:    [String], value : star01
  key: read_folder_dbid            type:    [Integer], value : 0
  key: object_path                type:    [Integer], value : 0
  Query  : CfgPerson[ (@name = 'star01')]

00:44:39.074 Trc 24215 There are [1] objects of type [CfgPerson] sent to the client [124] (application [default], type [SCE])
00:44:39.074 Trc 04542 Message MSGCFG_ENDOBJECTSLIST sent to 124 (SCE 'default')

  MSGCFG_ENDOBJECTSLIST
  attr: IATRCFG_OBJECTTYPE          value:  3 [CfgPerson]
  attr: IATRCFG_REQUESTID          value:  3

00:44:40.027 Trc 04541 Message MSGCFG_GETOBJECTINFO received from 124 (SCE 'default')

  MSGCFG_GETOBJECTINFO
  attr: IATRCFG_REQUESTID          value:  4
  attr: BATRCFG_FILTER              value:
  attr: IATRCFG_OBJECTTYPE          value:  2 [CfgDN]

  Filter :
  key: dn_type                    type:    [Integer], value : 23
  key: read_folder_dbid            type:    [Integer], value : 0
  key: object_path                type:    [Integer], value : 0
  Query  : CfgDN[ (@type = '23')]

00:44:40.027 Trc 24215 There are [4] objects of type [CfgDN] sent to the client [124] (application [default], type [SCE])
00:44:40.027 Trc 04542 Message MSGCFG_ENDOBJECTSLIST sent to 124 (SCE 'default')

  MSGCFG_ENDOBJECTSLIST
  attr: IATRCFG_OBJECTTYPE          value:  2 [CfgDN]
  attr: IATRCFG_REQUESTID          value:  4


Offline euchch

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
Hi,
I know it's way too late for you but maybe it'll be helpful for someone else pulling their hairs out on this exact problem.

In here we tried to read objects once the connection is opened (onprotocolopen event), and just like you - RetrieveObject query worked as well as RetrieveMultipleObjects (at least based on logs) but we did get the dreaded "timed out" exception.

Our solution was to do the query on a different thread then the function handling the protocol.opened event - it seems to work,
Our guess (as no one really certain WHY it happens) is that the problem is based on the fact that both protocol.beginopen and RetrieveMultipleObjects are asynchronous calls, we could see that based on the exception we received:

[quote]System.OperationCanceledException: Receiving of responses have been timed out
  at Genesyslab.Platform.ApplicationBlocks.ConfigurationObjectModel.ConfService.EndRetrieveMultipleObjects[T](IAsyncResult asyncResult)
  at Genesyslab.Platform.ApplicationBlocks.ConfigurationObjectModel.ConfService.RetrieveMultipleObjects[T](ICfgQuery query, AsyncCallback finishCallback, AsyncCallback dataCallback, Int64 timeout)
  at Genesyslab.Platform.ApplicationBlocks.ConfigurationObjectModel.ConfService.RetrieveMultipleObjects[T](ICfgQuery query)[/quote]

even though the call seems to be a sync one - it translate it to an async one on the background, but since we are dealing with an async call already (onprotocolopen) - this thread is stuck and can't handle the message containing the answer, so calling in on a different thread (and therefore calling the query after this function essentially ends) allowed it to work