SENTRY-2477: When requesting for deltas check if nn seq num is 1 more than latest sequence num (Arjun Mishra reviewed by Na Li)
diff --git a/sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/DBUpdateForwarder.java b/sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/DBUpdateForwarder.java
index 08b16a4..67fece1 100644
--- a/sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/DBUpdateForwarder.java
+++ b/sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/DBUpdateForwarder.java
@@ -117,7 +117,7 @@
     long curSeqNum = deltaRetriever.getLatestDeltaID();
     LOGGER.debug("({}) Current sequence number is {}", retrieverType, curSeqNum);
 
-    if (seqNum > curSeqNum) {
+    if (seqNum == curSeqNum + 1) {
       // No new notifications were processed.
       LOGGER.debug("{}, No new updates", retrieverType);
       return Collections.emptyList();
diff --git a/sentry-hdfs/sentry-hdfs-service/src/test/java/org/apache/sentry/hdfs/TestDBUpdateForwarder.java b/sentry-hdfs/sentry-hdfs-service/src/test/java/org/apache/sentry/hdfs/TestDBUpdateForwarder.java
index f86ce6f..35cfb63 100644
--- a/sentry-hdfs/sentry-hdfs-service/src/test/java/org/apache/sentry/hdfs/TestDBUpdateForwarder.java
+++ b/sentry-hdfs/sentry-hdfs-service/src/test/java/org/apache/sentry/hdfs/TestDBUpdateForwarder.java
@@ -92,6 +92,15 @@
   }
 
   @Test
+  public void testEmptyListReturnedWhenImageSeqIsEqualToLatest() throws Exception {
+    Mockito.when(imageRetriever.getLatestImageID()).thenReturn(1L);
+    Mockito.when(deltaRetriever.getLatestDeltaID()).thenReturn(10L);
+
+    List<PathsUpdate> updates = updater.getAllUpdatesFrom(11, 1);
+    assertTrue(updates.isEmpty());
+  }
+
+  @Test
   public void testFirstImageSyncIsReturnedWhenImageNumIsZero() throws Exception {
     Mockito.when(imageRetriever.getLatestImageID()).thenReturn(1L);
     Mockito.when(imageRetriever.retrieveFullImage())
@@ -143,6 +152,21 @@
   }
 
   @Test
+  public void testNewImageUpdateIsReturnedWhenImageSeqIsGreaterThanLatestSeqByOne() throws Exception {
+    Mockito.when(imageRetriever.getLatestImageID()).thenReturn(1L);
+    Mockito.when(deltaRetriever.getLatestDeltaID()).thenReturn(10L);
+    Mockito.when(deltaRetriever.isDeltaAvailable(15)).thenReturn(false);
+    Mockito.when(imageRetriever.retrieveFullImage())
+        .thenReturn(new PathsUpdate(10, 1, true));
+
+    List<PathsUpdate> updates = updater.getAllUpdatesFrom(15, 1);
+    assertEquals(1, updates.size());
+    assertEquals(10, updates.get(0).getSeqNum());
+    assertEquals(1, updates.get(0).getImgNum());
+    assertTrue(updates.get(0).hasFullImage());
+  }
+
+  @Test
   public void testNewImageUpdateIsReturnedWhenRequestedDeltaIsNotAvailable() throws Exception {
     Mockito.when(imageRetriever.getLatestImageID()).thenReturn(1L);
     Mockito.when(deltaRetriever.getLatestDeltaID()).thenReturn(3L);