Hello there,
Delphi Server, Latest Tokyo, latest RO.
I keep getting some error messages on our services under heavy load. Normally they will work accordingly but when we have few dozen requests per second in 2 or 3 hours periods we start getting error messages like:
TryGetGameHandlerByGameNum RemObjects.SDK.Types.ServerException: An exception occurred on the server: Class factory for interface GetProviderGameListByGameNum not found
at RemObjects.SDK.Message.ProcessException()
at RemObjects.SDK.BinMessage.InternalReadFromStream(Stream stream)
at RemObjects.SDK.Message.ReadFromStream(Stream stream)
at RemObjects.SDK.IpSuperTcpClientChannel.IntDispatch(Stream request, IMessage response)
Or
TryGetGameHandlerByGameNum RemObjects.SDK.Types.ServerException: An exception occurred on the server: Unknown method Get\x00GetProviderGameListByGam for interface ProviderGame
at RemObjects.SDK.Message.ProcessException()
at RemObjects.SDK.BinMessage.InternalReadFromStream(Stream stream)
at RemObjects.SDK.Message.ReadFromStream(Stream stream)
at RemObjects.SDK.IpSuperTcpClientChannel.IntDispatch(Stream request, IMessage response)
Or
TryGetGameHandlerByGameNum RemObjects.SDK.Types.ServerException: An exception occurred on the server: Error reading parameter aGameNum: Stream read error
at RemObjects.SDK.Message.ProcessException()
at RemObjects.SDK.BinMessage.InternalReadFromStream(Stream stream)
at RemObjects.SDK.Message.ReadFromStream(Stream stream)
at RemObjects.SDK.IpSuperTcpClientChannel.IntDispatch(Stream request, IMessage response)
Or
TryGetGameHandlerByGameNum System.NullReferenceException: Object reference not set to an instance of an object.
at RemObjects.SDK.BinMessage.ReadException()
at RemObjects.SDK.Message.ProcessException()
at RemObjects.SDK.BinMessage.InternalReadFromStream(Stream stream)
at RemObjects.SDK.Message.ReadFromStream(Stream stream)
Or
TryGetGameHandlerByGameNum System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.Array.Clear(Array array, Int32 index, Int32 length)
at System.IO.MemoryStream.Write(Byte buffer, Int32 offset, Int32 count)
at RemObjects.SDK.BinSerializer.WriteInt32(Int32 value)
at RemObjects.SDK.BinSerializer.WriteInt32(String name, Int32 value)
Or
TryGetGameHandlerByGameNum RemObjects.SDK.Types.ServerException: An exception occurred on the server: No mapping for the Unicode character exists in the target multi-byte code page
at RemObjects.SDK.Message.ProcessException()
at RemObjects.SDK.BinMessage.InternalReadFromStream(Stream stream)
at RemObjects.SDK.Message.ReadFromStream(Stream stream)
at RemObjects.SDK.IpSuperTcpClientChannel.IntDispatch(Stream request, IMessage response)
Now this is the same method, on the same service, same machine with 6 different error messages. It usually works without problems but starts spilling those errors under the conditions specified above.
This method basically receives an integer and returns a list of objects associated with it. The list usually contains one item, but can go up to 3.
Clients can be .Net and Delphi clients.
It points out to RO not being able to handle that many requests but I’ll expect a timeout error and not being able to reply back to the client, but not these errors. Could we have some sort of race condition on the “dispatcher” code of RO SDK that is not thread safe and corrupts the output? I mean some of these requests are happening on the same millisecond.
Any ideas?