Skip to content

Instantly share code, notes, and snippets.

Created November 8, 2019 08:31
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
puts "Mongo looks is dead, trying to stop it.."
system("sudo service mongod stop")
system("sudo service mongod status")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment