Skip to content

Weird errors and failures sometimes occur in CI tests #62

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

Closed
supercaracal opened this issue Jun 26, 2022 · 2 comments
Closed

Weird errors and failures sometimes occur in CI tests #62

supercaracal opened this issue Jun 26, 2022 · 2 comments
Assignees
Labels
help wanted Extra attention is needed

Comments

@supercaracal
Copy link
Member

supercaracal commented Jun 26, 2022

Hmm... There might be remaining bytes of some reply in the socket for the connection. It seems that it tends to occur with the following test patterns.

Main (7.0.1, 3.*, ruby, docker-compose.ssl.yaml)

The following code might be shady.

def load(nodes) # rubocop:disable Metrics/MethodLength
errors = []
cmd = nil
nodes&.each do |node|
break unless cmd.nil?
reply = node.call('COMMAND')
details = parse_command_details(reply)
cmd = ::RedisClient::Cluster::Command.new(details)
rescue ::RedisClient::Error => e
errors << e
end
return cmd unless cmd.nil?
raise ::RedisClient::Cluster::InitialSetupError, errors
end

ArgumentError: invalid value for Integer(): "~3"

Main (7.0.1, 3.0, ruby, docker-compose.ssl.yaml)

1) Error:
RedisClient::TestCluster::PrimaryOnly#test_zscan:
ArgumentError: invalid value for Integer(): "~3"
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:167:in `Integer'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:167:in `parse_integer'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:147:in `parse_set'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:117:in `parse'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:161:in `block in parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `times'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:143:in `parse_array'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:117:in `parse'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:161:in `block in parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `times'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:143:in `parse_array'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:117:in `parse'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:54:in `load'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection.rb:124:in `read'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/connection_mixin.rb:7:in `call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client.rb:190:in `block (2 levels) in call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/middlewares.rb:8:in `call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client.rb:189:in `block in call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client.rb:520:in `ensure_connected'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client.rb:188:in `call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster/command.rb:16:in `block in load'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster/node.rb:105:in `each_value'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster/node.rb:105:in `each'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster/command.rb:13:in `load'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster/router.rb:26:in `initialize'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster.rb:17:in `new'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster.rb:17:in `initialize'
    /home/runner/work/redis-cluster-client/redis-cluster-client/test/redis_client/test_cluster.rb:203:in `new'
    /home/runner/work/redis-cluster-client/redis-cluster-client/test/redis_client/test_cluster.rb:203:in `new_test_client'
    /home/runner/work/redis-cluster-client/redis-cluster-client/test/redis_client/test_cluster.rb:9:in `setup'

RedisClient::RESP3::UnknownType: Unknown sigil type: "\n"

Main (7.0.1, 3.1, ruby, docker-compose.ssl.yaml)
Main (7.0.1, 3.0, ruby, docker-compose.ssl.yaml)

  1) Error:
RedisClient::TestCluster::Pooled#test_inspect:
RedisClient::RESP3::UnknownType: Unknown sigil type: "\n"
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:115:in `block in parse'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:114:in `fetch'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:114:in `parse'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:161:in `block in parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `times'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:147:in `parse_set'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:117:in `parse'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:161:in `block in parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `times'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:143:in `parse_array'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:117:in `parse'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:161:in `block in parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `times'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:143:in `parse_array'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:117:in `parse'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:161:in `block in parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `times'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:143:in `parse_array'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:117:in `parse'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:161:in `block in parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `times'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:160:in `parse_sequence'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:143:in `parse_array'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:117:in `parse'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection/resp3.rb:54:in `load'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/ruby_connection.rb:124:in `read'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/connection_mixin.rb:7:in `call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client.rb:190:in `block (2 levels) in call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/middlewares.rb:8:in `call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client.rb:189:in `block in call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client.rb:520:in `ensure_connected'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client.rb:188:in `call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/pooled.rb:58:in `block in call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/pooled.rb:30:in `block in with'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:63:in `block (2 levels) in with'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:62:in `handle_interrupt'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:62:in `block in with'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:59:in `handle_interrupt'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:59:in `with'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/pooled.rb:26:in `with'
    /home/runner/work/redis-cluster-client/redis-cluster-client/vendor/bundle/ruby/3.1.0/gems/redis-client-0.5.1/lib/redis_client/pooled.rb:58:in `call'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster/command.rb:12:in `block in load'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster/node.rb:105:in `each'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster/node.rb:105:in `each'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster/command.rb:11:in `map'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster/command.rb:11:in `load'
    /home/runner/work/redis-cluster-client/redis-cluster-client/lib/redis_client/cluster.rb:113:in `initialize'
    /home/runner/work/redis-cluster-client/redis-cluster-client/test/redis_client/test_cluster.rb:230:in `new'
    /home/runner/work/redis-cluster-client/redis-cluster-client/test/redis_client/test_cluster.rb:230:in `new_test_client'
    /home/runner/work/redis-cluster-client/redis-cluster-client/test/redis_client/test_cluster.rb:9:in `setup'

Test cases fail with "at fast" reply

Main (7.0.1, 3.1, ruby, docker-compose.ssl.yaml)

  1) Failure:
RedisClient::TestCluster::ScaleRead#test_pubsub [/home/runner/work/redis-cluster-client/redis-cluster-client/test/redis_client/test_cluster.rb:118]:
Expected: ["subscribe", "channel2", 1]
  Actual: "@fast"
  2) Failure:
RedisClient::TestCluster::ScaleRead#test_call [/home/runner/work/redis-cluster-client/redis-cluster-client/test/redis_client/test_cluster.rb:29]:
Case: GET: key0.
--- expected
+++ actual
@@ -1,3 +1 @@
-# encoding: US-ASCII
-#    valid: true
-"0"
+"@fast"

https://redis.io/commands/command/

Test cases fail with "nondeterministic_output" reply

Main (7.0.1, 3.1, ruby, docker-compose.ssl.yaml)

  1) Failure:
RedisClient::TestCluster::PrimaryOnly#test_call_once [/home/runner/work/redis-cluster-client/redis-cluster-client/test/redis_client/test_cluster.rb:36]:
Case: SET: key1.
--- expected
+++ actual
@@ -1 +1 @@
-"OK"
+#<Set: {"nondeterministic_output"}>

https://redis.io/docs/reference/command-tips/

Test cases fail with empty set

Main (7.0.1, 3.0, ruby, docker-compose.ssl.yaml)

  1) Failure:
RedisClient::TestCluster::ScaleRead#test_call_once [/home/runner/work/redis-cluster-client/redis-cluster-client/test/redis_client/test_cluster.rb:36]:
Case: SET: key2.
Expected: "OK"
  Actual: #<Set: {}>
@supercaracal supercaracal added the bug Something isn't working label Jun 26, 2022
@supercaracal supercaracal self-assigned this Jun 26, 2022
@supercaracal supercaracal changed the title ArgumentError: invalid value for Integer(): "~3" Weird errors and failures occurred in CI tests Jun 26, 2022
@supercaracal supercaracal removed the bug Something isn't working label Jun 26, 2022
@supercaracal supercaracal changed the title Weird errors and failures occurred in CI tests Weird errors and failures sometimes occur in CI tests Jun 26, 2022
@supercaracal supercaracal added the help wanted Extra attention is needed label Jun 30, 2022
@supercaracal
Copy link
Member Author

so far so good

@supercaracal supercaracal closed this as not planned Won't fix, can't repro, duplicate, stale Sep 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant