|
57 | 57 | import org.hibernate.type.ForeignKeyDirection;
|
58 | 58 | import org.hibernate.type.Type;
|
59 | 59 |
|
| 60 | +import org.checkerframework.checker.nullness.qual.NonNull; |
60 | 61 | import org.checkerframework.checker.nullness.qual.Nullable;
|
61 | 62 |
|
62 | 63 | import static org.hibernate.proxy.HibernateProxy.extractLazyInitializer;
|
@@ -992,7 +993,7 @@ private abstract static class AbstractTransactionCompletionProcessQueue<T> {
|
992 | 993 | protected SessionImplementor session;
|
993 | 994 | // Concurrency handling required when transaction completion process is dynamically registered
|
994 | 995 | // inside event listener (HHH-7478).
|
995 |
| - protected Queue<T> processes = new ConcurrentLinkedQueue<>(); |
| 996 | + protected ConcurrentLinkedQueue<@NonNull T> processes = new ConcurrentLinkedQueue<>(); |
996 | 997 |
|
997 | 998 | private AbstractTransactionCompletionProcessQueue(SessionImplementor session) {
|
998 | 999 | this.session = session;
|
@@ -1020,9 +1021,10 @@ private BeforeTransactionCompletionProcessQueue(SessionImplementor session) {
|
1020 | 1021 | }
|
1021 | 1022 |
|
1022 | 1023 | public void beforeTransactionCompletion() {
|
1023 |
| - while ( !processes.isEmpty() ) { |
| 1024 | + BeforeTransactionCompletionProcess process; |
| 1025 | + while ( ( process = processes.poll() ) != null ) { |
1024 | 1026 | try {
|
1025 |
| - processes.poll().doBeforeTransactionCompletion( session ); |
| 1027 | + process.doBeforeTransactionCompletion( session ); |
1026 | 1028 | }
|
1027 | 1029 | catch (HibernateException he) {
|
1028 | 1030 | throw he;
|
@@ -1050,9 +1052,10 @@ public void addSpaceToInvalidate(String space) {
|
1050 | 1052 | }
|
1051 | 1053 |
|
1052 | 1054 | public void afterTransactionCompletion(boolean success) {
|
1053 |
| - while ( !processes.isEmpty() ) { |
| 1055 | + AfterTransactionCompletionProcess process; |
| 1056 | + while ( ( process = processes.poll() ) != null ) { |
1054 | 1057 | try {
|
1055 |
| - processes.poll().doAfterTransactionCompletion( success, session ); |
| 1058 | + process.doAfterTransactionCompletion( success, session ); |
1056 | 1059 | }
|
1057 | 1060 | catch (CacheException ce) {
|
1058 | 1061 | LOG.unableToReleaseCacheLock( ce );
|
|
0 commit comments