Hi Martin, > Would it be good to do a 0.5.1 release of the CPP to include this fix?
Not just for this, no, I don't think so. The problem only affects users who dynamically load qpid dlls from separate programs. It's been fixed on trunk for some time, but I have a customer that needed a 0.5-based svn tag for safe keeping. -Steve > 2009/9/3 <[email protected]>: > > Author: shuston > > Date: Wed Sep 2 23:22:10 2009 > > New Revision: 810731 > > > > URL: http://svn.apache.org/viewvc?rev=810731&view=rev > > Log: > > Removed TSS variables that tracked I/O counts; not used. > Part of fix for QPID-1868 > > > > Modified: > > > qpid/branches/0.5-release/qpid/cpp/src/qpid/sys/windows/AsynchIO.cpp > > > > Modified: > qpid/branches/0.5-release/qpid/cpp/src/qpid/sys/windows/AsynchIO.cpp > > URL: > http://svn.apache.org/viewvc/qpid/branches/0.5-release/qpid/cp > p/src/qpid/sys/windows/AsynchIO.cpp?rev=810731&r1=810730&r2=81 > 0731&view=diff > > > ============================================================== > ================ > > --- > qpid/branches/0.5-release/qpid/cpp/src/qpid/sys/windows/Asynch > IO.cpp (original) > > +++ > qpid/branches/0.5-release/qpid/cpp/src/qpid/sys/windows/Asynch > IO.cpp Wed Sep 2 23:22:10 2009 > > @@ -50,12 +50,15 @@ > > * recorded in each thread is about the same. If this turns > out not to be the > > * case we could rebalance the info occasionally. > > */ > > +#if 0 > > + // These are never used and __declspec(thread) causes > accvio on dynamic load > > QPID_TSS int threadReadTotal = 0; > > QPID_TSS int threadMaxRead = 0; > > QPID_TSS int threadReadCount = 0; > > QPID_TSS int threadWriteTotal = 0; > > QPID_TSS int threadWriteCount = 0; > > QPID_TSS int64_t threadMaxReadTimeNs = 2 * 1000000; // start at 2ms > > +#endif > > > > /* > > * The function pointers for AcceptEx and ConnectEx need to > be looked up > > @@ -642,12 +645,12 @@ > > } > > > > void AsynchIO::readComplete(AsynchReadResult *result) { > > - ++threadReadCount; > > + // ++threadReadCount; > > int status = result->getStatus(); > > size_t bytes = result->getTransferred(); > > if (status == 0 && bytes > 0) { > > bool restartRead = true; // May not if receiver > doesn't want more > > - threadReadTotal += bytes; > > + // threadReadTotal += bytes; > > if (readCallback) > > restartRead = readCallback(*this, result->getBuff()); > > if (restartRead) > > @@ -674,10 +677,10 @@ > > size_t bytes = result->getTransferred(); > > AsynchIO::BufferBase *buff = result->getBuff(); > > if (buff != 0) { > > - ++threadWriteCount; > > + // ++threadWriteCount; > > writeInProgress = false; > > if (status == 0 && bytes > 0) { > > - threadWriteTotal += bytes; > > + // threadWriteTotal += bytes; > > if (bytes < result->getRequested()) // Still > more to go; resubmit > > startWrite(buff); > > else > > > > > > > > > --------------------------------------------------------------------- > > Apache Qpid - AMQP Messaging Implementation > > Project: http://qpid.apache.org > > Use/Interact: mailto:[email protected] > > > > > > > > -- > Martin Ritchie > > --------------------------------------------------------------------- > Apache Qpid - AMQP Messaging Implementation > Project: http://qpid.apache.org > Use/Interact: mailto:[email protected] > > --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
