Error while executing HPC2008R2.SampleCode\SOA\HelloWorldR2 Sample

Unanswered Error while executing HPC2008R2.SampleCode\SOA\HelloWorldR2 Sample

  • Tuesday, August 23, 2011 1:58 PM
     
     

    I have a Windows HPC 2008 R2 setup with a head node and 2 compute nodes on Windows Server 2008 R2 64 bit and client workstation on Windows Server 2003 32 bit.

    I am trying to run the sample HPC2008R2.SampleCode\SOA\HelloWorldR2 which basically spans EchoRequest from the client application.

    I can able to successfully run the application when the number of requests is set upto 4 , when i increase beyond that , it throws me the following exception, Please let me know if have any clues...

    {"System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: There is already a listener on IP endpoint 0.0.0.0:808.  Make sure that you are not trying to use this endpoint multiple times in your application and that there are no other applications listening on this endpoint. (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:\nSystem.ServiceModel.AddressAlreadyInUseException: There is already a listener on IP endpoint 0.0.0.0:808.  Make sure that you are not trying to use this endpoint multiple times in your application and that there are no other applications listening on this endpoint. ----> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted\n   at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)\r\n   at System.Net.Sockets.Socket.Bind(EndPoint localEP)\r\n   at System.ServiceModel.Channels.SocketConnectionListener.Listen()\n   --- End of inner ExceptionDetail stack trace ---\n   at System.ServiceModel.Channels.SocketConnectionListener.Listen()\r\n   at System.ServiceModel.Channels.BufferedConnectionListener.Listen()\r\n   at System.ServiceModel.Channels.ExclusiveTcpTransportManager.OnOpen()\r\n   at System.ServiceModel.Channels.Transp...)."}


    Aravindakumar.V

All Replies

  • Tuesday, August 23, 2011 2:34 PM
     
     

    Solved when I set MiniumUnits value to 1

    SessionStartInfo

     

    info = new SessionStartInfo(headnode, serviceName);

    info.MinimumUnits = 1;


    Aravindakumar.V
  • Monday, August 29, 2011 5:46 AM
     
     
    By default, HPC SOA doesn't use port 808 at all. Can you take a look at the configuration file and see if there is any modification related to port 808? Also, if you can paste the full error, it'll be great.
  • Wednesday, May 30, 2012 1:51 PM
     
     

    I see the same error with the SOA samples. I was able to run the HelloWorldR2Console sample once, and then the second and subsequent calls produce the error. A netstat -ano on the client shows no processes listening on TCP:808, but on the HPC head node HpcBrokerWorker is listening on TCP:808

    I tried setting MinimumUnits as suggested above, but that didn't help. Other than that the sample code and config are unchanged.

    What's going on here?



    • Edited by wbradney Wednesday, May 30, 2012 1:52 PM
    • Edited by wbradney Wednesday, May 30, 2012 2:00 PM
    •  
  • Friday, June 01, 2012 8:41 AM
     
     

    if your broker worker listens on port 808, it seems that you have modified the service registration file. Can you take a look at the service registration file and upload it here so that I can take a look?

    (808 is the default port net.tcp binding, however, SOA broker will not use this port and the port number has been specified in the service registration file. That's why I'm asking for the content of the file.)

  • Friday, June 01, 2012 12:09 PM
     
     

    Here's my EchoService config:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>

        <configSections>

            <!--Register service's custom configruation sections and group-->
            <sectionGroup name="microsoft.Hpc.Session.ServiceRegistration"
                          type="Microsoft.Hpc.Scheduler.Session.Configuration.ServiceRegistration, Microsoft.Hpc.Scheduler.Session, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                <section name="service"
                         type="Microsoft.Hpc.Scheduler.Session.Configuration.ServiceConfiguration, Microsoft.Hpc.Scheduler.Session, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                         allowDefinition="Everywhere"
                         allowExeDefinition="MachineToApplication"
                   />
            </sectionGroup>

            <sectionGroup name="microsoft.Hpc.Broker"
                          type="Microsoft.Hpc.Scheduler.Session.Configuration.BrokerConfigurations, Microsoft.Hpc.Scheduler.Session, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                <section name="monitor"
                         type="Microsoft.Hpc.Scheduler.Session.Configuration.BrokerMonitorConfiguration, Microsoft.Hpc.Scheduler.Session, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                         allowDefinition="Everywhere"
                         allowExeDefinition="MachineToApplication"
                   />
                <section name="services"
                         type="Microsoft.Hpc.Scheduler.Session.Configuration.BrokerServicesConfiguration, Microsoft.Hpc.Scheduler.Session, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                         allowDefinition="Everywhere"
                         allowExeDefinition="MachineToApplication"
                   />
                <section name="loadBalancing"
                         type="Microsoft.Hpc.Scheduler.Session.Configuration.LoadBalancingConfiguration, Microsoft.Hpc.Scheduler.Session, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                         allowDefinition="Everywhere"
                         allowExeDefinition="MachineToApplication"
                   />
            </sectionGroup>

        </configSections>

        <microsoft.Hpc.Session.ServiceRegistration>
            <service assembly="C:\ServicesR2\EchoService.dll"
                     includeExceptionDetailInFaults="true"
                     maxConcurrentCalls="0"
                     >
                <!--Below is a sample for adding environment variables to the service-->
                <environmentVariables>
                    <add name="myname1" value="myvalue1"/>
                    <add name="myname2" value="myvalue2"/>
                </environmentVariables>
            </service>
        </microsoft.Hpc.Session.ServiceRegistration>

        <!--Service broker's configuration-->
        <microsoft.Hpc.Broker>
            <!--configuration to control broker's monitoring behavior-->
            <monitor messageThrottleStartThreshold="4096"
                     messageThrottleStopThreshold="3072"
                     loadSamplingInterval="1000"
                     allocationAdjustInterval="30000"
                     clientIdleTimeout="300000"
                     clientConnectionTimeout="300000"
                     sessionIdleTimeout="0"
                     statusUpdateInterval="15000"/>
            <services>
                <!--Address templates used for Broker service-->
                <brokerServiceAddresses>
                    <!--
                Two configuration is done to enable broker listen on this URI:
                1. Port 9087 is added to firewall exceptions
                2. Users group is allowed to register with NetTcp port sharing service
            -->
                    <add baseAddress="net.tcp://localhost/Broker"/>
                    <!--Before using HTTP transport, make sure:
                    1. The HTTP URI is correctly reserved for the user who is going to starts the session 
                       (using "netsh http add urlacl")and evaluate risk of allowing the user to listen on that URL
                    2. Open the port in firewall
            -->
                    <add baseAddress="http://localhost/Broker"/>
                    <!--Before using HTTPS transport, make sure 
                    1. The HTTPS URI is correctly reserved for the user who is going to starts the session 
                       (using "netsh http add urlacl") and evaluate risk of allowing the user to listen on that URL
                    2. Open the port in firewall
                    3. Valid certificate is installed for the machine
                    4. the certificate is registered with HTTP listener ("netsh http add sslcert")
            -->
                    <add baseAddress="https://localhost/Broker"/>
                </brokerServiceAddresses>
            </services>
            <loadBalancing messageResendLimit="3"
                           serviceOperationTimeout="86400000"
                           endpointNotFoundRetryCountLimit="10"
                           endpointNotFoundRetryPeriod="5000"/>
        </microsoft.Hpc.Broker>

        <system.serviceModel>
            <bindings>
                <netTcpBinding>
                    <!--binding used by broker's front end service with security-->
                    <binding name="Microsoft.Hpc.SecureNetTcpBrokerBinding">
                        <security mode="Transport"/>
                    </binding>

                    <!--binding used by broker's front end service with no security-->
                    <binding name="Microsoft.Hpc.UnsecureNetTcpBrokerBinding">
                        <security mode="None"/>
                    </binding>

                    <!--binding used by broker's backend-->
                    <binding name="Microsoft.Hpc.BackEndBinding">
                        <security mode="Transport">
                            <transport clientCredentialType="Windows" protectionLevel="None"/>
                        </security>
                    </binding>
                </netTcpBinding>

                <basicHttpBinding>
                    <!--binding used by broker's front end service with security-->
                    <binding name="Microsoft.Hpc.SecureHttpBrokerBinding">
                        <security mode="TransportWithMessageCredential">
                            <message clientCredentialType="UserName"/>
                            <transport clientCredentialType="None"/>
                        </security>
                    </binding>

                    <!--binding used by broker's front end service with no security-->
                    <binding name="Microsoft.Hpc.UnsecureHttpBrokerBinding">
                        <security mode="None"/>
                    </binding>
                </basicHttpBinding>
            </bindings>
        </system.serviceModel>
    </configuration>