fix provider selection in aggregator (#6365)

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
This commit is contained in:
Alexander Onnikov 2024-08-21 18:20:18 +07:00 committed by GitHub
parent af332c6beb
commit 1bf50e1128
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 14 additions and 12 deletions

View File

@ -34,6 +34,7 @@ export async function moveFiles (
for (const [name, adapter] of exAdapter.adapters.entries()) {
if (name === target) continue
console.log('moving from', name)
const iterator = await adapter.listStream(ctx, workspaceId)
while (true) {
@ -44,9 +45,16 @@ export async function moveFiles (
if (blob === undefined) continue
if (blob.provider === target) continue
const readable = await exAdapter.get(ctx, workspaceId, data._id)
const stream = readable.pipe(new PassThrough())
await exAdapter.put(ctx, workspaceId, data._id, stream, blob.contentType, blob.size)
try {
const readable = await exAdapter.get(ctx, workspaceId, data._id)
readable.on('end', () => {
readable.destroy()
})
const stream = readable.pipe(new PassThrough())
await exAdapter.put(ctx, workspaceId, data._id, stream, blob.contentType, blob.size)
} catch (err) {
console.error('failed to process blob', name, data._id, err)
}
count += 1
if (count % 100 === 0) {

View File

@ -72,7 +72,7 @@ export function getFileUrl (file: string, filename?: string): string {
const template = getFilesUrl()
return template
.replaceAll(':filename', encodeURIComponent(filename ?? ''))
.replaceAll(':filename', encodeURIComponent(filename ?? file))
.replaceAll(':workspace', encodeURIComponent(getCurrentWorkspace()))
.replaceAll(':blobId', encodeURIComponent(file))
}

View File

@ -74,8 +74,6 @@ function blobToSrcSet (cfg: PreviewConfig, blob: Ref<Blob>, width: number | unde
' 2x, ' +
fu.replaceAll(':size', `${width * 3}`) +
' 3x'
} else {
result += downloadUrl
}
return result

View File

@ -256,12 +256,8 @@ export class AggregatorStorageAdapter implements StorageAdapter, StorageAdapterE
@withContext('aggregator-get', {})
async get (ctx: MeasureContext, workspaceId: WorkspaceId, name: string): Promise<Readable> {
// const { provider, stat } = await this.findProvider(ctx, workspaceId, name)
const provider = this.adapters.get(this.defaultAdapter)
if (provider === undefined) {
throw new NoSuchKeyError('No such provider found')
}
return await provider.get(ctx, workspaceId, name)
const { provider, stat } = await this.findProvider(ctx, workspaceId, name)
return await provider.get(ctx, workspaceId, stat.storageId)
}
@withContext('find-provider', {})