diff --git a/.RELEASING.md.swp b/.RELEASING.md.swp
new file mode 100644
index 0000000..40d7ef4
--- /dev/null
+++ b/.RELEASING.md.swp
Binary files differ
diff --git a/.pom.xml.swp b/.pom.xml.swp
new file mode 100644
index 0000000..661be31
--- /dev/null
+++ b/.pom.xml.swp
Binary files differ
diff --git a/src/main/c/org_apache_activemq_artemis_nativo_jlibaio_LibaioContext.c b/src/main/c/org_apache_activemq_artemis_nativo_jlibaio_LibaioContext.c
index d495eb4..eaecdbf 100644
--- a/src/main/c/org_apache_activemq_artemis_nativo_jlibaio_LibaioContext.c
+++ b/src/main/c/org_apache_activemq_artemis_nativo_jlibaio_LibaioContext.c
@@ -151,6 +151,11 @@
             }
 
             if (available >= max) {
+               short retryTail = 0;
+               // we first wait for 20 iterations, to see if the tail moved
+               for (retryTail = 0; retryTail < 20 && ring->tail == tail; retryTail++) {
+                  mem_barrier();
+               }
                // This is to trap a possible bug from the kernel:
                //       https://bugzilla.redhat.com/show_bug.cgi?id=1845326
                //       https://issues.apache.org/jira/browse/ARTEMIS-2800
@@ -160,7 +165,10 @@
                // while (ring->tail == tail) mem_barrier();
                //
                // however eventually we could have available==max in a legal situation what could lead to infinite loop here
-               return io_getevents(aio_ctx, min_nr, max, events, timeout);
+               if (retryTail == 20) {
+                   // if the tail didn't move, we will then perform a regular syscall
+                   return io_getevents(aio_ctx, min_nr, max, events, timeout);
+               }
 
                // also: I could have called io_getevents to the one at the end of this method
                //       but I really hate goto, so I would rather have a duplicate code here
@@ -774,6 +782,12 @@
       return;
     }
     int max = theControl->queueSize;
+    if (max > 1) {
+       // We can't maximize the queue reading
+       // as we need to check eventually for the tail moving
+       // this is to minimize the number of syscalls we perform on trapping a previous race.
+       max = max / 2;
+    }
     pthread_mutex_lock(&(theControl->pollLock));
 
     short running = 1;
