aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJorge <spp@jorge.gr>2013-09-13 12:22:31 -0700
committerJorge <spp@jorge.gr>2013-09-13 12:22:31 -0700
commitf0cd684cd1f944622baac2164aa05e015e6d8060 (patch)
tree8360042e8d6929c5061bfc0fd955f8df8389b835 /src
parent2e15f78305cd8be65bf43236482d1446d0b0d970 (diff)
parent1b3575ba772124d2e7a8173a5d35dc9d2d271a8a (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.cpp4
-rw-r--r--src/server/shared/Logging/AppenderFile.h3
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