TOraSession.ProxySession is not working properly

Discussion of open issues, suggestions and bugs regarding ODAC (Oracle Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Ping Kam
Posts: 21
Joined: Fri 26 Nov 2004 19:09

TOraSession.ProxySession is not working properly

Post by Ping Kam » Wed 26 Oct 2005 22:44

Hi,

I just try the proxysession and it doesn't seem to work properly. It does switch the user context. But it is taking too long to connect which appears to be imporper implemention.

In our test, a normal session takes about 150 to 250 ms to connect to a 10g server. The session using proxy session takes the same amout of time to connect.

So I build another test application using OCI call. It takes about 150 ms to create a server handle, but get a user session through the server handle takes less than 10 ms.

It the proxy session takes as the same amount of time to establish, there is really no benefit to use it.

Also, I read your source code and find out that proxy session will not work with pooling. This does not scale very well. One proxy session may work if our system only have a few concurrent users. But it is impractical to support tens or hundreds of concurrent users without a pool of proxy sessions.

So unless the two can work together and the connection time is much shorter (<10ms), this proxy session feature is relatively useless.

Ping Kam

Alex
Posts: 655
Joined: Mon 08 Nov 2004 08:39

Post by Alex » Tue 01 Nov 2005 15:02

Thank you for information.
I have fixed perfomance problem, but now there are some new restrictions while using ProxySession functionality. You should disconnect all client sessions before diconnecting ProxySession or you'll get an invalid handle exception.
This fix will be included in the next ODAC build.

As to proxy connection pooling - we are going to implement this but not in the nearest time.

Ping Kam
Posts: 21
Joined: Fri 26 Nov 2004 19:09

Post by Ping Kam » Tue 01 Nov 2005 16:24

Glad to hear that the performance problem is fixed. Can't wait to get the new build to test it.

The restriction makes sense to me. I just wonder if there is anyway to check if the proxysession is consumed by a client session. I can build a manager to handle this but it would make more sense if the component itself manages it.

About the pooling, what does nearest time mean? When can I expect this? Q1 next year, or Q2, or even later? I have a project which expect to complete by June next year. If this would ship until late Q2 or after, I have to build my own pooling system or give up on it.

Thanks,
Ping Kam

Post Reply