memstate icon indicating copy to clipboard operation
memstate copied to clipboard

Journal restore fills command fields with null

Open srid opened this issue 4 years ago • 1 comments

I have a repro for this. This F# project: https://github.com/srid/Baseline (dotnet run the Baseline.CLI project)

  • Main entry point: https://github.com/srid/Baseline/blob/346ff7bdb70d131c03469e5f7d7e62b16926d581/src/Baseline.CLI/Program.fs#L12-L19
  • Types: https://github.com/srid/Baseline/blob/master/src/Baseline.Data/Library.fs#L7-L56

When I run the program multiple times, each time it loads the .journal file (which seems to be created correctly) but discards the command field values in them, instead filling them with null. See terminal output:

image

As you can see all but the last record (which was inserted in current thread) is filled with null. All but last record was loaded from the .journal file at program startup.

The command itself looks about right:

type Think(s: string, t: DateTime) =
    inherit Command<BaselineModel, DateTime>()

    member this.Content = s
    member this.When = t
    
    override Command.Execute(model: BaselineModel): DateTime =
        let thought = model.Think(s, t)
        Command.RaiseEvent(ThoughtSaved(thought))
        thought.When

Did I hit a bug in memstate?

srid avatar Mar 23 '21 04:03 srid

In another project (a solution with exactly one project with exactly one module), it works: https://github.com/srid/OneBird/blob/master/Program.fs

I wonder if it is something to do with the multiple project / split-across-modules nature of the Baseline project that causes this bug? I do see that in the .journal file the module/namespace is registered, along with project name.

srid avatar Mar 23 '21 04:03 srid