michelgrootjans / playing_with_projections

Preparation of a workshop
22 stars 51 forks source link

Events have been generated in nonsensical order #46

Open tomasaschan opened 7 years ago

tomasaschan commented 7 years ago

There's at least one case where the events in the data files have been generated in nonsensical order: for example, there are events for a player with id 37 joining games, that occur earlier (according to both ordering in the file and the time stamp in the event data) than the event for player with id 37 signing up.

Is this a conscious decision? If so, how is the PlayerJoinedGame event for an unregistered player intended to be interpreted? If not, it might be a good idea to re-generate or re-order these events to avoid this weirdness...

Here's an F# snippet that prints all id:s for which this happens:

let evolve (players, early_joins) event =
    match event.Payload with
    | PlayerHasRegistered phr -> (Set.add phr.PlayerId players, early_joins)
    | PlayerJoinedGame pjg -> 
        if Set.contains pjg.PlayerId players
        then (players, early_joins)
        else (players, Set.add pjg.PlayerId early_joins)
    | _ -> (players, early_joins)

readStreamFromFile "4_2015_01_2017_01"
|> parseEvents
|> Seq.fold evolve (Set.empty<int>, Set.empty<int>)
|> snd
|> Seq.sort
|> Seq.iter (fun id -> printfn "player joined game before registering: %d" id)

Output:

player joined game before registering: 37
player joined game before registering: 55
player joined game before registering: 57
player joined game before registering: 63
player joined game before registering: 83
player joined game before registering: 97
player joined game before registering: 99
player joined game before registering: 105
player joined game before registering: 111
player joined game before registering: 115
player joined game before registering: 117
player joined game before registering: 119
player joined game before registering: 121
player joined game before registering: 125
player joined game before registering: 135
player joined game before registering: 137
player joined game before registering: 139
player joined game before registering: 141
player joined game before registering: 167
player joined game before registering: 171
player joined game before registering: 173
player joined game before registering: 175
player joined game before registering: 179
player joined game before registering: 181
player joined game before registering: 183
player joined game before registering: 185
player joined game before registering: 191
player joined game before registering: 197
player joined game before registering: 205
player joined game before registering: 207
player joined game before registering: 209
player joined game before registering: 215
player joined game before registering: 219
player joined game before registering: 221
player joined game before registering: 223
player joined game before registering: 225
player joined game before registering: 227
player joined game before registering: 229
player joined game before registering: 231
player joined game before registering: 233
player joined game before registering: 235
player joined game before registering: 237
player joined game before registering: 239
player joined game before registering: 243
player joined game before registering: 245
player joined game before registering: 247
player joined game before registering: 249
player joined game before registering: 255
player joined game before registering: 257
player joined game before registering: 259
player joined game before registering: 261
player joined game before registering: 263
player joined game before registering: 265
player joined game before registering: 267
player joined game before registering: 269
player joined game before registering: 273
player joined game before registering: 275
player joined game before registering: 277
player joined game before registering: 279
player joined game before registering: 283
player joined game before registering: 285
player joined game before registering: 287
player joined game before registering: 289
player joined game before registering: 291
player joined game before registering: 293
player joined game before registering: 295
player joined game before registering: 297
player joined game before registering: 299
player joined game before registering: 301
player joined game before registering: 303
player joined game before registering: 305
player joined game before registering: 307
player joined game before registering: 309
player joined game before registering: 311
player joined game before registering: 313
player joined game before registering: 315
player joined game before registering: 317
player joined game before registering: 319
player joined game before registering: 321
player joined game before registering: 323
player joined game before registering: 325
player joined game before registering: 327
player joined game before registering: 329
player joined game before registering: 331
player joined game before registering: 333
player joined game before registering: 335
player joined game before registering: 339
player joined game before registering: 341
player joined game before registering: 343
player joined game before registering: 345
player joined game before registering: 349
player joined game before registering: 351
tcoopman commented 7 years ago

Hmm, I need to take a look at this, it might be a bug in the generator. Thanks for reporting