Archived
This forum has been archived. Please start a new discussion on GitHub.
Dynamic Ice and Blobject (revisited)
OK.. now on the other end of the system... trying to dispatch the event to subscribers... I'm getting collocation exceptions when I call ice_invoke on the subscriber proxy (again.. its a direct delegate).....
if I ice_colo(false) on the proxy, the ice_invoke call kills the thread making the call rather than throwing an exception.. so I have zero clue as to whats going on in this case
are there no debug dlls available for the C# interface so I can step into the code ??
Ideas why its not dispatching the invocation to the subscriber ??
if I ice_colo(false) on the proxy, the ice_invoke call kills the thread making the call rather than throwing an exception.. so I have zero clue as to whats going on in this case
are there no debug dlls available for the C# interface so I can step into the code ??
Ideas why its not dispatching the invocation to the subscriber ??
0
Comments
-
I'm not sure what you mean by "the ice_invoke call kills the thread making the call". Can you elaborate? Have you tried wrapping things in a try/catch block to trap System.Exception?are there no debug dlls available for the C# interface so I can step into the code ??
Take care,
- Mark0 -
I'm working on a source build right now
I've got the call wrapped in a try/catch, but the catch never gets hit, and I get a trace message that the thread died
--- a little later
debug dlls do the same thing.... the thread just dies without throwing an exception0 -
ok -- more info
got the debug dll working... had a release DLL in the GAC that had to be removed before it would see the debug DLLs
new problem:
with oneway proxy.. everything on the publishing side of the test works fine, but I never get the calls dispatched to the subscriber
I switched it to twoway, and the 1st publish hangs indefinitly
in both cases, protocol traces DO show the requests going out
traced it all the way down to TcpTransciever.read during a ConnectionI.validate call... getting a WouldBlock response> icecs.dll!IceInternal.TcpTransceiver.read(IceInternal.BasicStream stream = {IceInternal.BasicStream}, int timeout = -1) Line 207 C# icecs.dll!Ice.ConnectionI.validate() Line 93 + 0x1c bytes C# icecs.dll!IceInternal.OutgoingConnectionFactory.create(IceInternal.Endpoint[] endpoints = {Length=1}, bool compress = false) Line 278 C# icecs.dll!IceInternal.DirectReference.getConnection(bool comp = false) Line 1050 + 0x10 bytes C# icecs.dll!Ice._ObjectDelM.setup(IceInternal.Reference rf = {IceInternal.DirectReference}) Line 1166 + 0x10 bytes C# icecs.dll!Ice.ObjectPrxHelperBase.__getDelegate() Line 713 C# icecs.dll!Ice.ObjectPrxHelperBase.ice_invoke(string operation = "callme", Ice.OperationMode mode = Idempotent, byte[] inParams = {Length=0}, byte[] outParams = {Length=0}, Ice.Context context = {Ice.Context}) Line 208 + 0x8 bytes C# icecs.dll!Ice.ObjectPrxHelperBase.ice_invoke(string operation = "callme", Ice.OperationMode mode = Idempotent, byte[] inParams = {Length=0}, byte[] outParams = {Length=0}) Line 197 + 0x39 bytes C# blizardmaster.dll!BlizardMaster.TopicI.invoke_subs(Blizard.Invocation data = {Blizard.Invocation}) Line 104 + 0x1d bytes C#
Am I hitting a deadlock here because both publisher and subscriber are in the same app ??0 -
This is strange, I really doubt there's anything in Ice which could kill the calling thread
. Can you perhaps provide a small compilable example that demonstrates the problem? Also, can you give more details on your environment (version of .NET or mono, Ice for C# version, platform, etc)?
Thanks!
Benoit.0 -
Try to increase the server thread pool size by setting the Ice.ThreadPool.Server.Size property to a value larger than 1. I suspect your application is running out of threads (non collocated calls are dispatched by the server thread pool.)
Hope this helps!
Benoit.0 -
ok -- upping the threads got me a little further along... it dispatched a couple of invocations (one of them apparently a retry after exception) which went all the way through to the implementation.. then popped an UnknownUserException in Incoming.invoke... in the finally clause where it tests locator/servant/status.... at that point>
locator was undefined
servent contained and instance of the implementation
status was DispatchOK
(doesnt look like that code should have thrown an exception.. should have just continued on to process the "void" return type of the method)
VS.Net 2003 with IceCS-2.1.0 debug dll from source build0 -
forget it and thanks so much for the help !!
I had one of my methods in the routing code defaulting to return false which caused the ice_invoke on my publisher object to return false.. which made the runtime very unhappy
looks to all be working now !!0