in storage/src/main/java/com/epam/aidial/core/storage/service/ResourceService.java [339:377]
public ResourceStream getResourceStream(ResourceDescriptor resource, EtagHeader etagHeader) throws IOException {
if (resource.getType().requireCompression()) {
throw new IllegalArgumentException("Streaming is supported for uncompressed resources only");
}
String key = redisKey(resource);
Result result = redisGet(key, true);
if (result != null) {
return ResourceStream.fromResult(result, etagHeader);
}
try (LockService.Lock ignored = lockService.lock(key)) {
result = redisGet(key, true);
if (result != null) {
return ResourceStream.fromResult(result, etagHeader);
}
Blob blob = blobStore.load(resource.getAbsoluteFilePath());
if (blob == null) {
redisPut(key, Result.DELETED_SYNCED);
return null;
}
Payload payload = blob.getPayload();
BlobMetadata metadata = blob.getMetadata();
String etag = extractEtag(metadata.getUserMetadata());
String contentType = metadata.getContentMetadata().getContentType();
Long length = metadata.getContentMetadata().getContentLength();
if (length <= maxSizeToCache) {
result = blobToResult(blob, metadata);
redisPut(key, result);
return ResourceStream.fromResult(result, etagHeader);
}
etagHeader.validate(etag);
return new ResourceStream(payload.openStream(), etag, contentType, length);
}
}