|
4 | 4 | "context" |
5 | 5 | "errors" |
6 | 6 | "fmt" |
| 7 | + "log/slog" |
7 | 8 | "math" |
8 | 9 | "reflect" |
9 | 10 | "runtime" |
@@ -436,10 +437,14 @@ func RegisterWorkflow[P any, R any](ctx DBOSContext, fn Workflow[P, R], opts ... |
436 | 437 | fqn := runtime.FuncForPC(reflect.ValueOf(fn).Pointer()).Name() |
437 | 438 |
|
438 | 439 | // Registry the input/output types for gob encoding |
| 440 | + var logger slog.Logger |
| 441 | + if c, ok := ctx.(*dbosContext); ok { |
| 442 | + logger = *c.logger |
| 443 | + } |
439 | 444 | var p P |
440 | 445 | var r R |
441 | | - safeGobRegister(p, ctx.(*dbosContext).logger) |
442 | | - safeGobRegister(r, ctx.(*dbosContext).logger) |
| 446 | + safeGobRegister(p, &logger) |
| 447 | + safeGobRegister(r, &logger) |
443 | 448 |
|
444 | 449 | // Register a type-erased version of the durable workflow for recovery |
445 | 450 | typedErasedWorkflow := WorkflowFunc(func(ctx DBOSContext, input any) (any, error) { |
@@ -1040,8 +1045,12 @@ func RunAsStep[R any](ctx DBOSContext, fn Step[R], opts ...StepOption) (R, error |
1040 | 1045 | } |
1041 | 1046 |
|
1042 | 1047 | // Register the output type for gob encoding |
| 1048 | + var logger slog.Logger |
| 1049 | + if c, ok := ctx.(*dbosContext); ok { |
| 1050 | + logger = *c.logger |
| 1051 | + } |
1043 | 1052 | var r R |
1044 | | - safeGobRegister(r, ctx.(*dbosContext).logger) |
| 1053 | + safeGobRegister(r, &logger) |
1045 | 1054 |
|
1046 | 1055 | // Append WithStepName option to ensure the step name is set. This will not erase a user-provided step name |
1047 | 1056 | stepName := runtime.FuncForPC(reflect.ValueOf(fn).Pointer()).Name() |
@@ -1204,8 +1213,12 @@ func Send[P any](ctx DBOSContext, destinationID string, message P, topic string) |
1204 | 1213 | if ctx == nil { |
1205 | 1214 | return errors.New("ctx cannot be nil") |
1206 | 1215 | } |
| 1216 | + var logger slog.Logger |
| 1217 | + if c, ok := ctx.(*dbosContext); ok { |
| 1218 | + logger = *c.logger |
| 1219 | + } |
1207 | 1220 | var typedMessage P |
1208 | | - safeGobRegister(typedMessage, ctx.(*dbosContext).logger) |
| 1221 | + safeGobRegister(typedMessage, &logger) |
1209 | 1222 | return ctx.Send(ctx, destinationID, message, topic) |
1210 | 1223 | } |
1211 | 1224 |
|
@@ -1281,8 +1294,12 @@ func SetEvent[P any](ctx DBOSContext, key string, message P) error { |
1281 | 1294 | if ctx == nil { |
1282 | 1295 | return errors.New("ctx cannot be nil") |
1283 | 1296 | } |
| 1297 | + var logger slog.Logger |
| 1298 | + if c, ok := ctx.(*dbosContext); ok { |
| 1299 | + logger = *c.logger |
| 1300 | + } |
1284 | 1301 | var typedMessage P |
1285 | | - safeGobRegister(typedMessage, ctx.(*dbosContext).logger) |
| 1302 | + safeGobRegister(typedMessage, &logger) |
1286 | 1303 | return ctx.SetEvent(ctx, key, message) |
1287 | 1304 | } |
1288 | 1305 |
|
@@ -1475,8 +1492,12 @@ func RetrieveWorkflow[R any](ctx DBOSContext, workflowID string) (WorkflowHandle |
1475 | 1492 | } |
1476 | 1493 |
|
1477 | 1494 | // Register the output for gob encoding |
| 1495 | + var logger slog.Logger |
| 1496 | + if c, ok := ctx.(*dbosContext); ok { |
| 1497 | + logger = *c.logger |
| 1498 | + } |
1478 | 1499 | var r R |
1479 | | - safeGobRegister(r, ctx.(*dbosContext).logger) |
| 1500 | + safeGobRegister(r, &logger) |
1480 | 1501 |
|
1481 | 1502 | // Call the interface method |
1482 | 1503 | handle, err := ctx.RetrieveWorkflow(ctx, workflowID) |
@@ -1569,8 +1590,12 @@ func ResumeWorkflow[R any](ctx DBOSContext, workflowID string) (WorkflowHandle[R |
1569 | 1590 | } |
1570 | 1591 |
|
1571 | 1592 | // Register the output for gob encoding |
| 1593 | + var logger slog.Logger |
| 1594 | + if c, ok := ctx.(*dbosContext); ok { |
| 1595 | + logger = *c.logger |
| 1596 | + } |
1572 | 1597 | var r R |
1573 | | - safeGobRegister(r, ctx.(*dbosContext).logger) |
| 1598 | + safeGobRegister(r, &logger) |
1574 | 1599 |
|
1575 | 1600 | _, err := ctx.ResumeWorkflow(ctx, workflowID) |
1576 | 1601 | if err != nil { |
@@ -1661,8 +1686,12 @@ func ForkWorkflow[R any](ctx DBOSContext, input ForkWorkflowInput) (WorkflowHand |
1661 | 1686 | } |
1662 | 1687 |
|
1663 | 1688 | // Register the output for gob encoding |
| 1689 | + var logger slog.Logger |
| 1690 | + if c, ok := ctx.(*dbosContext); ok { |
| 1691 | + logger = *c.logger |
| 1692 | + } |
1664 | 1693 | var r R |
1665 | | - safeGobRegister(r, ctx.(*dbosContext).logger) |
| 1694 | + safeGobRegister(r, &logger) |
1666 | 1695 |
|
1667 | 1696 | handle, err := ctx.ForkWorkflow(ctx, input) |
1668 | 1697 | if err != nil { |
|
0 commit comments