From dc5699d0f480b5e7fe29d38d14f226364408bffb Mon Sep 17 00:00:00 2001 From: Quinn Chaffee Date: Sat, 24 Oct 2020 09:24:52 -0600 Subject: [PATCH 1/2] Optimization: prevent empty COMMIT calls Prevents `BEGIN COMMIT` empty database calls after each rails request if the session did not change. Don't know why the `write_session` is called in our app every request, but monkey patching using this logic prevents an empty write at the end of each request. --- lib/action_dispatch/session/active_record_store.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/action_dispatch/session/active_record_store.rb b/lib/action_dispatch/session/active_record_store.rb index 4179378..0871110 100644 --- a/lib/action_dispatch/session/active_record_store.rb +++ b/lib/action_dispatch/session/active_record_store.rb @@ -78,7 +78,7 @@ def write_session(request, sid, session_data, options) logger.silence do record = get_session_model(request, sid) record.data = session_data - return false unless record.save + return false if record.changed? and not record.save session_data = record.data if session_data && session_data.respond_to?(:each_value) From 09fd2f6220b35b8340c97561543ac05e92caef58 Mon Sep 17 00:00:00 2001 From: Quinn Chaffee Date: Mon, 3 May 2021 10:09:30 -0600 Subject: [PATCH 2/2] Update active_record_store.rb --- lib/action_dispatch/session/active_record_store.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/action_dispatch/session/active_record_store.rb b/lib/action_dispatch/session/active_record_store.rb index 0871110..d71c9ff 100644 --- a/lib/action_dispatch/session/active_record_store.rb +++ b/lib/action_dispatch/session/active_record_store.rb @@ -78,7 +78,7 @@ def write_session(request, sid, session_data, options) logger.silence do record = get_session_model(request, sid) record.data = session_data - return false if record.changed? and not record.save + return sid if record.changed? and not record.save session_data = record.data if session_data && session_data.respond_to?(:each_value)