Saw this in our logs on an internal test cluster:
"java.lang.RuntimeException: Got exception during XAResource.end : org.postgresql.xa.PGXAException: tried to call end without corresponding start call"
I've had some previous issues with getting XA transactions running smoothly under Glassfish 2.1 in a clustered deployment. Those arose only when making remote calls, so the transaction was actually being physically propagated between nodes in the cluster.
The calling code here is in an @PostConstruct annotated method being triggered by a managed bean reference in a JSF view. The session bean in question has a TX attribute of Required but the specific method has an overriding TX attribute of RequiresNew. I don't know if that is relevant, if this is somehow a nested/suspended TX issue in Glassfish with XA transactions.
As far as I can tell from static analysis, this particular code should be using local only references and should only be accessed by a single thread, the request serving thread from the JSF view.
I am tempted to write this off as a temporary glitch as it does not seem easily reproducible but any kind of issue with container managed transactions makes me nervous as this code is in the testing run up to a production release.