Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Ruby script which tries to detect when mongo is up but super slow (for example due to IO issue) and stop it to allow fallback to secondary
#!/usr/bin/env ruby
# Tries to detect when mongo is up but super slow (ex: IO issue)
THRESHOLD = 20_000 # ms
def test_mongo tries: 5
out = `echo -e "db.isMaster()\ndb.getReplicationInfo()" | mongo mongodb://localhost/?socketTimeoutMS=#{THRESHOLD} 2>&1`
res = $?
if res != 0 && !out['Connection refused']
puts out
if tries > 0
sleep 20
test_mongo tries: tries-1
else
puts "Mongo looks is dead, trying to stop it.."
system("sudo service mongod stop")
system("sudo service mongod status")
end
end
end
test_mongo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment