* syncing wip on connection cleaning

This commit is contained in:
Seth Call 2012-10-17 21:00:52 -05:00
parent e881b19245
commit 2fe02a6c79
1 changed files with 14 additions and 12 deletions

View File

@ -22,22 +22,25 @@ class ConnectionCleaner
@pg_conn.transaction do |conn|
# FOR UPDATE - lock the connection and related jam_sessions in question
conn.exec("SELECT user_id FROM connections LEFT OUTER JOIN music_sessions WHERE client_id = $1 ON connections.music_session_id = music_sessions.id FOR UPDATE", [client_id]) do |result|
conn.exec("DELETE FROM connections WHERE client_id = $1 RETURNING user_id", [client_id]) do |result|
if result.cmd_tuples == 0
# the client is already gone from the database... do nothing
conn.exec("DELETE FROM connections WHERE client_id = $1", [client_id]) do |result|
elsif result.cmd_tuples == 1
if result.cmd_tuples == 0
# the client is already gone from the database... do nothing
# if we did delete a row, check and see if any more connections for that user exist
# if we are down to zero, send out user gone message
conn.exec("SELECT count(user_id) FROM connections where user_id = $1", [result[0][0]]) do | result|
@mq_router.server_publish_to_user()
elsif result.cmd_tuples == 1
# if we did delete a row, check and see if any more connections for that user exist
# if we are down to zero, send out user gone message
conn.exec("SELECT count(user_id) FROM connections where user_id = $1", [result[0][0]]) do |result|
@mq_router.server_publish_to_user()
end
else
raise Exception 'uniqueness constraint has been lost on client_id'
end
else
raise Exception 'uniqueness constraint has been lost on client_id'
end
end
end
@ -45,5 +48,4 @@ class ConnectionCleaner
end
end