none
Unable to connect to 2012r2 headnode when using HPC 2016 Update 2 RRS feed

  • Question

  • Hello,

    When connecting to the 2012R2 headnode using the HPC 2016 Update2 SDK we get an error. I will paste it at the end.

    It looks like the Scheduler dll is trying to load version 2.0.0 of the Scheduler.Store dll. Other forums posts:

    .Net HPC SDK 5.1.6092 is not backwards compatible suggest using a binding redirect

    HPC 2016.1 SDK (6088) can't connect to hpc 2012r2 node. We seem to have the same symptoms as this post and the binding log shows both versions 2.0.0.0 and 5.0.0.0 of the dlls.

    The binding redirect works for our C# code however we also have a C++ client that uses COM and I don't know how to do the binding redirect (or equivalent) in this scenario.

    This is the error - if HPC 2012R2 Client Utilities are not installed:

    Unable to find assembly 'Microsoft.Hpc.Scheduler.Store, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

     

    Server stack trace:

       at System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()

       at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)

       at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)

       at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)

       at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)

       at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()

       at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)

       at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)

       at System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryResponseMessage(Stream inputStream, IMethodCallMessage reqMsg, Boolean bStrictBinding)

       at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)

     

    Exception rethrown at [0]:

       at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

       at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

       at Microsoft.Hpc.Scheduler.Store.ISchedulerStoreInternal.Register(String clientSource, String userName, ConnectionRole role, Version clientVersion, ConnectionToken& token, UserPrivilege& privilege, Version& serverVersion, Dictionary`2& serverProps)

       at Microsoft.Hpc.Scheduler.Store.StoreServer.RegisterWithServer()

       at Microsoft.Hpc.Scheduler.Store.StoreServer.RegisterEvent(String schedulerNode)

       at Microsoft.Hpc.Scheduler.Store.StoreServer.ConnectWithRemoting(CancellationToken token)

       at Microsoft.Hpc.Scheduler.Store.StoreServer.<InternalConnectAsync>d__38.MoveNext()

    With the 2012r2 Client Utilities installed:

    Return argument has an invalid type.

       at System.Runtime.Remoting.Proxies.RealProxy.ValidateReturnArg(Object arg, Type paramType)

       at System.Runtime.Remoting.Proxies.RealProxy.PropagateOutParameters(IMessage msg, Object[] outArgs, Object returnValue)

       at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

       at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

       at Microsoft.Hpc.Scheduler.Store.ISchedulerStoreInternal.Register(String clientSource, String userName, ConnectionRole role, Version clientVersion, ConnectionToken& token, UserPrivilege& privilege, Version& serverVersion, Dictionary`2& serverProps)

       at Microsoft.Hpc.Scheduler.Store.StoreServer.RegisterWithServer()

       at Microsoft.Hpc.Scheduler.Store.StoreServer.RegisterEvent(String schedulerNode)

       at Microsoft.Hpc.Scheduler.Store.StoreServer.ConnectWithRemoting(CancellationToken token)

       at Microsoft.Hpc.Scheduler.Store.StoreServer.<InternalConnectAsync>d__38.MoveNext()

    The binding log shows:

    Let me know if there is any additional information I can gather, or if I have misunderstood what is going on.

    Kind regards,

    Liam

    Tuesday, April 23, 2019 3:56 PM

All replies

  • Hi Liam,

    Can you try to copy Microsoft.Hpc.Scheduler.dll, Microsoft.Hpc.Scheduler.Properties.dll, Microsoft.Hpc.Scheduler.Store.dll from Nuget package Microsoft.HPC.SDK and System.Net.Http.Formatting.dll from Nuget package Microsoft.AspNet.WebApi.Client.5.2.3 (which is a dependency package of Microsoft.HPC.SDK) to the same folder of client binary, and retry your task?



    Tuesday, May 7, 2019 2:39 AM
  • Hello Zihao Chen,

    Thank you for your response. I intended to post again on this, as we finally managed to get it working. Our issue was that the binding redirect worked but we had the additional dependencies alongside our dll that loaded the HPC dlls, whereas upon closer inspection of the Fusion logs, we needed to have the additional dependencies alongside the application. Understanding the search paths for dependent dlls is what we were missing.

    We now have it working. Thank you for your advise.

    Kind regards,

    Liam

    Wednesday, May 8, 2019 8:57 AM