Comment by mlyle

Comment by mlyle 5 hours ago

9 replies

The problem is, you're using strong language like "under any reasonable definition of 'delivery'." But everyone else is defining delivery differently than you, referring to the delivery of the message to the system itself. Your language implies everyone else is unreasonable.

When your argument depends upon everyone else being unreasonable, maybe you're the one being unreasonable.

Yes, we can make the processing that occurs in response to those delivered message(s) idempotent. But in the end, the system has to either deal with:

1. messages being delivered once or lost entirely, or

2. messages being delivered once or multiple times

You are over-explaining a way to deal with situation #2 (detect duplicates at the endpoint).

lisper 5 hours ago

> referring to the delivery of the message to the system itself

And how do you define "the system itself"?

  • mlyle 5 hours ago

    The thing that is at the end of the lossy medium. It must tolerate (0 or 1) or (1 or more) things being delivered to it.

    • lisper 5 hours ago

      Yes, that is true. But why can't I choose to view "the system itself" as the thing that is on the other side of a de-duplicator?

      It feels to me like an argument over whether or not humans can fly. An unassisted human cannot fly, but with some technological augmentation, they can. It seems a bit pedantic to deny that someone can fly from LA to New York simply because they have to get into an airplane to do it.

      • srkiNZ 5 hours ago

        > why can't I choose to view "the system itself" as the thing that is on the other side of a de-duplicator?

        because the "de-duplicator" would either:

        * be somewhere else on an unreliable network (in which case we have the same problem)

        * be on the same machine (or in the same process) as "the system itself" (in which case from a distributed systems perspective makes it the same thing)

        > It seems a bit pedantic...

        It is pedantic. The only reason that these "delivery" rules are popular is because of how many times programmers have gotten it wrong. Mostly by making assumptions that either:

        * the network is reliable

        * the message queue (or whatever) will de-duplicate messages for me

      • mlyle 4 hours ago

        Having a clear system boundary is required for analysis.

        Knowing that messages will be delivered 1+ times gives us a variety of ways we could choose to deal with this on the endpoint, with different vulnerabilities. (Getting "exactly once" processing usually requires making various kinds of resilience tradeoffs based on timing windows, storage requirements, etc).

        > It seems a bit pedantic to deny that someone can fly from LA to New York

        At this point I question your good faith. You're calling people out by name, and you're going full on "well, aktuallyyyy" and seeming to deliberately misunderstand other peoples' assertions. "People can't breathe underwater" v. "Well, once I was in a tunnel that was under a body of water, and I still breathed!(@!("

        If you choose to define words differently than everyone else, you're just sabotaging your own communication to try and feel smart.