Skip to content

Commit 031d595

Browse files
committed
fix: empty cursor / offset
1 parent 9e146c3 commit 031d595

File tree

4 files changed

+9
-5
lines changed

4 files changed

+9
-5
lines changed

openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,7 +1005,7 @@ public ResultList<T> listAfter(
10051005
if (limitParam > 0) {
10061006
// forward scrolling, if after == null then first page is being asked
10071007
Map<String, String> cursorMap =
1008-
parseCursorMap(after == null ? "" : RestUtil.decodeCursor(after));
1008+
parseCursorMap(after == null || after.isEmpty() ? "" : RestUtil.decodeCursor(after));
10091009
String afterName = FullyQualifiedName.unquoteName(cursorMap.get("name"));
10101010
String afterId = cursorMap.get("id");
10111011
List<String> jsons = dao.listAfter(filter, limitParam + 1, afterName, afterId);
@@ -1019,7 +1019,7 @@ public ResultList<T> listAfter(
10191019

10201020
String beforeCursor;
10211021
String afterCursor = null;
1022-
beforeCursor = after == null ? null : getCursorValue(entities.get(0));
1022+
beforeCursor = after == null || after.isEmpty() ? null : getCursorValue(entities.get(0));
10231023
if (entities.size()
10241024
> limitParam) { // If extra result exists, then next page exists - return after cursor
10251025
entities.remove(limitParam);

openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/WebAnalyticEventRepository.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,8 @@ private String getBeforeOffset(int offsetInt, int limit) {
169169
}
170170

171171
private int getOffset(String offset) {
172-
return offset != null ? Integer.parseInt(RestUtil.decodeCursor(offset)) : 0;
172+
String decoded = RestUtil.decodeCursor(offset);
173+
return offset != null && decoded != null ? Integer.parseInt(decoded) : 0;
173174
}
174175

175176
private Map<String, List<?>> getEntityList(List<String> jsons, boolean skipErrors) {

openmetadata-service/src/main/java/org/openmetadata/service/util/RestUtil.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,9 @@ public static String encodeCursor(String cursor) {
117117
}
118118

119119
public static String decodeCursor(String cursor) {
120-
return cursor == null ? null : new String(Base64.getUrlDecoder().decode(cursor));
120+
return cursor == null || cursor.isEmpty()
121+
? null
122+
: new String(Base64.getUrlDecoder().decode(cursor));
121123
}
122124

123125
public static class PutResponse<T> {

openmetadata-service/src/main/java/org/openmetadata/service/util/jdbi/JdbiUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ public static Jdbi createAndSetupJDBI(DataSourceFactory dbFactory) {
5555
}
5656

5757
public static int getOffset(String offset) {
58-
return offset != null ? Integer.parseInt(RestUtil.decodeCursor(offset)) : 0;
58+
String decoded = RestUtil.decodeCursor(offset);
59+
return offset != null && decoded != null ? Integer.parseInt(decoded) : 0;
5960
}
6061

6162
public static String getAfterOffset(int offsetInt, int limit, int total) {

0 commit comments

Comments
 (0)