SOA Session: ClientConnectionTimeout vs. SessionIdleTimeout RRS feed

  • Question

  • Hello,

    In the official Microsoft document "Overview of SOA Programming Model and Runtime System for Windows HPC Server 2008"  in Table 13 - Broker Configuration Parameters two of the broker parameters are:

    • clientConnectionTimeout - After a session is created, if no client application is connected within this timeout period, the session will be closed (default 300 000 ms)
    • sessionIdleTimeout - When all the client applications are idle (timed out), if no more client applications are connected within this timeout period, the session will be closed (default 0 ms)

    However I use HPC Pack 2012 R2 4.3.4652 and found that these two parameters are now have the same value. I set broker parameters programmatically in C# code. ClientConnectionTimeout can't be set in C# because it is not in BrokerSettingsInfo public properties, and SessionIdleTimeout is set to 30123, in the code like this:

                  var info = new SessionStartInfo(hostname, ServiceName, serviceVersion); 

                  info.BrokerSettings.SessionIdleTimeout = 30123;

                  info.BrokerSettings.ClientIdleTimeout = 300000;

    After that I launch SOA job and in exported SOA trace I see the following:

    [Session:1184] [ConfigurationHelper] LoadConfiguration. Step 1: Load configuration file name: \\HNTCSRV02\HpcServiceRegistration\BHI.MCWD.SOAServiceDLL_1.9.config

    [Session:1184] [ConfigurationHelper] Didn't find the services config from the configuration file, use the default configuration

    [Session:1184] [ConfigurationHelper] LoadConfiguration. Step 2: Load broker config and service config succeeded.


    [Session:1184] [ConfigurationHelper] Modified default ClientConnectionTimeout to 30123

    [Session:1184] [ConfigurationHelper] Modified default SessionIdleTimeout to 30123


    So is it true that now ClientConnectionTimeout and SessionIdleTimeout are the same parameter? Is it possible to set them to different values?

    Thursday, April 6, 2017 6:39 AM


  • Hi Nikita,

    The ClientConnectionTimeout is deprecated from the BrokerSettings in Session API, and in backend it is set to the same value as SessionIdleTimeout if that value is set in the BrokerSettings. The purpose is to consolidate two timeouts to consider the initial client connection timeout also a kind of session idle timeout.

    Since the per session settings in Session API would override the per service settings in the service registration file, if you do want to use a different ClientConnectionTimeout, you can only achieve that at service level by specifying a different value at <microsoft.Hpc.Broker><monitor clientConnectionTimeout="" > in the service registration file while not specifying the SessionIdleTimeout in BrokerSettings.


    Yutong Sun

    • Marked as answer by Nikita Tropin Monday, April 10, 2017 4:47 AM
    Thursday, April 6, 2017 8:11 AM