in src/main/java/com/amazonaws/services/neptune/export/ExportToS3NeptuneExportEventHandler.java [271:332]
private void uploadCompletionFileToS3(S3TransferManager transferManager,
File directory,
S3ObjectInfo outputS3ObjectInfo,
ExportStats stats,
GraphSchema graphSchema) throws IOException {
if (StringUtils.isEmpty(completionFileS3Path)) {
return;
}
if (directory == null || !directory.exists()) {
logger.warn("Ignoring request to upload completion file to S3 because directory from which to upload files does not exist");
return;
}
String completionFilename = s3UploadParams.createExportSubdirectory() ?
directory.getName() :
String.valueOf(System.currentTimeMillis());
File completionFile = new File(localOutputPath, completionFilename + ".json");
ObjectNode neptuneExportNode = JsonNodeFactory.instance.objectNode();
completionFilePayload.set("neptuneExport", neptuneExportNode);
neptuneExportNode.put("outputS3Path", outputS3ObjectInfo.toString());
stats.addTo(neptuneExportNode, graphSchema);
for (CompletionFileWriter completionFileWriter : completionFileWriters) {
completionFileWriter.updateCompletionFile(completionFilePayload);
}
try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(completionFile), UTF_8))) {
ObjectWriter objectWriter = new ObjectMapper().writer().withDefaultPrettyPrinter();
writer.write(objectWriter.writeValueAsString(completionFilePayload));
}
S3ObjectInfo completionFileS3ObjectInfo =
new S3ObjectInfo(completionFileS3Path).replaceOrAppendKey(
"_COMPLETION_ID_",
FilenameUtils.getBaseName(completionFile.getName()),
completionFile.getName());
logger.info("Uploading completion file to {}", completionFileS3ObjectInfo.key());
try {
UploadFileRequest uploadFileRequest = UploadFileRequest.builder()
.source(completionFile)
.putObjectRequest(PutObjectRequest.builder()
.bucket(completionFileS3ObjectInfo.bucket())
.key(completionFileS3ObjectInfo.key())
.metadata(S3ObjectInfo.createObjectMetadata(completionFile.length(), sseKmsKeyId))
.tagging(createObjectTags(profiles))
.build())
.build();
FileUpload upload = transferManager.uploadFile(uploadFileRequest);
upload.completionFuture().join();
} catch (CompletionException | CancellationException e) {
logger.warn(e.getMessage());
Thread.currentThread().interrupt();
}
}