@@ -452,7 +452,7 @@ export class GenericHandler implements RestateHandler {
452
452
453
453
// See vm_log below for more details
454
454
const invocationLoggers : Map < number , Logger > = new Map < number , Logger > ( ) ;
455
- const logsTextDecoder = new TextDecoder ( ) ;
455
+ const logsTextDecoder = new TextDecoder ( "utf-8" , { fatal : false } ) ;
456
456
457
457
/**
458
458
* The shared core propagates logs to the SDK invoking this method.
@@ -463,18 +463,31 @@ export function vm_log(
463
463
strBytes : Uint8Array ,
464
464
loggerId ?: number
465
465
) {
466
- const logger = ( loggerId && invocationLoggers . get ( loggerId ) ) || undefined ;
467
- const str = logsTextDecoder . decode ( strBytes ) ;
468
- if ( logger !== undefined ) {
469
- logger . logForLevel ( wasmLogLevelToRestateLogLevel ( level ) , str ) ;
470
- } else {
466
+ try {
467
+ const logger = ( loggerId && invocationLoggers . get ( loggerId ) ) || undefined ;
468
+ const str = logsTextDecoder . decode ( strBytes ) ;
469
+ if ( logger !== undefined ) {
470
+ logger . logForLevel ( wasmLogLevelToRestateLogLevel ( level ) , str ) ;
471
+ } else {
472
+ defaultLoggerTransport (
473
+ {
474
+ level : wasmLogLevelToRestateLogLevel ( level ) ,
475
+ replaying : false ,
476
+ source : LogSource . JOURNAL ,
477
+ } ,
478
+ str
479
+ ) ;
480
+ }
481
+ } catch ( e ) {
482
+ // This function CAN'T EVER propagate an error,
483
+ // because otherwise it will cause an awesome error in the shared core due to concurrent usage of it.
471
484
defaultLoggerTransport (
472
485
{
473
- level : wasmLogLevelToRestateLogLevel ( level ) ,
486
+ level : RestateLogLevel . ERROR ,
474
487
replaying : false ,
475
- source : LogSource . JOURNAL ,
488
+ source : LogSource . SYSTEM ,
476
489
} ,
477
- str
490
+ "Unexpected error thrown while trying to log: " + e ?. toString ( )
478
491
) ;
479
492
}
480
493
}
0 commit comments