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()) { for (const [name, adapter] of exAdapter.adapters.entries()) {
if (name === target) continue if (name === target) continue
console.log('moving from', name)
const iterator = await adapter.listStream(ctx, workspaceId) const iterator = await adapter.listStream(ctx, workspaceId)
while (true) { while (true) {
@ -44,9 +45,16 @@ export async function moveFiles (
if (blob === undefined) continue if (blob === undefined) continue
if (blob.provider === target) continue if (blob.provider === target) continue
const readable = await exAdapter.get(ctx, workspaceId, data._id) try {
const stream = readable.pipe(new PassThrough()) const readable = await exAdapter.get(ctx, workspaceId, data._id)
await exAdapter.put(ctx, workspaceId, data._id, stream, blob.contentType, blob.size) 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 count += 1
if (count % 100 === 0) { if (count % 100 === 0) {

View File

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

View File

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

View File

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