[Adding pgadmin-hackers list...] Hi Team,
Using the mutex around the logging code too to avoid overlapping log message. Please review it, and let me know your concern. Implementation details: - Moved 'MutexLogger' class, which was used by the connection management code only, in the include/misc.h - Use a static mutex for the non-windows system, and used 'MutexLogger' instance for the better lock/unlock mechanism in the LogMessage(...) function. -- Thanks, Ashesh On Wed, May 16, 2018 at 6:59 PM, Dave Page <dp...@pgadmin.org> wrote: > > > On Wed, May 16, 2018 at 2:27 PM, Ashesh Vashi < > ashesh.va...@enterprisedb.com> wrote: > >> On Tue, May 8, 2018 at 3:01 PM, Thomas Krennwallner < >> tk+pg...@postsubmeta.net> wrote: >> >>> Hi, >>> >>> I've just found this suspicious log messages (I've added line numbers in >>> the attachment pgagent.log): >>> >>> 8 Tue May 8 11:11:23 2018 DEBUG: Creating DB connection: >>> service=xiserver56_tisdbadm cTue May o8nne ct_timeout11:=151: 23 201 >>> 8applica DEBtUion_nameG: S=pglaeegpeinngt.@.d.e >>> 9 v_tisdevel dbname=dev_tisdevel >>> >>> Note how line 8 and 9 are actually two log messages, which should >>> have been printed in two lines: >>> >>> Tue May 8 11:11:23 2018 DEBUG: Creating DB connection: >>> service=xiserver56_tisdbadm connect_timeout=5 >>> application_name=pgagent@dev_tisdevel dbname=dev_tisdevel >>> Tue May 8 11:11:23 2018 DEBUG: Sleeping... >>> >>> It appears that two threads are writing to stdout at the same time, >>> which calls for an exclusive lock in function >>> void LogMessage(const std::wstring &msg, const int &level) >>> >> Dave, >> >> Shall we use a mutex here too? >> >> > I would think so, yes. > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >
pgagent_logger_mutex.patch
Description: Binary data