cleanup old sessions

This commit is contained in:
Seth Call 2017-10-16 07:41:30 -05:00
parent cd7d28c819
commit 6ca148b515
5 changed files with 29 additions and 49 deletions

View File

@ -379,3 +379,4 @@ youtube_broadcast.sql
amazon_v1.sql amazon_v1.sql
sms_index_optimize.sql sms_index_optimize.sql
amazon_signup.sql amazon_signup.sql
age_out_sessions.sql

View File

@ -0,0 +1,2 @@
ALTER TABLE music_sessions ADD COLUMN old BOOLEAN NOT NULL DEFAULT FALSE;
CREATE INDEX index_music_sessions_on_old ON music_sessions USING btree(old);

View File

@ -184,26 +184,25 @@ CREATE OR REPLACE FUNCTION sms_index_test (my_user_id VARCHAR, my_locidispid BIG
$$ LANGUAGE plpgsql; $$ LANGUAGE plpgsql;
-- XXXX TODO: TURN THESE ON AFTER PRODUCTION IS UPDATED -- XXXX TODO: TURN THESE ON AFTER PRODUCTION IS UPDATED
-- CREATE INDEX index_rsvp_requests_rsvp_slots_on_rsvp_request_id ON rsvp_requests_rsvp_slots USING btree(rsvp_request_id); CREATE INDEX index_rsvp_requests_rsvp_slots_on_rsvp_request_id ON rsvp_requests_rsvp_slots USING btree(rsvp_request_id);
-- CREATE INDEX index_rsvp_requests_rsvp_slots_on_rsvp_slot_id ON rsvp_requests_rsvp_slots USING btree(rsvp_slot_id); CREATE INDEX index_rsvp_requests_rsvp_slots_on_rsvp_slot_id ON rsvp_requests_rsvp_slots USING btree(rsvp_slot_id);
-- CREATE INDEX index_rsvp_requests_rsvp_slots_on_chosen ON rsvp_requests_rsvp_slots USING btree(chosen); CREATE INDEX index_rsvp_requests_rsvp_slots_on_chosen ON rsvp_requests_rsvp_slots USING btree(chosen);
-- CREATE INDEX index_rsvp_slots_on_music_session_id ON rsvp_slots USING btree(music_session_id); CREATE INDEX index_rsvp_slots_on_music_session_id ON rsvp_slots USING btree(music_session_id);
-- CREATE INDEX index_rsvp_requests_user_id ON rsvp_requests USING btree(user_id); CREATE INDEX index_rsvp_requests_user_id ON rsvp_requests USING btree(user_id);
-- CREATE INDEX index_rsvp_requests_canceled ON rsvp_requests USING btree(canceled); CREATE INDEX index_rsvp_requests_canceled ON rsvp_requests USING btree(canceled);
-- CREATE INDEX index_invitations_on_receiver_id ON invitations USING btree(receiver_id); CREATE INDEX index_invitations_on_receiver_id ON invitations USING btree(receiver_id);
-- CREATE INDEX index_invitations_on_music_session_id ON invitations USING btree(music_session_id); CREATE INDEX index_invitations_on_music_session_id ON invitations USING btree(music_session_id);
-- select sms_index_test('062deeba-b917-46e2-bfa3-e829405ca602'::varchar, 26880045373::bigint, 18.911563873291::integer, 'any'::varchar, false::boolean)
-- CREATE INDEX index_affiliate_traffic_totals_on_day ON affiliate_traffic_totals USING btree(day); CREATE INDEX index_affiliate_traffic_totals_on_day ON affiliate_traffic_totals USING btree(day);
-- CREATE INDEX index_affiliate_traffic_totals_on_affiliate_partner_id ON affiliate_traffic_totals USING btree(affiliate_partner_id); CREATE INDEX index_affiliate_traffic_totals_on_affiliate_partner_id ON affiliate_traffic_totals USING btree(affiliate_partner_id);
-- CREATE INDEX index_users_on_affiliate_referral_id ON users USING btree(affiliate_referral_id); CREATE INDEX index_users_on_affiliate_referral_id ON users USING btree(affiliate_referral_id);
-- CREATE INDEX index_users_on_created_at ON users USING btree(created_at); CREATE INDEX index_users_on_created_at ON users USING btree(created_at);
-- CREATE INDEX index_share_tokens_on_shareable_id ON share_tokens USING btree(shareable_id); CREATE INDEX index_share_tokens_on_shareable_id ON share_tokens USING btree(shareable_id);
-- CREATE INDEX index_music_sessions_on_create_type ON music_sessions USING btree(create_type); CREATE INDEX index_music_sessions_on_create_type ON music_sessions USING btree(create_type);
-- CREATE INDEX index_music_sessions_on_scheduled_start ON music_sessions USING btree(scheduled_start); CREATE INDEX index_music_sessions_on_scheduled_start ON music_sessions USING btree(scheduled_start);
-- CREATE INDEX index_music_sessions_on_canceled ON music_sessions USING btree(canceled); CREATE INDEX index_music_sessions_on_canceled ON music_sessions USING btree(canceled);
-- CREATE INDEX index_music_sessions_on_session_removed_at ON music_sessions USING btree(session_removed_at); CREATE INDEX index_music_sessions_on_session_removed_at ON music_sessions USING btree(session_removed_at);
-- CREATE INDEX index_music_sessions_on_started_at ON music_sessions USING btree(started_at); CREATE INDEX index_music_sessions_on_started_at ON music_sessions USING btree(started_at);
-- update music_sessions set canceled = true WHERE (scheduled_start IS NULL OR scheduled_start > (NOW() - (interval '15 minute'))) AND canceled = FALSE AND description != 'Jam Track Session' AND id NOT IN (SELECT id FROM active_music_sessions) AND id NOT IN (select distinct on(name, user_id) id FROM music_sessions WHERE (scheduled_start IS NULL OR scheduled_start > (NOW() - (interval '15 minute'))) AND canceled = FALSE AND description != 'Jam Track Session' AND id NOT IN (SELECT id FROM active_music_sessions) order by name, user_id); -- update music_sessions set canceled = true WHERE (scheduled_start IS NULL OR scheduled_start > (NOW() - (interval '15 minute'))) AND canceled = FALSE AND description != 'Jam Track Session' AND id NOT IN (SELECT id FROM active_music_sessions) AND id NOT IN (select distinct on(name, user_id) id FROM music_sessions WHERE (scheduled_start IS NULL OR scheduled_start > (NOW() - (interval '15 minute'))) AND canceled = FALSE AND description != 'Jam Track Session' AND id NOT IN (SELECT id FROM active_music_sessions) order by name, user_id);
@ -214,26 +213,3 @@ $$ LANGUAGE plpgsql;
-- get count -- get count
-- SELECT count(id) FROM music_sessions WHERE (scheduled_start IS NULL OR scheduled_start > (NOW() - (interval '15 minute'))) AND canceled = FALSE AND description != 'Jam Track Session' AND id NOT IN (SELECT id FROM active_music_sessions) -- SELECT count(id) FROM music_sessions WHERE (scheduled_start IS NULL OR scheduled_start > (NOW() - (interval '15 minute'))) AND canceled = FALSE AND description != 'Jam Track Session' AND id NOT IN (SELECT id FROM active_music_sessions)
SELECT distinct music_sessions.* FROM "music_sessions" LEFT OUTER JOIN
rsvp_slots
ON
music_sessions.id = rsvp_slots.music_session_id AND (music_sessions.canceled = FALSE)
LEFT OUTER JOIN
rsvp_requests_rsvp_slots
ON
rsvp_requests_rsvp_slots.rsvp_slot_id = rsvp_slots.id
LEFT OUTER JOIN
rsvp_requests
ON rsvp_requests.id = rsvp_requests_rsvp_slots.rsvp_request_id
LEFT OUTER JOIN
invitations
ON
music_sessions.id = invitations.music_session_id AND invitations.receiver_id = 'aedab51a-14cd-46d1-9828-29eadddd1f53'
WHERE
(music_sessions.scheduled_start IS NULL OR (music_sessions.scheduled_start > NOW() - '12 hour'::INTERVAL AND music_sessions.started_at IS NULL) OR (music_sessions.session_removed_at > NOW() - '2 hour'::INTERVAL) OR (music_sessions.started_at IS NOT NULL AND music_sessions.session_removed_at IS NULL)) AND (music_sessions.create_type IS NULL OR (music_sessions.create_type != 'quick-start' AND music_sessions.create_type != 'quick-public')) AND
((rsvp_requests.id IS NOT NULL AND rsvp_requests_rsvp_slots.id IS NOT NULL AND rsvp_requests.user_id = 'aedab51a-14cd-46d1-9828-29eadddd1f53' AND rsvp_requests_rsvp_slots.chosen = true) OR (invitations.id IS NOT NULL) OR (music_sessions.user_id = 'aedab51a-14cd-46d1-9828-29eadddd1f53') ) ORDER BY music_sessions.scheduled_start ASC;

View File

@ -900,15 +900,14 @@ module JamRuby
end end
def self.cleanup_old_sessions def self.cleanup_old_sessions
session__started = "(music_sessions.scheduled_start > NOW() - '12 hour'::INTERVAL AND music_sessions.started_at IS NULL)" old_scheduled_start = "(create_type is NOT NULL AND music_sessions.scheduled_start < NOW() - '24 hour'::INTERVAL)"
# keep started sessions that are not finished yet
session_started_not_finished = "(music_sessions.started_at IS NOT NULL AND music_sessions.session_removed_at IS NULL)"
# let session be restarted for up to 2 hours after finishing # let session be restarted for up to 2 hours after finishing
session_not_finished = "(music_sessions.session_removed_at > NOW() - '2 hour'::INTERVAL)" session_not_finished = "(create_type IS NOT NULL AND music_sessions.session_removed_at < NOW() - '24 hour'::INTERVAL)"
MusicSession.where() old_adhoc_sessions = "(create_type IS NULL and music_sessions.created_at < NOW() - '24 hour'::INTERVAL)"
MusicSession.where("#{old_scheduled_start} OR #{session_not_finished} OR #{old_adhoc_sessions}").update_all(old: true)
end end
def end_history def end_history

View File

@ -13,6 +13,8 @@ module JamRuby
calendar_manager = CalendarManager.new calendar_manager = CalendarManager.new
calendar_manager.cleanup() calendar_manager.cleanup()
MusicSession.cleanup_old_sessions
@@log.debug("done") @@log.debug("done")
end end