On Thu, Jul 16, 2020, 5:23 AM evdubs <evd...@gmail.com> wrote: > Do you think you'll need to try to identify the order that the events were > created in? > > What if user A does: > > $ touch file.txt > $ rm file.txt > > And what if user A had separately done: > > $ rm file.txt > Error: file not found > $ touch file.txt >
You meant for those to be user A and user B, right? > Would those operations both potentially create File-Create P H1 ; > File-Delete P H1 events when things are allowed to be out of order? Don't > they result in different states for the filesystem? If you also sent along > the time of the operation (or maybe some sequence number), won't that let > you keep things ordered and not make decisions that might be ambiguous? > Fair question. Yes, time will be sent along with the message. I was trying to boil things down as far as possible and perhaps I boiled too long. Of course, that raises its own issues about different timezones etc, but those are separate from the issue at hand. To answer your specific question: That sequence of events results in a conflict that will be flagged for human review. On Wednesday, July 15, 2020 at 10:29:36 PM UTC-10 david....@gmail.com wrote: > >> tl;dr >> Can anyone recommend a data structure that is ordered and supports >> efficient reordering, insertion at arbitrary location, and deletion? >> >> Long form: >> >> I'm working on an operation-log reconciliation problem, where each >> operation is one of: >> >> File-Create P H >> File-Update P H >> File-Delete P H >> Folder-Create P >> Folder-Delete P >> >> P = path >> H = hash of the file (e.g. md5) >> >> Operation messages travel over the network, meaning that they could >> arrive out of order. (They could also be missed entirely, but that's a >> separate problem that I'm not working on yet.) >> >> Specifically, I want to be able to take a series of messages and collapse >> them where appropriate. For example: >> >> File-Update P H1 -> H2 >> File-Create P1 H1 >> Result after collapse: >> '(File-Create P1 H2) >> >> File-Create P H1 >> File-Delete P H1 >> Result after collapse: >> '() >> >> File-Delete P X >> File-Create P X >> Result after collapse: >> '() >> >> File-Delete P1 H1 >> File-Create P2 H2 >> File-Create P1 H1 >> Result after collapse: >> '(File-Create P2 H2) >> >> I've been mulling over various ways to handle all of this and digging >> around to find examples of other people doing it, but I'm wondering if >> there's a data structure or existing algorithm that will handle it >> cleanly. Does anyone know of such a thing? >> > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to racket-users+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/racket-users/f03b33d8-e286-4cc2-afa5-4aefd0050bd5n%40googlegroups.com > <https://groups.google.com/d/msgid/racket-users/f03b33d8-e286-4cc2-afa5-4aefd0050bd5n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/CAE8gKofT_R%3D-d8QEinouq8id16f7WJE2jpn5SE%2BqXPCgmODaXw%40mail.gmail.com.