Discussion:
[omniORB] CORBA::TRANSIENT problem
Raheel Abdul Hameed
2006-07-01 18:49:00 UTC
Permalink
Hi everyone,

I am using a GPRS based TCP/IP link using a GPRS modem. These GPRS networks seems to be a bit lossy due to radio / wireless interference.

On such links if we use CORBA calls, then sometimes these calls get lost and after the timeout, we get CORBA::TRANSIENT exception in return.

Just to bring you in context, I am working on a point-of-sales system that is a CORBA client and connects to a server to register sales, behind GPRS link that is hardly 19200 bps. The actual flow is like this:

1) name service stuff
2) getting controllerFactory
3) asking controllerFactory for individual controllers like sellController, payController, reportController etc.
4) at this point, we can make sellController->sell, payController->pay, reportController->getReport calls.

My question is simple and tricky, what to do if we get CORBA::TRANSIENT exception when we make a call to sell/pay, can we always retry the call ? or do we need to start from scratch (from step 1 above till step 4) .... this whole restart process is time consuming and hence prone to another CORBA::TRANSIENT exception if the wireless link gets lossy in between..... what is the quickest way to be able to make the sell/pay (step 4) calls.... without restarting the process.....??

I hope that i am clear in stating my problem. I'll appreciate any help. Thanks for your time.

Regards,

Raheel Hameed
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20060701/2ee872a3/attachment.htm
Duncan Grisby
2006-07-04 20:51:21 UTC
Permalink
Post by Raheel Abdul Hameed
1) name service stuff
2) getting controllerFactory
3) asking controllerFactory for individual controllers like
sellController, payController, reportController etc.
4) at this point, we can make sellController->sell,
payController->pay, reportController->getReport calls.
My question is simple and tricky, what to do if we get
CORBA::TRANSIENT exception when we make a call to sell/pay, can we
always retry the call ? or do we need to start from scratch (from step
1 above till step 4) .... this whole restart process is time consuming
and hence prone to another CORBA::TRANSIENT exception if the wireless
link gets lossy in between..... what is the quickest way to be able to
make the sell/pay (step 4) calls.... without restarting the
process.....??
As long as you want to contact the same object before, you can simply
retry the call that failed. As long as the object is still there, the
call will reconnect to the server and work fine. The failure of the
client has no effect whatsoever on the server, so all the objects will
be there just as before.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Loading...