fix: datalake logs and fixes (#7015)

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
This commit is contained in:
Alexander Onnikov 2024-10-22 23:14:53 +07:00 committed by GitHub
parent 6d3fd41f02
commit c1fe92536f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -128,6 +128,16 @@ export class Client {
metadata: ObjectMetadata,
size?: number
): Promise<void> {
if (size === undefined) {
if (Buffer.isBuffer(stream)) {
size = stream.length
} else if (typeof stream === 'string') {
size = Buffer.byteLength(stream)
} else {
// TODO: Implement size calculation for Readable streams
ctx.warn('unknown object size', { workspace, objectName })
}
}
if (size === undefined || size < 64 * 1024 * 1024) {
await ctx.with('direct-upload', {}, async (ctx) => {
await this.uploadWithFormData(ctx, workspace, objectName, stream, metadata)
@ -164,14 +174,14 @@ export class Client {
const result = (await response.json()) as BlobUploadResult[]
if (result.length !== 1) {
ctx.error('bad datalake response', { objectName, result })
ctx.error('bad datalake response', { workspace, objectName, result })
throw new Error('Bad datalake response')
}
const uploadResult = result[0]
if ('error' in uploadResult) {
ctx.error('error during blob upload', { objectName, error: uploadResult.error })
ctx.error('error during blob upload', { workspace, objectName, error: uploadResult.error })
throw new Error('Upload failed: ' + uploadResult.error)
}
}
@ -233,7 +243,8 @@ async function fetchSafe (ctx: MeasureContext, url: string, init?: RequestInit):
}
if (!response.ok) {
throw new Error(response.status === 404 ? 'Not Found' : 'HTTP error ' + response.status)
const text = await response.text()
throw new Error(response.status === 404 ? 'Not Found' : 'HTTP error ' + response.status + ': ' + text)
}
return response