Skip to content

Commit

Permalink
fix: investigate missing resource issue
Browse files Browse the repository at this point in the history
  • Loading branch information
Maxim-Gadalov committed Mar 4, 2024
1 parent 8cff92b commit 8e3e946
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions src/main/java/com/epam/aidial/core/service/ResourceService.java
Original file line number Diff line number Diff line change
Expand Up @@ -182,16 +182,20 @@ public String getResource(ResourceDescription descriptor) {

@Nullable
public String getResource(ResourceDescription descriptor, boolean lock) {
String resourceUrl = descriptor.getUrl();
log.info("Downloading resource {}", resourceUrl);
String redisKey = redisKey(descriptor);
Result result = redisGet(redisKey, true);

if (result == null) {
log.info("Resource not found in redis {}", resourceUrl);
try (var ignore = lock ? lockService.lock(redisKey) : null) {
result = redisGet(redisKey, true);

if (result == null) {
String blobKey = blobKey(descriptor);
result = blobGet(blobKey, true);
log.info("Resource loaded from storage {}, exists {}, is empty {}", resourceUrl, result.exists, result.body.isEmpty());
redisPut(redisKey, result);
}
}
Expand All @@ -206,12 +210,15 @@ public ResourceItemMetadata putResource(ResourceDescription descriptor, String b

public ResourceItemMetadata putResource(ResourceDescription descriptor, String body,
boolean overwrite, boolean lock) {
String resourceUrl = descriptor.getUrl();
log.info("Saving resource {}", resourceUrl);
String redisKey = redisKey(descriptor);
String blobKey = blobKey(descriptor);

try (var ignore = lock ? lockService.lock(redisKey) : null) {
Result result = redisGet(redisKey, false);
if (result == null) {
log.info("Resource {} not found in redis", resourceUrl);
result = blobGet(blobKey, false);
}

Expand All @@ -222,9 +229,11 @@ public ResourceItemMetadata putResource(ResourceDescription descriptor, String b
long updatedAt = time();
long createdAt = result.exists ? result.createdAt : updatedAt;
redisPut(redisKey, new Result(body, createdAt, updatedAt, false, true));
log.info("Resource saved in redis {}", resourceUrl);

if (!result.exists) {
blobPut(blobKey, "", createdAt, updatedAt); // create an empty object for listing
log.info("Resource with empty body saved on disc {}", resourceUrl);
}

return new ResourceItemMetadata(descriptor).setCreatedAt(createdAt).setUpdatedAt(updatedAt);
Expand Down Expand Up @@ -298,11 +307,11 @@ private void sync(String redisKey) {

String blobKey = blobKeyFromRedisKey(redisKey);
if (result.exists) {
log.debug("Syncing resource: {}. Blob updating", redisKey);
log.info("Syncing resource: {}. Blob updating", redisKey);
result = redisGet(redisKey, true);
blobPut(blobKey, result.body, result.createdAt, result.updatedAt);
} else {
log.debug("Syncing resource: {}. Blob deleting", redisKey);
log.info("Syncing resource: {}. Blob deleting", redisKey);
blobDelete(blobKey);
}

Expand Down

0 comments on commit 8e3e946

Please sign in to comment.