Upgrading from version 0.5.5 to 0.7 created a pause of ~ 2.5 seconds between the time message is produced and the time it is consumed.

Upgrading from version 0.5.5 to 0.7 created a pause of ~ 2.5 seconds between the time message is produced and the time it is consumed.
Note that this issue never happened before 0.7 upgrade and when we downgraded back to 0.5.5, the issue went away.
We would greatly appreciate any suggestions on what configuration settings on consumer or producer side we should try to tune.
If this is a bug report, please fill out the following:

Version of Ruby: 2.6.5
Version of Kafka: 1.1.1
Version of ruby-kafka: ruby-kafka 0.7.0

Please verify that the problem you're seeing hasn't been fixed by the current master of ruby-kafka.
I am talking to the team to see if we can actually do this.
Steps to reproduce
Expected outcome
No pause between the time when message is produced and then picked up by consumer.
Here is graph that shows the first block when provider-requests-events consumer finished message processing and produced a new message for state-machine-events consumer and state-machine-events consumer started processing it (second block). Note there is no gap between two blocks (this was before 0.7 upgrade):

Actual outcome
~1 second pause between the time a message is produced and then picked up by consumer.
Note the gap between two blocks (after 0.7 upgrade):.

We are using phobos lib so these are our current consumer and producer settings:
producer:
  # number of seconds a broker can wait for replicas to acknowledge
  # a write before responding with a timeout
  ack_timeout: 5
  # number of replicas that must acknowledge a write, or `:all`
  # if all in-sync replicas must acknowledge
  required_acks: :all
  # number of retries that should be attempted before giving up sending
  # messages to the cluster. Does not include the original attempt
  max_retries: 5
  # number of seconds to wait between retries
  retry_backoff: 2
  # number of messages allowed in the buffer before new writes will
  # raise {BufferOverflow} exceptions
  max_buffer_size: 1000
  # maximum size of the buffer in bytes. Attempting to produce messages
  # when the buffer reaches this size will result in {BufferOverflow} being raised
  max_buffer_bytesize: 10000000
  # name of the compression codec to use, or nil if no compression should be performed.
  # Valid codecs: `:snappy` and `:gzip`
  compression_codec:
  # number of messages that needs to be in a message set before it should be compressed.
  # Note that message sets are per-partition rather than per-topic or per-producer
  compression_threshold: 1
  # maximum number of messages allowed in the queue. Only used for async_producer
  max_queue_size: 1000
  # if greater than zero, the number of buffered messages that will automatically
  # trigger a delivery. Only used for async_producer
  delivery_threshold: 100
  # if greater than zero, the number of seconds between automatic message
  # deliveries. Only used for async_producer
  delivery_interval: 3

consumer:
  # number of seconds after which, if a client hasn't contacted the Kafka cluster,
  # it will be kicked out of the group
  session_timeout: 120
  # interval between offset commits, in seconds
  offset_commit_interval: 10
  # number of messages that can be processed before their offsets are committed.
  # If zero, offset commits are not triggered by message processing
  offset_commit_threshold: 1
  # interval between heartbeats; must be less than the session window
  heartbeat_interval: 10
  # How long to retain offsets
  offset_retention_time: 2592000 # 30 days

Thank you so much for looking into this!

Reproduce
Producer
require "kafka"
require "json"

kafka = Kafka.new(["<IP_ADDRESS>:9092"], client_id: "my-application")

loop do
  kafka.deliver_message({time: Time.now.to_f}.to_json, topic: "greetings", key: "Hello")
  puts "delivered"
  sleep(0.5)
end

Consumer 1 (min_bytes: 1, max_wait_time: 1)
require "kafka"
require "logger"
require "json"

kafka = Kafka.new(["<IP_ADDRESS>:9092"], logger: Logger.new(STDOUT))

# Consumers with the same group id will form a Consumer Group together.
consumer = kafka.consumer(group_id: "my-consumer")
#
# # It's possible to subscribe to multiple topics by calling `subscribe`
# # repeatedly.
consumer.subscribe("greetings")
#
# # Stop the consumer when the SIGTERM signal is sent to the process.
# # It's better to shut down gracefully than to kill the process.
trap("TERM") { consumer.stop }
#
# # This will loop indefinitely, yielding each message in turn.
consumer.each_message(min_bytes: 1, max_wait_time: 1) do |message|
  now = Time.now.to_f
  sent = JSON.parse(message.value)['time']
  diff = now - sent
  puts("diff: #{diff.round(2)}")
end

Effect:
D, [2020-04-24T11:03:22.069025 #43278] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:03:22.241911 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 6 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:22.242069 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:22.242214 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 7 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:22.242391 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 7 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:22.748550 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 7 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:22.748691 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:22.748882 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 8 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:22.749067 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 8 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:23.261769 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 8 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:23.261879 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:23.262027 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 9 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:23.262198 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 9 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:23.776049 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 9 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:23.776163 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:23.776278 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 10 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:23.776469 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 10 from <IP_ADDRESS>:9092
diff: 1.84
D, [2020-04-24T11:03:24.071774 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7659 as processed
diff: 1.33
D, [2020-04-24T11:03:24.072448 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7660 as processed
diff: 0.82
D, [2020-04-24T11:03:24.072714 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7661 as processed
diff: 0.31
D, [2020-04-24T11:03:24.072871 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7662 as processed
D, [2020-04-24T11:03:24.073009 #43278] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:03:24.283852 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 10 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:24.283967 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:24.284099 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 11 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:24.284254 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 11 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:24.796466 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 11 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:24.796654 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:24.796867 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 12 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:24.797072 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 12 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:25.308333 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 12 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:25.308524 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:25.308723 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 13 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:25.309017 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 13 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:25.821799 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 13 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:25.822161 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:25.822506 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 14 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:25.822743 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 14 from <IP_ADDRESS>:9092
diff: 1.8
D, [2020-04-24T11:03:26.075831 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7663 as processed
diff: 1.29
D, [2020-04-24T11:03:26.075963 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7664 as processed
diff: 0.78
D, [2020-04-24T11:03:26.076135 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7665 as processed
diff: 0.27
D, [2020-04-24T11:03:26.076183 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7666 as processed
D, [2020-04-24T11:03:26.076211 #43278] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:03:26.327101 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 14 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:26.327227 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:26.327360 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 15 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:26.327467 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 15 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:26.841006 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 15 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:26.841135 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:26.841247 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 16 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:26.841399 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 16 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:27.350748 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 16 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:27.350912 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:27.351028 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 17 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:27.351193 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 17 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:27.861489 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 17 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:27.861617 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:03:27.861728 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 18 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:27.861897 #43278] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 18 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:28.077897 #43278] DEBUG -- : [[my-consumer] {}:] Sending heartbeat...
D, [2020-04-24T11:03:28.078084 #43278] DEBUG -- : [[my-consumer] {}:] [heartbeat] Sending heartbeat API request 6 to <IP_ADDRESS>:9092
D, [2020-04-24T11:03:28.078386 #43278] DEBUG -- : [[my-consumer] {}:] [heartbeat] Waiting for response 6 from <IP_ADDRESS>:9092
D, [2020-04-24T11:03:28.082045 #43278] DEBUG -- : [[my-consumer] {}:] [heartbeat] Received response 6 from <IP_ADDRESS>:9092
diff: 1.76
D, [2020-04-24T11:03:28.082371 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7667 as processed
diff: 1.25
D, [2020-04-24T11:03:28.082714 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7668 as processed
diff: 0.74
D, [2020-04-24T11:03:28.083037 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7669 as processed
diff: 0.23
D, [2020-04-24T11:03:28.083230 #43278] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7670 as processed
D, [2020-04-24T11:03:28.083353 #43278] DEBUG -- : [[my-consumer] {}:] No batches to process

Consumer 1 (min_bytes: 1, max_wait_time: 0.1)
consumer.each_message(min_bytes: 1, max_wait_time: 0.1) do |message|
  now = Time.now.to_f
  sent = JSON.parse(message.value)['time']
  diff = now - sent
  puts("diff: #{diff.round(2)}")
end

Effect
D, [2020-04-24T11:04:51.990653 #43304] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:04:52.004563 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 21 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.004865 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:52.005227 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 22 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.005541 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 22 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.110848 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 22 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.111239 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:52.111669 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 23 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.112047 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 23 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.216537 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 23 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.216676 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:52.216779 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 24 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.216867 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 24 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.319223 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 24 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.319334 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:52.319431 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 25 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.319541 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 25 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.414299 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 25 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.414458 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:52.414589 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 26 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.414790 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 26 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.519345 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 26 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.519472 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:52.519614 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 27 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.519925 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 27 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.623066 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 27 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.623185 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:52.623319 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 28 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.623518 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 28 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.729121 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 28 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.729238 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:52.729401 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 29 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.729603 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 29 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.833999 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 29 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.834182 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:52.834404 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 30 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.834706 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 30 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.927059 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 30 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.927275 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:52.927419 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 31 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:52.927633 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 31 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.031440 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 31 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.031561 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:53.031736 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 32 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.031895 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 32 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.136360 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 32 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.136589 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:53.136799 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 33 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.137102 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 33 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.241058 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 33 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.241374 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:53.241661 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 34 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.242014 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 34 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.345769 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 34 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.346032 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:53.346357 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 35 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.346811 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 35 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.438731 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 35 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.438885 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:53.439024 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 36 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.439205 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 36 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.542337 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 36 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.542538 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:53.542807 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 37 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.543177 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 37 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.648742 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 37 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.648918 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:53.649106 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 38 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.649574 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 38 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.754181 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 38 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.754375 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:53.754624 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 39 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.755264 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 39 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.858814 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 39 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.859018 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:53.859300 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 40 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.859666 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 40 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.952155 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 40 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.952330 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:53.952451 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 41 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:53.952593 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 41 from <IP_ADDRESS>:9092
diff: 1.59
D, [2020-04-24T11:04:53.993239 #43304] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7836 as processed
diff: 1.07
D, [2020-04-24T11:04:53.993424 #43304] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7837 as processed
diff: 0.56
D, [2020-04-24T11:04:53.993596 #43304] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7838 as processed
diff: 0.05
D, [2020-04-24T11:04:53.993724 #43304] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7839 as processed
D, [2020-04-24T11:04:53.993764 #43304] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:04:54.056313 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 41 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.056516 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:54.056747 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 42 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.057101 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 42 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.164349 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 42 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.164567 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:54.164800 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 43 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.165107 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 43 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.273079 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 43 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.273381 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:54.273627 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 44 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.273909 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 44 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.377242 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 44 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.377533 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:54.377820 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 45 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.378089 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 45 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.464869 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 45 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.465056 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:54.465243 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 46 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.465517 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 46 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.571232 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 46 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.571437 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:54.571745 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 47 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.571987 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 47 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.679368 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 47 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.679749 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:54.680077 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 48 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.680728 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 48 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.784658 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 48 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.784820 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:54.785001 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 49 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.785204 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 49 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.888447 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 49 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.888621 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:54.888970 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 50 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.889336 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 50 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.975498 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 50 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.975852 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:54.976130 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 51 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:54.976441 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 51 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.083224 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 51 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.083414 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:55.083774 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 52 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.084085 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 52 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.189697 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 52 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.189906 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:55.190422 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 53 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.190813 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 53 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.298475 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 53 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.298691 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:55.298929 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 54 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.299123 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 54 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.406402 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 54 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.406686 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:55.406918 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 55 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.407183 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 55 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.488292 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 55 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.488692 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:55.489105 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 56 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.489721 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 56 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.596085 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 56 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.596250 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:55.596404 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 57 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.596535 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 57 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.700191 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 57 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.700441 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:55.700703 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 58 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.701001 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 58 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.806277 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 58 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.806528 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:55.806747 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 59 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.807138 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 59 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.913880 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 59 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.914140 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:55.914458 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 60 to <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.914856 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 60 from <IP_ADDRESS>:9092
diff: 1.54
D, [2020-04-24T11:04:55.996779 #43304] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7840 as processed
diff: 1.03
D, [2020-04-24T11:04:55.997207 #43304] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7841 as processed
D, [2020-04-24T11:04:55.997709 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 60 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.997831 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:04:55.998108 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 61 to <IP_ADDRESS>:9092
diff: 0.52
D, [2020-04-24T11:04:55.998342 #43304] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7842 as processed
diff: 0.01
D, [2020-04-24T11:04:55.998766 #43304] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 61 from <IP_ADDRESS>:9092
D, [2020-04-24T11:04:55.998888 #43304] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:7843 as processed
D, [2020-04-24T11:04:55.999119 #43304] DEBUG -- : [[my-consumer] {}:] No batches to process

Consumer 3 (min_bytes: 1, max_wait_time: 1), ruby-kafka code changed from sleep 2 to sleep 0.1
consumer.each_message(min_bytes: 1, max_wait_time: 1) do |message|
  now = Time.now.to_f
  sent = JSON.parse(message.value)['time']
  diff = now - sent
  puts("diff: #{diff.round(2)}")
end

Hardcoded sleep changed here: https://github.com/zendesk/ruby-kafka/blob/8660d059e49e775278a4c31e748992a0ae2a99ab/lib/kafka/consumer.rb#L549
Effect:
D, [2020-04-24T11:08:09.218740 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:09.222593 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 8 from <IP_ADDRESS>:9092
D, [2020-04-24T11:08:09.222770 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:08:09.222873 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 9 to <IP_ADDRESS>:9092
D, [2020-04-24T11:08:09.222999 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 9 from <IP_ADDRESS>:9092
diff: 0.1
D, [2020-04-24T11:08:09.320826 #43343] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:8222 as processed
D, [2020-04-24T11:08:09.320902 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:09.424535 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:09.527207 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:09.630089 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:09.734363 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:09.738358 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 9 from <IP_ADDRESS>:9092
D, [2020-04-24T11:08:09.738516 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:08:09.738658 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 10 to <IP_ADDRESS>:9092
D, [2020-04-24T11:08:09.738808 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 10 from <IP_ADDRESS>:9092
diff: 0.11
D, [2020-04-24T11:08:09.837722 #43343] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:8223 as processed
D, [2020-04-24T11:08:09.838035 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:09.941652 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:10.042086 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:10.143646 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:10.242994 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 10 from <IP_ADDRESS>:9092
D, [2020-04-24T11:08:10.243093 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:08:10.243203 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 11 to <IP_ADDRESS>:9092
D, [2020-04-24T11:08:10.243425 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 11 from <IP_ADDRESS>:9092
diff: 0.01
D, [2020-04-24T11:08:10.248061 #43343] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:8224 as processed
D, [2020-04-24T11:08:10.248143 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:10.352809 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:10.457203 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:10.561735 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:10.666170 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process
D, [2020-04-24T11:08:10.755365 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Received response 11 from <IP_ADDRESS>:9092
D, [2020-04-24T11:08:10.755508 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] Fetching batches
D, [2020-04-24T11:08:10.755690 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Sending fetch API request 12 to <IP_ADDRESS>:9092
D, [2020-04-24T11:08:10.755849 #43343] DEBUG -- : [[my-consumer] {greetings: 0}:] [fetch] Waiting for response 12 from <IP_ADDRESS>:9092
diff: 0.02
D, [2020-04-24T11:08:10.770807 #43343] DEBUG -- : [[my-consumer] {}:] Marking greetings/0:8225 as processed
D, [2020-04-24T11:08:10.770930 #43343] DEBUG -- : [[my-consumer] {}:] No batches to process

Summary
Changing the hardcoded sleep value manually is the only way to achieve low-latency for topics with low amount of writes.
Comment
It's very hard for me to say why this sleep is there and what the consequences are of making it smaller. Please at least make it configurable.
I spent plenty of time play with max_wait_time only to discover that it does not change anything any the worst case scenario latency was always much higher than I expected, only to realize that this hardcoded sleep is what causes all the issues.

@paneq Thank you for adding great details!
We also modified max_wait_time to 0.1 while trying to make the pause smaller and it did not make any difference.

I’d be open to a PR that changes the sleep to use the max_wait_time value instead of a hardcoded value.

@dasch Sounds good!
May I assume that Ruby can do sleep of 100 ms or 10 ms?

Yup, but you need to use a Float, e.g. 0.1 is 100ms.

@dasch we (Tesla vehicle backend services) are also experiencing this significant consumer lag and can help validate the fix works well.  This is currently blocking a transition from rabbit to kafka, so please let me know if anything can be done to accelerate the upgrade.

@renobeguh if you can validate that #825 works it would be great!

@dasch we just validated the change.  Using a max_wait_time of 0.01 we saw event processing lag drop from about 1500ms to 150ms.

Awesome, thanks!

@dasch do you have an estimate on when this change will be merged and published?  We'd like to reference the new version, and are weighing hosting our own forked version temporarily.

I think the PR can be merged and a new release cut – if there's a regression as mentioned we can get that fixed once we get a reproducible report.

v1.1.0.beta1 has been released. @renobeguh can you upgrade to that in production and verify that there are no regressions?

@dasch @paneq @renobeguh Thank you so much for debugging, testing and resolving this issue!

@dasch thank you we're upgrading and testing today


feature request: Capability diff between two versions of a given Go module/package.

First off, really happy to see the birth of the capslock tool as having a way to track capabilities used by transitive dependencies is key to mitigating supply-chain attacks.
One feature that would be really incredible to incorporate in capslock and associated tools is to easily diff the capabilities added/removed in between two versions of a given Go module/package.
And furthermore, make it possible to hook this functionality up to go get -u.
Imagine being able to run go get -u ./... to update packages of a Go module and having warnings be emitted for newly added capabilities of transitive dependencies.
E.g.
$ go get -u github.com/org/repo/pkg
WARNING: new capability added to `github.com/org/repo/pkg` (os/exec). Added in version 2023-09-26-githash.

Of course, neither go get nor capslock need to perform the capability diff itself, it could be a third glue tool that reads the versions (of updated dependencies) from go get -u and the json output of capabilities of capslock and prints warnings for newly added capabilities.
Once more, thanks for working to improve this space and help regain confidence in the capabilities utilized by dependencies in the open source community.
With cheerful regards,
Robin

Thanks!  Having smooth workflows for just this kind of use-case is definitely something we're working on.

Thanks! Having smooth workflows for just this kind of use-case is definitely something we're working on.

Hi John,
That's wonderful to hear!
Once more, thanks for working to improve the situation in this problem domain (e.g. early indications for potential supply chain attacks). It's vital for the health of the Go open source ecosystem.
With kindness,
Robin

Hi! I'm interested on this too. Is there any WIP code for this feature available?


Bundle failure on decorators

[x] Review the documentation: https://facebook.github.io/react-native
[x] Search for existing issues: https://github.com/facebook/react-native/issues
[x] Use the latest React Native release: https://github.com/facebook/react-native/releases

Environment
  React Native Environment Info:
    System:
      OS: Linux 4.15 Ubuntu 18.04 LTS (Bionic Beaver)
      CPU: x64 Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz
      Memory: 3.13 GB / 31.39 GB
      Shell: 4.4.19 - /bin/bash
    Binaries:
      Node: 8.11.1 - /usr/bin/node
      Yarn: 1.5.1 - /usr/local/bin/yarn
      npm: 6.1.0 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      Android SDK:
        Build Tools: 23.0.1, 25.0.0, 25.0.2, 26.0.0, 26.0.1, 26.0.2, 27.0.1, 27.0.3
        API Levels: 23, 24, 26, 27
    npmPackages:
      @client/react: ^1.0.13 => 1.0.62
      @client/react-native: ^1.0.13 => 1.0.62
      react-native: ^0.56.0-rc.4 => 0.56.0-rc.4
    npmGlobalPackages:
      react-native-cli: 2.0.1

Description
Multi-platform app with both regular React (Webpack) and React Native builds. I upgraded RN to 0.56, which of course necessitated changes to the Babel environment, e.g. babel-plugin-transform-decorators-legacy → @babel/plugin-proposal-decorators ({legacy:true}). The Webpack version builds fine. The RN version fails bundling:
error: bundling failed: TypeError: Property right of AssignmentExpression expected node to be of a type ["Expression"] but instead got null
    at Object.validate (/home/petter/owl/client2/root/node_modules/@babel/types/lib/definitions/utils.js:128:13)
    at validate (/home/petter/owl/client2/root/node_modules/@babel/types/lib/validators/validate.js:17:9)
    at builder (/home/petter/owl/client2/root/node_modules/@babel/types/lib/builders/builder.js:46:27)
    at Object.AssignmentExpression (/home/petter/owl/client2/root/node_modules/@babel/types/lib/builders/generated/index.js:233:31)
    at _core.types.sequenceExpression.identDecorators.map.decorator (/home/petter/owl/client2/root/node_modules/@babel/plugin-proposal-decorators/lib/transformer-legacy.js:47:26)
    at Array.map (<anonymous>)
    at applyEnsureOrdering (/home/petter/owl/client2/root/node_modules/@babel/plugin-proposal-decorators/lib/transformer-legacy.js:44:59)
    at PluginPass.ClassExpression (/home/petter/owl/client2/root/node_modules/@babel/plugin-proposal-decorators/lib/transformer-legacy.js:161:28)
    at newFn (/home/petter/owl/client2/root/node_modules/metro/node_modules/@babel/traverse/lib/visitors.js:237:21)
 BUNDLE  [android, dev] ./index.android.js ▓▓▓▓▓▓▓░░░░░░░░░ 45.7% (809/1197), failed.

What puzzles me is that, again, the Webpack version works, so presumably there’s nothing inherently problematic about our Babel setup, and migration to Babel 7 was successful. The only difference in Babel configuration here is babel-preset-react-native (5.0.2) versus @babel/preset-env. (The thought occurred to me that this might be due to the RN preset importing proposal-class-properties before -decorators, but modifying babel-preset-react-native/configs/main.js to include the decorator plugin does not help.)
Looking at the AST in Babel, it looks like it’s failing with both class and method decorators.
Unfortunately I do not have a demo and can’t share the (proprietary) source, but any suggestions on how to go about debugging this would be welcome.

@haani104 I am experiencing the same issue. Might be worth to wait until 56 is stable.

I think this is a duplicate of #19789, and in particular I think you should take a look at this comment

The comment unfortunately doesn’t help—as mentioned above, I am using the new @babel-scoped packages, which work with Babel 7 (as demonstrated by the fact that the Webpack build works properly).

Uhm could it be then that maybe some react-native only lib is still on babel 6, or something like that?
In our app we had to add this babel-bridge and enforce yarn resolutions in order to make sure that everything was being bundled properly.
That said, we will release 0.56.0 today (if nothing goes wrong) in order to increase the surface of devs using it, and hopefully lead to faster fixes for issues like yours.

After purging some old Babel plugins, pinning the versions of all @babel/-scoped packages to match the precise version pinned by babel-preset-react-native, &c., I was finally able to get past this error message and get stuck on a different error message that also seems to be related to Babel and decorators, and also happens in RN even though it works with Webpack: https://github.com/facebook/react-native/issues/20038

Attempted everything that @haggholm did but can't get past the "bundling failed: TypeError: Property right of AssignmentExpression". I am going to attempt getting around this for a little while else I will have to revert to older version again.

I have another problem with decorators with 0.56 in release build only:
function test() {}

class Test {
  @test val;
}

undefined is not a function (evaluating 'babelHelpers.applyDecoratedDescriptor(_class.prototype, "val", [test], {
    enumerable: true,
    initializer: null
  })')

Same problem here after upgrading to RN 0.56.
The app works in DEBUG with this configuration:
package.json
...
"devDependencies": {
    "@babel/core": "7.0.0-beta.47",
    "@babel/plugin-proposal-decorators": "7.0.0-beta.47"
    ...
}

.babelrc
{
  "presets": [
    ["react-native"]
  ],
  "plugins": [
    ["@babel/plugin-proposal-decorators", { "legacy": true }]
  ]
}

But in RELEASE xCode crash with this error:
babelHelpers.applyDecoratedDescriptor is not a function.

It seems the error is caused by a dependency version missmatch between babel-plugin-react-native-web, which use the 7.0.0-beta.47 and the local babel packages.
The problem in our case was that some babel packages where installed using a caret range ^7.0.0-beta.47. we fixed it using the hard coded version 7.0.0-beta.47.
What make me tick was to run this command:
grep -r 'version'<EMAIL_ADDRESS>version
And I found that some babel presets were not installed with the beta.47 version
Hope it help

@kelset
I fixed and used the version @babel/core:7.0.0-beta.47 with "@babel/plugin-proposal-decorators": "7.0.0-beta.47", and this error was resolved. **BUT** I got the new error in Animated.createAnimatedComponent`. I left the comment in this issue
https://github.com/facebook/react-native/issues/19763

Using @babel/transform-runtime fix the problem with babelHelpers.applyDecoratedDescriptor is not a function.
{
  "presets": ["react-native"],
  "plugins": [
    ["@babel/proposal-decorators", {"legacy": true}],
    ["@babel/transform-runtime", {
      "polyfill": false,
      "regenerator": false
    }]
  ]
}

"devDependencies": {
...
    "@babel/plugin-proposal-decorators": "7.0.0-beta.47",
    "@babel/plugin-transform-runtime": "7.0.0-beta.47",
    "@babel/runtime": "7.0.0-beta.47"
...
  }

Thanks to @alessandro-bottamedi. But this brings another problem:
TypeError: undefined is not an object (evaluating '_getPrototypeOf2.default')

This error is located at:
    in Icon
    in RCTView
    in App
    in RCTView
    in RCTView
    in AppContainer

@alessandro-bottamedi react-native-vector-icons and it works without transform-runtime but throws error with.

@farwayer
You should edit your .babelrc like @alessandro-bottamedi 's comment. This is https://github.com/facebook/react-native/issues/19763#issuecomment-403415501

@thientnc-ibl  I still have the same problem.
{
  "presets": [
    "react-native"
  ],
  "plugins": [
    ["@babel/plugin-proposal-decorators", { "legacy": true }],
    ["@babel/plugin-transform-runtime", {
      "helpers": true,
      "polyfill": false,
      "regenerator": false
    }]
  ]
}

"devDependencies": {
    "@babel/core": "^7.0.0-beta.52",
    "@babel/plugin-proposal-decorators": "^7.0.0-beta.52",
    "@babel/plugin-transform-runtime": "^7.0.0-beta.52",
    "@babel/runtime": "^7.0.0-beta.52",
    "babel-jest": "^23.2.0",
    "babel-preset-react-native": "5.0.2",
    "jest": "23.3.0",
    "mobx": "^5.0.3",
    "mobx-react": "^5.2.3",
    "react-test-renderer": "16.4.1"
  },

@SurpassRabbit
You MUST use fixed version 7.0.0-beta.47 for all @babel dependencies, like this
    "@babel/plugin-transform-runtime": "7.0.0-beta.47",
    "@babel/runtime": "7.0.0-beta.47"```

@kelset It should be doc'ed of course but what about errors in RELEASE bundle transformation? Build should work as is without using @babel/tranform-runtime. Some babel helpers missed in RELEASE bundle (applyDecoratedDescriptor for example). Not sure but look like it is trimming error while bundle optimization.
Should we open new issue for this?
@thientnc-ibl I already have same babel config as @alessandro-bottamedi. It's another error I got while using @babel/transform-runtime.

Created new issue with 2 workarounds for babel helpers bug https://github.com/facebook/react-native/issues/20150

BTW related to decorators I found this in a React-related issue I was reading earlier, I think it's worth sharing here:

For people coming to this thread later—if you use MobX or a similar library, you don’t need decorators. They are just syntax sugar in this case.
Learn more: #214 (comment), #411 (comment).
Here is why we don’t include them: #411 (comment).

@farwayer How did you solve the _getPrototypeOf2-Error? I tried to use the same babelHelpers workaround by adding it to babelHelpers, but it seems to get included from somewhere else and fails

@kelset using that approach might work but its a massive undertaking, especially if you are using a ton of decorators all through out your project.

I've solved it using beta.47 version of babel (like the ReactNative'one)
see https://github.com/babel/babel/issues/7831#issuecomment-419558735

I'm having the same issue with RN 0.57

Okay, the problem is that React Native is bundling its own version of babel-helpers (exposed as a global variable named babelHelpers), which doesn't include support for decorators.
This will be fixed when this PR lands in Metro, and when React Native upgrades to that version of Metro. (I'm guessing React Native 0.58)
https://github.com/facebook/metro/pull/198
In the meantime, you can use this workaround:
diff --git a/index.js b/index.js
index 77f0986..8d0a685 100644
--- a/index.js
+++ b/index.js
@@ -1,7 +1,13 @@
+import applyDecoratedDescriptor from '@babel/runtime/helpers/esm/applyDecoratedDescriptor'
+import initializerDefineProperty from '@babel/runtime/helpers/esm/initializerDefineProperty'
+
 import { AppRegistry } from 'react-native'
-import App from './App'
+
+Object.assign(babelHelpers, { applyDecoratedDescriptor, initializerDefineProperty })
+
+const App = require('./App.tsx').default

 AppRegistry.registerComponent('Ctrlpanel', () => App)

Together with npm add @babel/runtime

Okay, the problem is that React Native is bundling its own version of babel-helpers (exposed as a global variable named babelHelpers), which doesn't include support for decorators.
This will be fixed when this PR lands in Metro, and when React Native upgrades to that version of Metro. (I'm guessing React Native 0.58)
facebook/metro#198
In the meantime, you can use this workaround:
diff --git a/index.js b/index.js
index 77f0986..8d0a685 100644
--- a/index.js
+++ b/index.js
@@ -1,7 +1,13 @@
+import applyDecoratedDescriptor from '@babel/runtime/helpers/esm/applyDecoratedDescriptor'
+import initializerDefineProperty from '@babel/runtime/helpers/esm/initializerDefineProperty'
+
 import { AppRegistry } from 'react-native'
-import App from './App'
+
+Object.assign(babelHelpers, { applyDecoratedDescriptor, initializerDefineProperty })
+
+const App = require('./App').default

 AppRegistry.registerComponent('Ctrlpanel', () => App)

Together with npm add @babel/runtime

I'm working on a Brownfield app and I've just updated to 0.57.
I receive this error when doing the release (both iOS and Android):

[tid:com.facebook.react.ExceptionsManagerQueue] Unhandled JS Exception: babelHelpers.typeof is not a function. (In 'babelHelpers.typeof(n)', 'babelHelpers.typeof' is undefined)

I've applied the workaround by @LinusU but it does not work. The console.log is never printed.
import applyDecoratedDescriptor from '@babel/runtime/helpers/esm/applyDecoratedDescriptor'
import initializerDefineProperty from '@babel/runtime/helpers/esm/initializerDefineProperty'

console.log(applyDecoratedDescriptor);
console.log(initializerDefineProperty);

Object.assign(babelHelpers, {
  applyDecoratedDescriptor,
  initializerDefineProperty,
});

require('./src/ApplicationRegistry');

ApplicationRegistry is the file where I register the component in order to be exposed to the native world.
Here my package.json.
"dependencies": {
    "@babel/polyfill": "^7.0.0",
    "@babel/runtime": "7.0.0",
    "ent": "^2.2.0",
    "jssha": "^2.3.1",
    "lodash": "^4.17.10",
    "moment": "^2.19.4",
    "moment-timezone": "^0.5.17",
    "react": "^16.5.2",
    "react-native": "^0.57",
    "react-native-elements": "^0.19.1",
    "react-native-fast-image": "^4.0.14",
    "react-native-htmlview": "^0.13.0",
    "react-native-hyperlink": "0.0.11",
    "react-native-remote-svg": "^1.2.0",
    "react-native-scrollable-tab-view": "^0.8.0",
    "react-native-svg": "^6.3.1",
    "react-native-vector-icons": "^5.0.0",
    "react-redux": "^5.0.7",
    "redux": "^4.0.0",
    "redux-saga": "^0.16.0",
    "reselect": "^3.0.1"
  },
  "devDependencies": {
    "@babel/core": "^7.0.0",
    "@babel/preset-env": "^7.0.0",
    "@babel/preset-react": "^7.0.0",
    "babel-core": "7.0.0-bridge.0",
    "babel-plugin-transform-inline-environment-variables": "^0.4.3",
    "concurrently": "^2.2.0",
    "jest": "^23.6.0",
    "metro-react-native-babel-preset": "^0.45.2",
    "msvgc": "^0.1.1",
    "prettier": "1.9.2",
    "react-dom": "^16.3.0-alpha.1",
    "react-native-storybook-loader": "^1.6.0"
  }

Here my .babelrc:
{
  "presets": ["@babel/preset-env", "module:metro-react-native-babel-preset"],
  "plugins": [
    ["transform-inline-environment-variables"]
  ]
}

Any idea?

@flexaddicted, i got same error Unhandled JS Exception: babelHelpers.typeof is not a function. in release build and fixed it by deleting @babel/preset-env from presets in .babelrc
Here my .babelrc:
{
  "presets": [
    "module:metro-react-native-babel-preset"
  ]
}

undefined is not a function (near '...babelHelpers.applyDecoratedDescriptor...')
Mine can't work on release build. But, Simulator can.
I just mimicked "LinusU commented".
{
  plugins: [
    ['@babel/plugin-proposal-decorators', {legacy: true}],
    ["@babel/plugin-transform-runtime", { "helpers": true }] # I added this
  ],
  "presets": ["module:metro-react-native-babel-preset"]
}

My package.json doesn't have them.
"@babel/plugin-transform-runtime"
"@babel/runtime"
So, I also did the command.
yarn add @babel/plugin-transform-runtime --dev
yarn add @babel/runtime --dev

now I have them in my package.json.
    "@babel/plugin-transform-runtime": "^7.1.0",
    "@babel/runtime": "^7.1.2",

But, doesn't work yet..

I also did yarn add babel-plugin-transform-inline-environment-variables --dev
package.json.
    "babel-plugin-transform-inline-environment-variables": "^0.4.3",

I also use react-native-vector-icons. version 5.

yarn add babel-preset-react-native@5 --dev but not success.

I don't know why resolve.
My ReactNative project is created like this.
Why 0.57.0-rc.3? cause I'd like to use TypeScript.
react-native init RN057Sample --version 0.57.0-rc.3
my package.json
{
  "name": "kazoemon",
  "version": "0.0.1",
  "license": "UNLICENSED",
  "private": true,
  "scripts": {
    "start": "yarn jest --clearCache && react-native start",
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "test": "jest"
  },
  "dependencies": {
    "mobx": "^5.1.2",
    "mobx-react": "^5.2.8",
    "react": "^16.5.2",
    "react-dom": "^16.5.2",
    "react-native": "0.57.0-rc.3",
    "react-native-admob": "2.0.0-beta.5",
    "react-native-elements": "^0.19.1",
    "react-native-radio-buttons": "^1.0.0",
    "react-native-vector-icons": "^5.0.0",
    "react-navigation": "^2.16.0"
  },
  "devDependencies": {
    "@babel/plugin-proposal-decorators": "7.0.0-beta.47",
    "@babel/plugin-transform-runtime": "7.0.0-beta.47",
    "@babel/runtime": "^7.1.2",
    "babel-jest": "23.6.0",
    "jest": "23.6.0",
    "metro-react-native-babel-preset": "^0.43.5",
    "react-test-renderer": "16.4.1"
  },
  "jest": {
    "preset": "react-native"
  }
}

what I did is.
I guess 7.0.0-beta.47 is important version.
yarn add --dev @babel/core
yarn add --dev<EMAIL_ADDRESS>yarn add --dev<EMAIL_ADDRESS>
My .babelrc
{
  "presets": [
    "react-native"
  ],
  "plugins": [
    ["@babel/plugin-proposal-decorators", { "legacy": true }],
    ["@babel/plugin-transform-runtime", {
      "helpers": true,
      "polyfill": false,
      "regenerator": false
    }]
  ]
}

I mimicked what "Alessandro Bottamedi" answered in the site
https://stackoverflow.com/questions/51212618/how-to-use-mobx-in-react-native-0-56-babel-7-with-decorators

inspired by @Fendoro 's comment
I got my react native build back working by not adding plugins that are already present in
https://github.com/facebook/metro/blob/master/packages/metro-react-native-babel-preset/src/configs/main.js
I don't really use anything not in the preset to begin with lol.
Hope this helps someone else.
Ironically this even made my test suite faster lol.
Go figure.
I also run a node server our of the same repo that builds with the same babel config too

It seems like this shouldn't be an issue any more with the latest versions of RN and there are workarounds mostly related to babel.


CSS ::selection doesn't have an effect

I was trying to emulate the option "draw_white_space": "selection" from Sublime Text by using the CSS below, but it seems to have no effect.
What it should do, is only show the invisible characters when highlighted/selected.
.editor {
    .invisible-character {
        opacity: 0;
    }

    .invisible-character::selection {
        opacity: 1;
    }
}

Forgot to include a link to MDN, which does say it's non-standard, but that Chrome supports it.
https://developer.mozilla.org/en-US/docs/Web/CSS/::selection

I have found this solution: https://gist.github.com/Dv92/bc276511995aa541674b. I have checked the assignment of the class .has-selection on the class .editor-contents--private. This works fine but show all invisibles in the file not only in the selection area.

@Dv92 :+1: to that! I'd still maybe like to be able to target all layers of a given selection (I'm aware that the reason this hasn't been possible so far is that Atom has these different layers) would be handy for general hackability, but this does kinda solve the issue for me for the time being.

Similar to Dv92's comment, this gist shows all invisibles on selection, but also changes the tab invisible to look like Sublime Text's tab character:
https://gist.github.com/justo/283e41b205e14bcba57b

Thanks @Dv92 for the tab styling to make Atom act like ST for selecting text and showing invisibles!!!


Added single quotes around strings for the mflowgen-run script

Just getting to this now. I think it's very likely that this is ok, but I'm running our flows with it to make sure. If everything works as expected we can merge this tomorrow.


Incorrect index passed in operator "reduce"

import {pipe, reduce} from 'iter-ops';

const input = [3, 0, -2, 5, 9, 4];

const i = pipe(input, reduce((prev, curr, idx, state) => {
    console.log(idx);
    return prev;
}));

const r = [...i];

Expected Output:
1 2 3 4 5
Actual Output
2 4 6 8 10
As a test against the standard reduce...

without initial value:

input.reduce((prev, curr, idx)=>{
    console.log(idx);
    return prev;
});

Outputs: 1 2 3 4 5

with initial value:

input.reduce((prev, curr, idx)=>{
    console.log(idx);
    return prev;
}, 0);

Outputs: 0 1 2 3 4 5

This issue was fixed and released in v2.1.1


Add code coverage section for the library

We should be tracking code coverage for the client library to ensure we are not missing test cases for any new features or a module added in the past. This should be shown as a tag in the README section alongside CI and IntegrationTests status.
Follow https://app.codecov.io/gh/opensearch-project/opensearch-py/ for setup and further instructions.
Example repo for reference: https://github.com/codecov/example-python

Anyone tracking this? is there a reason why we keep this issue untriaged for longtime?

Yes, this should be a child of https://github.com/opensearch-project/opensearch-clients/issues/30, we still need code coverage. cc: @wbeckler

Hello!
I looked through the rest of the repositories and realized that opensearch-py is one of the repositories where codecov is not integrated. For this reason, it is not possible to visualize test coverage.
I can solve this problem. Before that, I had to work with codecov integration on my personal projects. The only question is: is this problem still relevant?

If the issue itself is already outdated, then I will open a new one, since test coverage is really necessary for this project


Sourcemaps not generated unless path is passed

Expected behavior:
Get sourcemaps generated in the outDir folder, following the example in the readme:
// ...
.pipe(sourcemaps.write())
// ...

Actual behavior:
Sourcemaps are not generated anywhere, unless I specify a path to the write() function:
// ...
.pipe(sourcemaps.write('.')) // a dot, since this path is relative to the outDir.
// ...

The only difference between the readme and my gulpfile (shown below) is that I use ts.createProject. I don't if that causes the problem, but it should be noted because no sourcemaps are generated at all if a path isn't passed.
Your gulpfile:
const tsProject = ts.createProject('tsconfig.json');
gulp.task('scripts', () => {
  const tsResult = tsProject.src()
    .pipe(sourcemaps.init())
    .pipe(tsProject());

  return tsResult.js
    .pipe(sourcemaps.write('.')) // <---
    .pipe(gulp.dest(tsProject.config.compilerOptions.outDir));
});

tsconfig.json
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "outDir": "dist",
    "sourceMap": true
  },

Sourcemaps without path writes them inline as a comment

As @Pajn said, this is the correct behavior. The advantages of inlining these sourcemaps are that it requires less configuration and it prevents a lot of hassle.


[NotificationQueue] Rename Coalescing constants to match the Darwin version

Coalescing itself should be renamed as well in a separate pull request.

Thanks for all these fixes @ikesyo

@swift-ci test and merge


Add Replay.io Webpack Plugin

Add the replay.io webpack plugin to the razzle configurations as outlined here.
We should make the plugin run based on the presence of both the RECORD_REPLAY_API_KEY and REPLAY_BUILD_ID environment variables.
Use the REPLAY_BUILD_ID environment variable as the group parameter.

After discussion - it's better to use the CLI upload rather than webpack.


Add minimum score criteria for AI search results

Purpose
A filtering mechanism based on minimum score criteria for documents. By setting a minimum value for both search_score and reranker_score. This aims to improve the relevance of documents sent to the AI, that only the most relevant information is sent for further processing.
Does this introduce a breaking change?
When developers merge from main and run the server, azd up, or azd deploy, will this produce an error?
If you're not sure, try it out on an old environment.
[ ] Yes
[x] No

Does this require changes to learn.microsoft.com docs?
This repository is referenced by this tutorial
which includes deployment, settings and usage instructions. If text or screenshot need to change in the tutorial,
check the box below and notify the tutorial author. A Microsoft employee can do this for you if you're an external contributor.
[X] Yes
[ ] No

Type of change
[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Documentation content changes
[ ] Other... Please describe:

Code quality checklist
See CONTRIBUTING.md for more details.

[x] The current tests all pass (python -m pytest).
[ ] I added tests that prove my fix is effective or that my feature works
[ ] I ran python -m pytest --cov to verify 100% coverage of added lines
[ ] I ran python -m mypy to check for type errors
[ ] I either used the pre-commit hooks or ran ruff and black manually on my code.

@zedhaque No, enabling semantic ranker and semantic captions isn't required for this change to work. The filtering based on search_score operates independently of those features. But for reranker_score it is needed. If one of the scores don't meet the threshold, documents won't be sent to the AI for further processing. Instead, you could either retrieve more documents hoping some meet the criteria or inform the user that no relevant information was found, depending on your implementation.

This PR would require an update to the learn.microsoft.com tutorial by the way, as that tutorial includes a screenshot of developer settings and an explanation of each setting. FYI @diberry
I will wait for this to be approved before sending a PR for the tutorial.

Thanks so much for the PR! We very much need this functionality. I have a comment about the score range, and there are also failing mypy checks, so please address those. Also will assign a reviewer from search team since this is a search specific change.

Thanks for the feedback! I've fixed the mypy issues and made the score range input flexible as suggested. The PR is updated and ready for the next review.

Thanks so much for the PR! We very much need this functionality. I have a comment about the score range, and there are also failing mypy checks, so please address those. Also will assign a reviewer from search team since this is a search specific change.

Thanks for the feedback! I've fixed the mypy issues and made the score range input flexible as suggested. The PR is updated and ready for the next review.


MGDCTRS-1922 fix: decouple cache storage

This change separates the cache used to store connector types by the connector selection list into two separate components, one component to act as a simple storage to cache API responses, and a second component that takes care of managing that cache based on application state, so that the storage of API responses can be lifted to a point where it won't be discarded due to a rerender, which occurs when the user selects an item from the list.
Now you can scroll, click on a list item and then still scroll and nothing weird happens like it was behaving before :smile:

good improvement @gashcrumb 👍  let me know if there is a pending or any new issue(not too complex maybe something simple ;) ) that needs to be worked on this screen, I would like to familiarize myself a little more with this section.

@indraraj sounds good!  An interesting thing to look at is could we refactor the filter panel items into individual selectors that could potentially live in the toolbar.  Right now I've purposely kept most of the filtering terribly coupled in the filter panel as I've developed this view, but it'd be cool if it was more composed.
This would mainly be useful if we need to continue supporting this selector within the wizard layout, as we may want to remove that panel.  Could start with first externalizing each section along with it's individual UI logic, and then see if it's could just go in a dropdown for example.  I haven't created any Jiras yet for this, but you're welcome to if that sounds interesting.

@indraraj another interesting idea to play with would be to start pulling out all of the hard-coded height/width settings I have and see if we can make the list and list items more responsive.


Shell Spout & Python Lib Spout

This time...with less noise.  Sorry for all the confusion!

Finally got a chance to look at this again. I'd like to get this merged in, but there are some issues. I'll just enumerate them:

The Python API is wrong. "ack" and "fail" methods only take the id of the tuple, not an actual tuple. Your Java and Python code seem to be inconsistent in that regard.
The modifications to "readMsg" are bad (the try... except). If you know you're just going to read a string (and not a json object), you should just use readStringMsg. I would recommend encoding the "next" command just like ack/fail commands by using a map ({"command": "next"}).
You shouldn't assume that the "id" created by nextTuple is a Long. It can be any Object, as shown in the Java API for spouts.
Your Java code gets anchors from the multilang process. There's no concept of anchors in spouts. Since those anchors are unused, this seems to be a typo.

I'd like to get this finished soon, so I'll be much faster with my feedback from now on.

Thanks for looking over the changes, I'll work on addressing the things you mentioned and commit them to this pull request.

Thomas, yes on both. nextTuple should most definitely be non-blocking.

Sorry I haven't gotten back around to working on this stuff; I had to move on and take care of some other projects - I hope to get back to it at some point.  @Tomo, thanks for picking it up on this, I will absolutely want to/need to use a ShellSpout to implement the features I have coming up....damn time, there's never enough of it.


feat: Use yarn v4

To have yarn v4 work with Volta I had to:
> npm install -g corepack
> corepack enable --install-directory ~/.volta/bin

For some reason the rollup build hangs at the end occasionally on macOS. I've seen this locally but can no longer reproduce it. It's strange because when it fails in a runner (and it doesn't fail in all of them), re-running always fails to complete.


Display message limitation 1000 pages

Codecov Report

Merging #345 into 2.x will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##              2.x     #345   +/-   ##
=======================================
  Coverage   76.92%   76.92%
=======================================
  Files          39       39
  Lines         754      754
=======================================
  Hits          580      580
  Misses        174      174

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update fa5acf4...75d5efa. Read the comment docs.


Optimize thisOrAncestorOfType

Remove unnecessary instanceOf (bottleneck)

[x] I’ve reviewed the contributor guide and applied the relevant portions to this PR.

Previous discussion:
https://github.com/dart-lang/sdk/issues/53255

FYI: @mit-mit @bwilkerson


support aggregation of the NBRCTC line type to produce the aggregated NBRCTS statistics

12/16/2019 request from Logan:
Consider adding a new feature to METviewer to support aggregation of the NBRCTC line type to produce the aggregated NBRCTS statistics and make those statistics available via the scorecard.  Tatiana will create a new GitHub issue about this.  From Logan, the HREF eval will be mid-March and this feature would be useful.  If we add this support, please do so in all contexts.

Similar to CTC agg  -> CTS

Adding  NBR_CTC to Series, Performance diagram, Contour plot and scorecard.


hi, bro, can i use java to implement all these functions, i am not very proficient in kotlin

The tap events were fixed and documented in this pull request: https://github.com/SceneView/sceneview-android/pull/96

I can't find the code you changed in the imported library, can you please mark the code in detail how to get the name of the child node of the touch part after loading the glb model, I have to start the sceneview-kotlin code in order to realize this touch operation, Can I also use sceneform-java to get the name of the child node of the touch area?

@ThomasGorisse

@grassydragon

Hi!
Take a look at how picking is implemented in SceneView and implement it yourself in Sceneform.
https://github.com/SceneView/sceneview-android/blob/main/sceneview/src/main/java/io/github/sceneview/SceneView.kt#L603


Partyinfo update

After node A successfully validate node B's attempt to send partyinfo, node A will not send his own partyinfo to node B to update.
This update and validation will be achieved later when node A tries to send his own partyinfo to node B.
For this change,

/partyinfo will just respond with 200 instead of the updated partyinfo
poller will poll parties without trying to update itself with results

Codecov Report

Merging #751 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@             Coverage Diff              @@
##             master     #751      +/-   ##
============================================
+ Coverage     99.45%   99.45%   +<.01%
- Complexity     1891     1893       +2
============================================
  Files           285      286       +1
  Lines          5638     5641       +3
  Branches        282      283       +1
============================================
+ Hits           5607     5610       +3
  Misses            5        5
  Partials         26       26

Impacted Files
Coverage Δ
Complexity Δ

.../java/com/quorum/tessera/node/PartyInfoPoller.java
100% <100%> (ø)
8 <1> (ø)
:arrow_down:

.../com/quorum/tessera/node/PartyInfoServiceImpl.java
100% <100%> (ø)
12 <0> (ø)
:arrow_down:

...main/java/com/quorum/tessera/node/model/Party.java
90% <100%> (ø)
8 <0> (ø)
:arrow_down:

...in/java/com/quorum/tessera/util/URLNormalizer.java
100% <100%> (ø)
3 <3> (?)

...n/java/com/quorum/tessera/node/PartyInfoStore.java
100% <100%> (ø)
5 <0> (ø)
:arrow_down:

...java/com/quorum/tessera/p2p/PartyInfoResource.java
100% <100%> (ø)
14 <0> (-1)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9fdfc63...0911cc9. Read the comment docs.

This fixes issues raised in #649.

Fixes https://github.com/jpmorganchase/tessera/issues/832