Hi all,

Since version 1.0 for `dispatch` and 1.1 for `transparent` 23 years ago,
which later became `option transparent`, we've been carrying and porting
support for these keywords that represent exceptions in the whole code.
At various places in the backend code we make a special case of
communications being sent to an address without using a server for these
two. Nowadays they're no longer justified:
  - anything done using `dispatch` can simply be done using `server`

  - anything done using `option transparent` can simply be done using
    `server xxx 0.0.0.0`

In addition, the connection modes do not support SSL, proxy protocol,
checks, stats, unix sockets etc. In addition nowadays their usage has
even required special handling since "balance" became the default, since
they're incompatible with load balancing.

I think that we're way past the point where these should have been
removed. I have seen from time to time (albeit very rarely) "dispatch"
still being used in TCP proxies because configs are simple and require
only two lines, or just because they've been ported over time from very
old ones.

I'm thinking about deprecating both for 3.3 or even removing them. I'm
seeing 4 options:
  - emit a deprecation warning in 3.3, remove in 3.5: warnings always have
    to be addressable one way or another by the user, and here it can
    require a few adjustments to turn "dispatch" into a server

  - just drop support in 3.3 assuming nobody uses them anymore and emit a
    "no longer supported" error message

  - emulate the keywords by inserting a dummy server that does the same
    thing, and emit a warning. That could technically be done, but the
    difficulty is the combination with other servers: all servers will need
    to run with a weight of zero in order to only take the traffic that
    comes with a valid cookie, and that requires more adjustments. But it
    could remain an option that allows us to get rid of the feature earlier
    without completely breaking configs.

  - do nothing and continue to maintain them.

Needless to say I'm not fan of the last option. I would by default go to
the first one but I do think that even the second (plain removal) might
be workable. I'd really like users of `dispatch` and/or `option
transparent` to voice in saying "no please don't do that so fast, I'm
still using it". I'd of course prefer "thanks for the tip, now
converted, you can get rid of it" :-)

The 3rd option (emulation) is the one requiring more work on our side
but I think it's workable. I just don't think it's well invested time
given how obsolete these features are, but I'd happily be corrected if
I'm wrong. Any other suggestion welcome, of course.

Thanks for any insights!
Willy


Reply via email to