Just testing our latest software release and code that has been working successfully & is unchanged since RO v7 is now failing with:
Assertion failure ([…]\RemObjects Software\RemObjects SDK for Delphi\Source\uROAsync.pas, line 495)
Line 495 is in TROAsyncProxy.__RetrieveAsyncResponse and is:
Assert(Assigned(fResponse));
We’re using async calls to start long running DB processes on the server and using a Timer to poll for the results, which I believe is fairly standard stuff. It’s a custom Delphi server with a RODL, (i.e. not a code-first server).
it can be happened if Retrieve_DependencyCalcsDateRange was called twice for the same request.
I can recommend to migrate to async requests via new *_AsyncEx interfaces
Usage of AsyncEx interfaces are demonstrated in the Phone Photo Server sample.
I completed missed the news about Aysnc being broken and the new AsyncEx … was it published somewhere I’m not reading - or was it a release email that I might not have read properly?
it was announced two years ago as 66228: Improved async client APIs for Summer 2014 (8.0.81.1131).
New API uses the same mechanism as async calls in .NET
Can you help me with the TROIndyHTTPChannel TimeOut property?
If I set this to 30000 (30s) then I get read timed out error 30s into the Async call.
Clearly I have to set this to -1 in order to allow Async calls to complete in their own time,
but will having Timeout=-1 have any undesirable side effects in the rest of the application?
Sorry, but I’m not very familiar with the indy components.
In my code (which is very old) I create a duplicate Channel omponent for use with the Async calls - do I need to do that any more, or can I use the Channel component from fClientDataModule ?
for AsyncEx calls - you can use existing one. for old Async calls, you need to duplicate channel.
of course, super channels also can use only one instance