From: <he...@us...> - 2010-06-05 22:25:01
|
Revision: 209 http://simspark.svn.sourceforge.net/simspark/?rev=209&view=rev Author: hedayat Date: 2010-06-05 22:24:55 +0000 (Sat, 05 Jun 2010) Log Message: ----------- (Hopefully) fixed the race condition when logging is enabled Removed an extra output line Modified Paths: -------------- trunk/rcssserver3d/plugin/soccer/trainercommandparser/trainercommandparser.cpp trunk/spark/ChangeLog trunk/spark/lib/oxygen/monitorserver/monitorserver.cpp trunk/spark/lib/oxygen/monitorserver/monitorserver.h Modified: trunk/rcssserver3d/plugin/soccer/trainercommandparser/trainercommandparser.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/trainercommandparser/trainercommandparser.cpp 2010-06-04 21:19:08 UTC (rev 208) +++ trunk/rcssserver3d/plugin/soccer/trainercommandparser/trainercommandparser.cpp 2010-06-05 22:24:55 UTC (rev 209) @@ -159,8 +159,6 @@ bool TrainerCommandParser::ParsePredicate(const oxygen::Predicate & predicate) { - cerr << "repos 1" << endl; - SoccerBase::GetGameState(*this,mGameState); SoccerBase::GetSoccerRuleAspect(*this,mSoccerRule); Modified: trunk/spark/ChangeLog =================================================================== --- trunk/spark/ChangeLog 2010-06-04 21:19:08 UTC (rev 208) +++ trunk/spark/ChangeLog 2010-06-05 22:24:55 UTC (rev 209) @@ -1,3 +1,9 @@ +2010-06-06 Hedayat Vatankhah <he...@gr...> + + * lib/oxygen/monitorserver/monitorserver.h: + * lib/oxygen/monitorserver/monitorserver.cpp (MonitorServer::GetMonitorData): + - more protection against simultaneous access (by monitor(s) and the logger) + 2010-06-05 Hedayat Vatankhah <he...@gr...> * lib/oxygen/simulationserver/simulationserver.cpp (SimulationServer::Step): Modified: trunk/spark/lib/oxygen/monitorserver/monitorserver.cpp =================================================================== --- trunk/spark/lib/oxygen/monitorserver/monitorserver.cpp 2010-06-04 21:19:08 UTC (rev 208) +++ trunk/spark/lib/oxygen/monitorserver/monitorserver.cpp 2010-06-05 22:24:55 UTC (rev 209) @@ -170,6 +170,7 @@ } PredicateList pList; + boost::mutex::scoped_lock dataLock(mMonitorMutex); CollectItemPredicates(true,pList); return monitorSystem->GetMonitorHeaderInfo(pList); } @@ -177,7 +178,7 @@ string MonitorServer::GetMonitorData() { int cycle = mSimulationServer->GetCycle(); - boost::mutex::scoped_lock dataLock(mDataMutex); + boost::mutex::scoped_lock dataLock(mMonitorMutex); if ( cycle == mDataCycle ){ return mData; @@ -203,7 +204,7 @@ if (monitorSystem.get() != 0) { + boost::mutex::scoped_lock dataLock(mMonitorMutex); monitorSystem->ParseMonitorMessage(data); } } - Modified: trunk/spark/lib/oxygen/monitorserver/monitorserver.h =================================================================== --- trunk/spark/lib/oxygen/monitorserver/monitorserver.h 2010-06-04 21:19:08 UTC (rev 208) +++ trunk/spark/lib/oxygen/monitorserver/monitorserver.h 2010-06-05 22:24:55 UTC (rev 209) @@ -92,8 +92,8 @@ /** the cycle of cacahed data */ int mDataCycle; - /** a mutex to protect mData and mDataCycle variables */ - boost::mutex mDataMutex; + /** a mutex to protect monitor related internal data */ + boost::mutex mMonitorMutex; }; DECLARE_CLASS(MonitorServer); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |