Skip to content
Snippets Groups Projects
Commit 6eddae9d authored by Dmitrii Novikov (EPAM)'s avatar Dmitrii Novikov (EPAM) Committed by Riabokon Stanislav(EPAM)[GCP]
Browse files

Added logs for not found records

parent 65ef04a9
No related branches found
No related tags found
2 merge requests!744Upgraded packages to mitigated vulns in netty, guava, snakeyaml,!643Added logs for not found records
......@@ -194,6 +194,9 @@ public abstract class BatchServiceImpl implements BatchService {
}
validRecords.put(recordId, recordMetadata.getVersionPath(recordMetadata.getLatestVersion()));
}
if (!recordsNotFound.isEmpty()) {
logger.error("Records were not found due to missed record metadata: " + recordsNotFound);
}
List<String> validRecordObjects = new ArrayList<>(validRecords.values());
if (validRecordObjects.isEmpty()) {
......@@ -203,6 +206,7 @@ public abstract class BatchServiceImpl implements BatchService {
return response;
}
List<String> recordsNotFoundInCloudStorage = new ArrayList<>();
Map<String, String> recordsPreAclMap = this.cloudStorage.read(validRecords, collaborationContext);
this.logUnauthorizedGCSRecords(validRecords, recordsPreAclMap);
Map<String, String> recordsFromCloudStorage = this.postCheckRecordsAcl(recordsPreAclMap, recordsMetadata, collaborationContext);
......@@ -214,7 +218,7 @@ public abstract class BatchServiceImpl implements BatchService {
recordsFromCloudStorage.keySet().forEach(recordId -> {
String recordData = recordsFromCloudStorage.get(recordId);
if (Strings.isNullOrEmpty(recordData)) {
recordsNotFound.add(recordId);
recordsNotFoundInCloudStorage.add(recordId);
} else {
JsonElement jsonRecord = jsonParser.parse(recordData);
RecordMetadata recordMetadata = recordsMetadata.get(CollaborationUtil.getIdWithNamespace(recordId, collaborationContext));
......@@ -224,21 +228,29 @@ public abstract class BatchServiceImpl implements BatchService {
}
});
if (!recordsNotFoundInCloudStorage.isEmpty()) {
logger.error("Records were not found in cloud storage: " + recordsNotFoundInCloudStorage);
recordsNotFound.addAll(recordsNotFoundInCloudStorage);
}
if (isConversionNeeded && !validRecords.isEmpty()) {
RecordsAndStatuses recordsAndStatuses = this.conversionService.doConversion(jsonObjectRecords);
this.checkMismatchAndAddToNotFound(recordIds, recordsNotFound, recordsAndStatuses.getRecords());
response.setConversionStatuses(recordsAndStatuses.getConversionStatuses());
response.setRecords(this.convertFromJsonObjectListToStringList(recordsAndStatuses.getRecords()));
response.setNotFound(recordsNotFound);
return response;
} else {
this.checkMismatchAndAddToNotFound(recordIds, recordsNotFound, jsonObjectRecords);
response.setConversionStatuses(conversionStatuses);
response.setRecords(this.convertFromJsonObjectListToStringList(jsonObjectRecords));
response.setNotFound(recordsNotFound);
this.auditLog(validRecordObjects, this.auditLogger::readMultipleRecordsWithOptionalConversionSuccess,
recordsNotFound, this.auditLogger::readMultipleRecordsWithOptionalConversionFail);
}
this.checkMismatchAndAddToNotFound(recordIds, recordsNotFound, jsonObjectRecords);
response.setConversionStatuses(conversionStatuses);
response.setRecords(this.convertFromJsonObjectListToStringList(jsonObjectRecords));
response.setNotFound(recordsNotFound);
this.auditLog(validRecordObjects, this.auditLogger::readMultipleRecordsWithOptionalConversionSuccess,
recordsNotFound, this.auditLogger::readMultipleRecordsWithOptionalConversionFail);
if (!recordsNotFound.isEmpty()) {
logger.error("Records were not found in total: " + recordsNotFound);
}
return response;
}
......@@ -259,20 +271,19 @@ public abstract class BatchServiceImpl implements BatchService {
}
if (isOpaEnabled) {
List<ValidationOutputRecord> dataAuthzResult = this.opaService.validateUserAccessToRecords(recordMetadataList, OperationType.view);
for (ValidationOutputRecord outputRecord : dataAuthzResult) {
List<ValidationOutputRecord> dataAuthResult = this.opaService.validateUserAccessToRecords(recordMetadataList, OperationType.view);
for (ValidationOutputRecord outputRecord : dataAuthResult) {
if (outputRecord.getErrors().isEmpty()) {
String recordId = outputRecord.getId();
String recordData = recordsPreAclMap.get(recordId);
recordsMap.put(recordId, recordData); }
recordsMap.put(recordId, recordData);
}
}
} else {
List<RecordMetadata> passAclCheckRecordsMetadata = this.entitlementsAndCacheService.hasValidAccess(recordMetadataList, this.headers);
for (RecordMetadata metadata : passAclCheckRecordsMetadata) {
String recordId = metadata.getId();
String recordData = recordsPreAclMap.get(recordId);
recordsMap.put(recordId, recordData);
}
}
......@@ -291,19 +302,18 @@ public abstract class BatchServiceImpl implements BatchService {
}
private void checkMismatchAndAddToNotFound(List<String> requestIds, List<String> notFoundIds, List<JsonObject> fetchedRecords) {
if ((notFoundIds.size() + fetchedRecords.size()) == requestIds.size()) {
if (notFoundIds.size() + fetchedRecords.size() == requestIds.size()) {
return;
}
List<String> fetchedIds = fetchedRecords.stream().map(e -> this.getRecordId(e)).collect(Collectors.toList());
List<String> fetchedIds = fetchedRecords.stream().map(this::getRecordId).collect(Collectors.toList());
for (String requestId : requestIds) {
if (!notFoundIds.contains(requestId) && !fetchedIds.contains(requestId)) {
this.logger.warning("Missing record when fetch records, adding to not found: " + requestId);
this.logger.error("Missing record when fetch records, adding to not found: " + requestId);
notFoundIds.add(requestId);
}
}
return;
}
private String getRecordId(JsonObject record) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment