Skip to content

Commit 87b9539

Browse files
Handle logging strange behaviours (#492)
1 parent b6991c9 commit 87b9539

File tree

1 file changed

+22
-9
lines changed
  • packages/restate-sdk/src/endpoint/handlers

1 file changed

+22
-9
lines changed

packages/restate-sdk/src/endpoint/handlers/generic.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,7 @@ export class GenericHandler implements RestateHandler {
452452

453453
// See vm_log below for more details
454454
const invocationLoggers: Map<number, Logger> = new Map<number, Logger>();
455-
const logsTextDecoder = new TextDecoder();
455+
const logsTextDecoder = new TextDecoder("utf-8", { fatal: false });
456456

457457
/**
458458
* The shared core propagates logs to the SDK invoking this method.
@@ -463,18 +463,31 @@ export function vm_log(
463463
strBytes: Uint8Array,
464464
loggerId?: number
465465
) {
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.
471484
defaultLoggerTransport(
472485
{
473-
level: wasmLogLevelToRestateLogLevel(level),
486+
level: RestateLogLevel.ERROR,
474487
replaying: false,
475-
source: LogSource.JOURNAL,
488+
source: LogSource.SYSTEM,
476489
},
477-
str
490+
"Unexpected error thrown while trying to log: " + e?.toString()
478491
);
479492
}
480493
}

0 commit comments

Comments
 (0)