diff options
| author | Jorge <spp@jorge.gr> | 2013-09-13 12:22:31 -0700 |
|---|---|---|
| committer | Jorge <spp@jorge.gr> | 2013-09-13 12:22:31 -0700 |
| commit | f0cd684cd1f944622baac2164aa05e015e6d8060 (patch) | |
| tree | 8360042e8d6929c5061bfc0fd955f8df8389b835 /src | |
| parent | 2e15f78305cd8be65bf43236482d1446d0b0d970 (diff) | |
| parent | 1b3575ba772124d2e7a8173a5d35dc9d2d271a8a (diff) | |
Merge pull request #10800 from jackpoz/log_race_condition
Core/Logs: Fix race condition in Log
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/shared/Logging/AppenderFile.cpp | 4 | ||||
| -rw-r--r-- | src/server/shared/Logging/AppenderFile.h | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/server/shared/Logging/AppenderFile.cpp b/src/server/shared/Logging/AppenderFile.cpp index 93d53bcc30d..54458346bb9 100644 --- a/src/server/shared/Logging/AppenderFile.cpp +++ b/src/server/shared/Logging/AppenderFile.cpp @@ -40,7 +40,7 @@ AppenderFile::~AppenderFile() void AppenderFile::_write(LogMessage const& message) { - bool exceedMaxSize = maxFileSize > 0 && (fileSize + message.Size()) > maxFileSize; + bool exceedMaxSize = maxFileSize > 0 && (fileSize.value() + message.Size()) > maxFileSize; if (dynamicName) { @@ -56,7 +56,7 @@ void AppenderFile::_write(LogMessage const& message) fprintf(logfile, "%s%s", message.prefix.c_str(), message.text.c_str()); fflush(logfile); - fileSize += message.Size(); + fileSize += uint64(message.Size()); if (dynamicName) CloseFile(); diff --git a/src/server/shared/Logging/AppenderFile.h b/src/server/shared/Logging/AppenderFile.h index c15974799e1..de94a46d692 100644 --- a/src/server/shared/Logging/AppenderFile.h +++ b/src/server/shared/Logging/AppenderFile.h @@ -19,6 +19,7 @@ #define APPENDERFILE_H #include "Appender.h" +#include "ace/Atomic_Op.h" class AppenderFile: public Appender { @@ -37,7 +38,7 @@ class AppenderFile: public Appender bool dynamicName; bool backup; uint64 maxFileSize; - uint64 fileSize; + ACE_Atomic_Op<ACE_Thread_Mutex, uint64> fileSize; }; #endif |
