diff --git a/pom.xml b/pom.xml index db4dd8deb2942523e5ff568e23456670b9e65d14..c1608443c27e0388da7574a97b257c00c23fc82c 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ <maven.compiler.source>17</maven.compiler.source> <docker.image.prefix>opendes</docker.image.prefix> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <os-core-common.version>2.0.0</os-core-common.version> + <os-core-common.version>3.3.1</os-core-common.version> <netty.version>4.1.115.Final</netty.version> <snakeyaml.version>2.0</snakeyaml.version> <commons-codec.version>1.14</commons-codec.version> diff --git a/storage-core/src/main/java/org/opengroup/osdu/storage/service/BatchServiceImpl.java b/storage-core/src/main/java/org/opengroup/osdu/storage/service/BatchServiceImpl.java index 82a10bcbd2057ec4d9ec976c5a662d0dc07fd61a..49ef6463c4ce3f336bed715efe7c9ee171a1f3da 100644 --- a/storage-core/src/main/java/org/opengroup/osdu/storage/service/BatchServiceImpl.java +++ b/storage-core/src/main/java/org/opengroup/osdu/storage/service/BatchServiceImpl.java @@ -98,7 +98,13 @@ public abstract class BatchServiceImpl implements BatchService { continue; } - validRecords.put(recordId, recordMetadata.getVersionPath(recordMetadata.getLatestVersion())); + Long latestVersion = recordMetadata.getLatestVersion(); + if (latestVersion == null) { + recordsNotFound.add(recordId); + continue; + } + + validRecords.put(recordId, recordMetadata.getVersionPath(latestVersion)); } List<String> validRecordObjects = new ArrayList<>(validRecords.values()); diff --git a/storage-core/src/test/java/org/opengroup/osdu/storage/service/BatchServiceImplTest.java b/storage-core/src/test/java/org/opengroup/osdu/storage/service/BatchServiceImplTest.java index d79be6c04a68d033a59165df0515cb636293868c..45817c4cb45cc5859a24967c6b5068b581a79465 100644 --- a/storage-core/src/test/java/org/opengroup/osdu/storage/service/BatchServiceImplTest.java +++ b/storage-core/src/test/java/org/opengroup/osdu/storage/service/BatchServiceImplTest.java @@ -247,6 +247,28 @@ class BatchServiceImplTest { assertTrue(!multiRecordResponse.getConversionStatuses().isEmpty()); } + @Test + void getMultipleRecords_returnsInvalidRecords_whenRecordsWithoutGcsVersionPaths() { + List<String> recordIds = Arrays.asList(TEST_ID_1, TEST_ID_2); + Map<String, RecordMetadata> recordMetadataMap = new HashMap<>(); + RecordMetadata recordMetadataTestId1 = buildRecordMetadata(TEST_ID_1); + RecordMetadata recordMetadataTestId2 = buildRecordMetadata(TEST_ID_2); + recordMetadataTestId1.setGcsVersionPaths(new ArrayList<>()); + recordMetadataTestId2.setGcsVersionPaths(new ArrayList<>()); + recordMetadataMap.put(TEST_ID_1, recordMetadataTestId1); + recordMetadataMap.put(TEST_ID_2, recordMetadataTestId2); + + when(recordRepository.get(recordIds, Optional.empty())).thenReturn(recordMetadataMap); + + MultiRecordIds multiRecordIds = new MultiRecordIds(); + multiRecordIds.setRecords(recordIds); + MultiRecordInfo multiRecordInfo = sut.getMultipleRecords(multiRecordIds, Optional.empty()); + + assertTrue(multiRecordInfo.getRecords().isEmpty()); + assertFalse(multiRecordInfo.getInvalidRecords().isEmpty()); + assertTrue(multiRecordInfo.getRetryRecords().isEmpty()); + } + private static RecordMetadata buildRecordMetadata(String recordId) { Acl acl = new Acl();