Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ADDED] Support for route S2 compression #4115

Merged
merged 6 commits into from Apr 28, 2023
Merged

Commits on Apr 27, 2023

  1. [ADDED] Support for route S2 compression

    The new field `compression` in the `cluster{}` block allows to
    specify which compression mode to use between servers.
    
    It can be simply specified as a boolean or a string for the
    simple modes, or as an object for the "s2_auto" mode where
    a list of RTT thresholds can be specified.
    
    By default, if no compression field is specified, the server
    will use the s2_auto mode with default RTT thresholds of
    10ms, 50ms and 100ms for the "uncompressed", "fast", "better"
    and "best" modes.
    
    ```
    cluster {
    ..
      # Possible values are "disabled", "off", "enabled", "on",
      # "accept", "s2_fast", "s2_better", "s2_best" or "s2_auto"
      compression: s2_fast
    }
    ```
    
    To specify a different list of thresholds for the s2_auto,
    here is how it would look like:
    ```
    cluster {
    ..
      compression: {
        mode: s2_auto
        # This means that for RTT up to 5ms (included), then
        # the compression level will be "uncompressed", then
        # from 5ms+ to 15ms, the mode will switch to "s2_fast",
        # then from 15ms+ to 50ms, the level will switch to
        # "s2_better", and anything above 50ms will result
        # in the "s2_best" compression mode.
        rtt_thresholds: [5ms, 15ms, 50ms]
      }
    }
    ```
    
    Note that the "accept" mode means that a server will accept
    compression from a remote and switch to that same compression
    mode, but will otherwise not initiate compression. That is,
    if 2 servers are configured with "accept", then compression
    will actually be "off". If one of the server had say s2_fast
    then they would both use this mode.
    
    If a server has compression mode set (other than "off") but
    connects to an older server, there will be no compression between
    those 2 routes.
    
    Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
    kozlovic committed Apr 27, 2023
    Configuration menu
    Copy the full SHA
    d6fe9d4 View commit details
    Browse the repository at this point in the history

Commits on Apr 28, 2023

  1. Fixed data race

    Reverts changes made in PR#4001: 105237c#diff-1322a81c43dfdd05284ae128c43d9ea51c1a3b677587686561ef6de47024e14aR1340
    
    Since a fix was made here: b78ec39
    the changes made in PR need to be reverted. The test
    TestRoutePoolAndPerAccountWithServiceLatencyNoDataRace now passes.
    
    Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
    kozlovic committed Apr 28, 2023
    Configuration menu
    Copy the full SHA
    8d2683a View commit details
    Browse the repository at this point in the history
  2. Fixed flapper

    Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
    kozlovic committed Apr 28, 2023
    Configuration menu
    Copy the full SHA
    73ed55a View commit details
    Browse the repository at this point in the history
  3. Other flappers.

    Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
    kozlovic committed Apr 28, 2023
    Configuration menu
    Copy the full SHA
    70af04a View commit details
    Browse the repository at this point in the history
  4. Changes based on code review

    Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
    kozlovic committed Apr 28, 2023
    Configuration menu
    Copy the full SHA
    5b8c9ee View commit details
    Browse the repository at this point in the history
  5. Change the absence of compression setting to default to "accept"

    In that mode, a server accepts and will switch to same compression
    level than the remote (if one is set) but will not initiate compression.
    So if all servers in a cluster do not have compression setting set,
    it defaults to "accept" which means that compression is "off".
    
    Signed-off-by: Ivan Kozlovic <ivan@synadia.com>
    kozlovic committed Apr 28, 2023
    Configuration menu
    Copy the full SHA
    349f01e View commit details
    Browse the repository at this point in the history