If you see "Could not enlist in transaction on entering meta-aware object!" then the transaction associated with the thread has probably been marked as rollback-only (definitely if status ABORT_ONLY is displayed). That means any attempt to do further work within the scope of that transaction will fail. That's not a bug in the code: it's a clear attempt by the transaction system to ensure data integrity.
You need to figure out why the transaction has been marked for rollback-only. It could be as relatively simple as the fact that the transaction has timed out, in which case either decrease the amount of work done within that transaction or increase the timeout associated with it. Or it could be something else, in which case attach a debugger (or turn on debug in the logger).