fix(server): throw s3 store error directly (#10572)

close CLOUD-154
This commit is contained in:
fengmk2
2025-03-03 07:09:54 +00:00
parent 0e26498e6a
commit 0e24ea3ac5

View File

@@ -35,7 +35,7 @@ export class S3StorageProvider implements StorageProvider {
) { ) {
this.client = new S3Client({ this.client = new S3Client({
region: 'auto', region: 'auto',
// s3 client uses keep-alive by default to accelrate requests, and max requests queue is 50. // s3 client uses keep-alive by default to accelerate requests, and max requests queue is 50.
// If some of them are long holding or dead without response, the whole queue will block. // If some of them are long holding or dead without response, the whole queue will block.
// By default no timeout is set for requests or connections, so we set them here. // By default no timeout is set for requests or connections, so we set them here.
requestHandler: { requestTimeout: 60_000, connectionTimeout: 10_000 }, requestHandler: { requestTimeout: 60_000, connectionTimeout: 10_000 },
@@ -70,16 +70,14 @@ export class S3StorageProvider implements StorageProvider {
this.logger.verbose(`Object \`${key}\` put`); this.logger.verbose(`Object \`${key}\` put`);
} catch (e) { } catch (e) {
throw new Error( this.logger.error(
`Failed to put object (${JSON.stringify({ `Failed to put object (${JSON.stringify({
key, key,
bucket: this.bucket, bucket: this.bucket,
metadata, metadata,
})})`, })})`
{
cause: e,
}
); );
throw e;
} }
} }
@@ -103,11 +101,9 @@ export class S3StorageProvider implements StorageProvider {
if (e instanceof NoSuchKey) { if (e instanceof NoSuchKey) {
this.logger.verbose(`Object \`${key}\` not found`); this.logger.verbose(`Object \`${key}\` not found`);
return undefined; return undefined;
} else {
throw new Error(`Failed to head object \`${key}\``, {
cause: e,
});
} }
this.logger.error(`Failed to head object \`${key}\``);
throw e;
} }
} }
@@ -145,11 +141,9 @@ export class S3StorageProvider implements StorageProvider {
if (e instanceof NoSuchKey) { if (e instanceof NoSuchKey) {
this.logger.verbose(`Object \`${key}\` not found`); this.logger.verbose(`Object \`${key}\` not found`);
return {}; return {};
} else {
throw new Error(`Failed to read object \`${key}\``, {
cause: e,
});
} }
this.logger.error(`Failed to read object \`${key}\``);
throw e;
} }
} }
@@ -191,9 +185,8 @@ export class S3StorageProvider implements StorageProvider {
); );
return result; return result;
} catch (e) { } catch (e) {
throw new Error(`Failed to list objects with prefix \`${prefix}\``, { this.logger.error(`Failed to list objects with prefix \`${prefix}\``);
cause: e, throw e;
});
} }
} }
@@ -205,10 +198,11 @@ export class S3StorageProvider implements StorageProvider {
Key: key, Key: key,
}) })
); );
this.logger.verbose(`Deleted object \`${key}\``);
} catch (e) { } catch (e) {
throw new Error(`Failed to delete object \`${key}\``, { this.logger.error(`Failed to delete object \`${key}\``);
cause: e, throw e;
});
} }
} }
} }