Search Postgresql Archives

Re: Performance/Issues with CMP and JBoss

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Diagnosing JBossCMP issues is not for the faint of heart, in that one of its main raison d'etre's is to hide SQL knowledge away from the casual coder. Add into the mix the concurrency issues which naturally occur since an EJB container is multithreaded and the overly complicated JTA stuff and you've a real mess to diagnose when things don't work just so.

When we ran CMP, we'd also run postgres in debugging mode so as to have it emit queries onto stdout so that we could watch exactly what the CMP was doing. Try starting up postgres ala:

/usr/local/pgsql/bin/postmaster -d 2 -i -D /usr/local/pgsql/data 2>&1 | grep LOG

Your mileage may vary, as would your PGDATA dir etc. Read the docs on the postmaster. But the end result is the ability to watch each query fly by on your development machine -- letting you see the order of which updates, inserts, selects, and commits happen from the postgres backend's perspective.

I suspect the original poster has code issues being tickled by java threading issues interacting poorly with their default transaction isolation level of READ COMMITTED -- their inserts are being done in one thread / JTA transaction, while the read is being done in another and is loosing the race -- the inserting thread has not committed yet. Running the backend in debugging mode should let you see the select happening _before_ the first thread has committed its transaction. Postgres is doing exactly what it is being told -- if the inserting transaction has not yet committed, and the reading transaction's isolation level is set to READ COMMITTED, then postgres _will_not_ return anything to the reading connection / thread which has not yet been committed.

Good luck with reading and following all of the EJB and CMP specifications, the JBossCMP documentation, the JTA spec, and then swallowing all of postgres [ or any other SQL backend ]. If you don't have all of 'em fully understood yet, you will have to one day if you continue with all that fat tech which was supposed to make things easy for you. CMP is a very leaky overcomplicated abstraction.

----
James Robinson
Socialserve.com



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux