Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
08d00dad
Unverified
Commit
08d00dad
authored
May 17, 2020
by
Salvatore Sanfilippo
Committed by
GitHub
May 17, 2020
Browse files
Merge pull request #7264 from oranagra/test_for_7205
add regression test for the race in #7205
parents
624742d9
357aace8
Changes
1
Hide whitespace changes
Inline
Side-by-side
tests/integration/replication.tcl
View file @
08d00dad
...
...
@@ -637,3 +637,55 @@ start_server {tags {"repl"}} {
}
}
}
test
{
replicaof right after disconnection
}
{
# this is a rare race condition that was reproduced sporadically by the psync2 unit.
# see details in #7205
start_server
{
tags
{
"repl"
}}
{
set replica1
[
srv 0 client
]
set replica1_host
[
srv 0 host
]
set replica1_port
[
srv 0 port
]
set replica1_log
[
srv 0 stdout
]
start_server
{}
{
set replica2
[
srv 0 client
]
set replica2_host
[
srv 0 host
]
set replica2_port
[
srv 0 port
]
set replica2_log
[
srv 0 stdout
]
start_server
{}
{
set master
[
srv 0 client
]
set master_host
[
srv 0 host
]
set master_port
[
srv 0 port
]
$replica1 replicaof $master_host $master_port
$replica2 replicaof $master_host $master_port
wait_for_condition 50 100
{
[
string match
{
*master_link_status:up*
}
[
$replica1
info replication
]]
&&
[
string match
{
*master_link_status:up*
}
[
$replica2
info replication
]]
}
else
{
fail
"Can't turn the instance into a replica"
}
set rd
[
redis_deferring_client -1
]
$rd debug sleep 1
after 100
# when replica2 will wake up from the sleep it will find both disconnection
# from it's master and also a replicaof command at the same event loop
$master client kill type replica
$replica2 replicaof $replica1_host $replica1_port
$rd read
wait_for_condition 50 100
{
[
string match
{
*master_link_status:up*
}
[
$replica2
info replication
]]
}
else
{
fail
"role change failed."
}
# make sure psync succeeded, and there were no unexpected full syncs.
assert_equal
[
status $master sync_full
]
2
assert_equal
[
status $replica1 sync_full
]
0
assert_equal
[
status $replica2 sync_full
]
0
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment