77 SourceCdnError ,
88 StorageError ,
99} from '@backend/core/errors'
10- import { elapsed , logger } from '@backend/core/logger'
10+ import { elapsed , idTag , logger } from '@backend/core/logger'
1111import { buildAuthHeader } from '@backend/core/oauthClient'
1212import { withCsrfTokenRetry } from '@backend/mediawiki/tokenRetry'
1313import type { Redis } from 'ioredis'
@@ -238,7 +238,8 @@ export class MediaWikiClient {
238238 const sha1 = createHash ( 'sha1' ) . update ( buffer ) . digest ( 'hex' )
239239 const totalChunks = Math . ceil ( buffer . length / CHUNK_SIZE )
240240 const start = process . hrtime . bigint ( )
241- logger . info ( `[mw] uploading ${ filename } (${ buffer . length } bytes, ${ totalChunks } chunks)` )
241+ const tag = idTag ( uploadId , batchId )
242+ logger . info ( `[mw] ${ tag } uploading ${ filename } (${ buffer . length } bytes, ${ totalChunks } chunks)` )
242243
243244 const duplicates = await this . findDuplicates ( sha1 )
244245 if ( duplicates . length > 0 ) {
@@ -275,7 +276,7 @@ export class MediaWikiClient {
275276 }
276277
277278 const chunkResponse = await withCsrfTokenRetry (
278- `[mw] uploadFile chunk ${ offset / CHUNK_SIZE + 1 } /${ totalChunks } ` ,
279+ `[mw] ${ tag } uploadFile chunk ${ offset / CHUNK_SIZE + 1 } /${ totalChunks } ` ,
279280 ( ) => this . getCsrfToken ( ) ,
280281 ( t ) => this . apiUploadChunk ( buildFormData ( t ) ) ,
281282 token ,
@@ -300,10 +301,10 @@ export class MediaWikiClient {
300301 const upload = result . upload as Record < string , unknown >
301302 stashKey = upload . filekey as string
302303 const chunkNum = offset / CHUNK_SIZE + 1
303- logger . info ( `[mw] chunk ${ chunkNum } /${ totalChunks } uploaded` )
304+ logger . info ( `[mw] ${ tag } chunk ${ chunkNum } /${ totalChunks } uploaded` )
304305 }
305306
306- logger . info ( `[mw] final commit for ${ filename } ` )
307+ logger . info ( `[mw] ${ tag } final commit for ${ filename } ` )
307308 let commitResult : Record < string , unknown > | null = null
308309 for ( let attempt = 0 ; attempt <= STASH_RETRY_LIMIT ; attempt ++ ) {
309310 const buildFormData = ( t : string ) => {
@@ -318,7 +319,7 @@ export class MediaWikiClient {
318319 }
319320
320321 const commitResponse = await withCsrfTokenRetry (
321- `[mw] uploadFile commit (attempt ${ attempt + 1 } )` ,
322+ `[mw] ${ tag } uploadFile commit (attempt ${ attempt + 1 } )` ,
322323 ( ) => this . getCsrfToken ( ) ,
323324 ( t ) => this . apiUploadChunk ( buildFormData ( t ) , true ) ,
324325 token ,
@@ -329,7 +330,7 @@ export class MediaWikiClient {
329330 if ( errorObj ) {
330331 if ( errorObj . code === 'uploadstash-file-not-found' && attempt < STASH_RETRY_LIMIT ) {
331332 logger . warn (
332- `[mw] stash file not found on attempt ${ attempt + 1 } , retrying in ${ STASH_RETRY_DELAY_MS } ms` ,
333+ `[mw] ${ tag } stash file not found on attempt ${ attempt + 1 } , retrying in ${ STASH_RETRY_DELAY_MS } ms` ,
333334 )
334335 await new Promise ( ( resolve ) => setTimeout ( resolve , STASH_RETRY_DELAY_MS ) )
335336 continue
@@ -364,8 +365,8 @@ export class MediaWikiClient {
364365 )
365366 }
366367 logger . warn (
367- { uploadId , filename, result : upload . result , warnings } ,
368- `[mw] unexpected upload result during commit` ,
368+ { filename, result : upload . result , warnings } ,
369+ `[mw] ${ tag } unexpected upload result during commit` ,
369370 )
370371 throw new Error ( `Unexpected upload result: ${ upload . result } ` )
371372 }
@@ -374,7 +375,7 @@ export class MediaWikiClient {
374375 const upload = commitResult . upload as Record < string , unknown >
375376 const imageinfo = upload . imageinfo as Record < string , string >
376377 await redis . del ( lockKey )
377- logger . info ( `[mw] uploaded ${ filename } | ${ elapsed ( start ) } ` )
378+ logger . info ( `[mw] ${ tag } uploaded ${ filename } | ${ elapsed ( start ) } ` )
378379 return imageinfo . descriptionurl !
379380 } catch ( err ) {
380381 await redis . del ( lockKey )
@@ -387,13 +388,14 @@ export class MediaWikiClient {
387388 claims : unknown [ ] | null ,
388389 labels : Record < string , { language : string ; value : string } > | null ,
389390 editSummary : string ,
391+ tag : string ,
390392 ) : Promise < void > {
391393 const start = process . hrtime . bigint ( )
392394 const payload : Record < string , unknown > = { }
393395 if ( claims ) payload . claims = claims
394396 if ( labels ) payload . labels = labels
395397 const { result } = await withCsrfTokenRetry (
396- `[mw] applySdc ${ filename } ` ,
398+ `[mw] ${ tag } applySdc ${ filename } ` ,
397399 ( ) => this . getCsrfToken ( ) ,
398400 ( token ) =>
399401 this . apiRequest (
@@ -404,10 +406,10 @@ export class MediaWikiClient {
404406 )
405407 if ( result . error )
406408 throw new Error ( ( result . error as Record < string , string > ) . info ?? 'wbeditentity failed' )
407- logger . info ( `[mw] sdc applied to ${ filename } | ${ elapsed ( start ) } ` )
409+ logger . info ( `[mw] ${ tag } sdc applied to ${ filename } | ${ elapsed ( start ) } ` )
408410 }
409411
410- async nullEdit ( filename : string ) : Promise < void > {
412+ async nullEdit ( filename : string , tag : string ) : Promise < void > {
411413 const start = process . hrtime . bigint ( )
412414 for ( let attempt = 0 ; attempt <= STASH_RETRY_LIMIT ; attempt ++ ) {
413415 try {
@@ -425,7 +427,7 @@ export class MediaWikiClient {
425427 const mainSlot = ( slots . main as Record < string , unknown > ) ?? { }
426428 const content = ( mainSlot . content as string ) ?? ''
427429 const { result } = await withCsrfTokenRetry (
428- `[mw] nullEdit ${ filename } ` ,
430+ `[mw] ${ tag } nullEdit ${ filename } ` ,
429431 ( ) => this . getCsrfToken ( ) ,
430432 ( token ) =>
431433 this . apiRequest ( { action : 'edit' } , 'POST' , {
@@ -438,12 +440,12 @@ export class MediaWikiClient {
438440 )
439441 if ( result . error )
440442 throw new Error ( ( result . error as Record < string , string > ) . info ?? 'null edit failed' )
441- logger . info ( `[mw] null edit on ${ filename } | ${ elapsed ( start ) } ` )
443+ logger . info ( `[mw] ${ tag } null edit on ${ filename } | ${ elapsed ( start ) } ` )
442444 return
443445 } catch ( err ) {
444446 if ( attempt < STASH_RETRY_LIMIT ) {
445447 logger . warn (
446- `[mw] null edit attempt ${ attempt + 1 } failed for ${ filename } , retrying in ${ STASH_RETRY_DELAY_MS } ms` ,
448+ `[mw] ${ tag } null edit attempt ${ attempt + 1 } failed for ${ filename } , retrying in ${ STASH_RETRY_DELAY_MS } ms` ,
447449 )
448450 await new Promise ( ( resolve ) => setTimeout ( resolve , STASH_RETRY_DELAY_MS ) )
449451 } else {
0 commit comments