I also failed to mention that I have tried MANUAL and AUTO flush mode with no change in behavior.
I have also tried manually creating a nested conversation in the action and then popping it at the end. No change in behavior.
I think this will work if you use the factory to create separate EMs:
@PersistenceUnit javax.persistence.EntityManagerFactory emf;
EntityManager em1 = emf.createEntityManager(); ...
Or of course you could create two Seam entity managers in components.xml. You'll need to make sure you load the alerts using the alternative entity manager.
Thanks petemuir and vladimir.
The approach that we decide to take was to connect the modal dialog to a @WebRemote. This isolates the alert transaction to a separate conversation. It is probably better this way since I don't have to worry about JSF restoring the view each time we ask for more alerts from the server. Thus, as expected, performance is considerably faster.