in ingest/src/main/java/com/microsoft/azure/kusto/ingest/QueuedIngestClientImpl.java [153:185]
protected IngestionResult ingestFromFileImpl(FileSourceInfo fileSourceInfo, IngestionProperties ingestionProperties)
throws IngestionClientException, IngestionServiceException {
// Argument validation:
Ensure.argIsNotNull(fileSourceInfo, "fileSourceInfo");
Ensure.argIsNotNull(ingestionProperties, "ingestionProperties");
fileSourceInfo.validate();
ingestionProperties.validate();
try {
String filePath = fileSourceInfo.getFilePath();
Ensure.fileExists(filePath);
CompressionType sourceCompressionType = IngestionUtils.getCompression(filePath);
IngestionProperties.DataFormat dataFormat = ingestionProperties.getDataFormat();
boolean shouldCompress = shouldCompress(sourceCompressionType, dataFormat);
File file = new File(filePath);
String blobName = genBlobName(
file.getName(),
ingestionProperties.getDatabaseName(),
ingestionProperties.getTableName(),
dataFormat.getKustoValue(), // Used to use an empty string if the DataFormat was empty. Now it can't be empty, with a default of CSV.
shouldCompress ? CompressionType.gz : sourceCompressionType);
String blobPath = ResourceAlgorithms.uploadLocalFileWithRetries(resourceManager, azureStorageClient, file, blobName, shouldCompress);
BlobSourceInfo blobSourceInfo = BlobSourceInfo.fromFile(blobPath, fileSourceInfo, sourceCompressionType, shouldCompress);
return ingestFromBlob(blobSourceInfo, ingestionProperties);
} catch (BlobStorageException e) {
throw new IngestionServiceException("Failed to ingest from file", e);
} catch (IOException e) {
throw new IngestionClientException("Failed to ingest from file", e);
}
}