You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2011/03/13 00:46:36 UTC
svn commit: r1081019 - in /trafficserver/traffic/trunk:
iocore/eventsystem/UnixEThread.cc lib/ts/ink_rand.cc
Author: jplevyak
Date: Sat Mar 12 23:46:35 2011
New Revision: 1081019
URL: http://svn.apache.org/viewvc?rev=1081019&view=rev
Log:
fix the random number generator so that it is not always
the same for every thread. This was causing collisions
in the cache keys which was causing document truncation.
Modified:
trafficserver/traffic/trunk/iocore/eventsystem/UnixEThread.cc
trafficserver/traffic/trunk/lib/ts/ink_rand.cc
Modified: trafficserver/traffic/trunk/iocore/eventsystem/UnixEThread.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/eventsystem/UnixEThread.cc?rev=1081019&r1=1081018&r2=1081019&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/eventsystem/UnixEThread.cc (original)
+++ trafficserver/traffic/trunk/iocore/eventsystem/UnixEThread.cc Sat Mar 12 23:46:35 2011
@@ -41,7 +41,7 @@ struct AIOCallback;
#define NO_ETHREAD_ID -1
EThread::EThread()
- : generator((uint32_t)((uintptr_t)time(NULL) ^ (uintptr_t) this)),
+ : generator((uint64_t)ink_get_hrtime_internal() ^ (uint64_t)(uintptr_t)this),
ethreads_to_be_signalled(NULL),
n_ethreads_to_be_signalled(0),
main_accept_index(-1),
@@ -53,7 +53,7 @@ EThread::EThread()
}
EThread::EThread(ThreadType att, int anid)
- : generator((uint32_t)((uintptr_t)time(NULL) ^ (uintptr_t) this)),
+ : generator((uint64_t)ink_get_hrtime_internal() ^ (uint64_t)(uintptr_t)this),
ethreads_to_be_signalled(NULL),
n_ethreads_to_be_signalled(0),
main_accept_index(-1),
Modified: trafficserver/traffic/trunk/lib/ts/ink_rand.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/lib/ts/ink_rand.cc?rev=1081019&r1=1081018&r2=1081019&view=diff
==============================================================================
--- trafficserver/traffic/trunk/lib/ts/ink_rand.cc (original)
+++ trafficserver/traffic/trunk/lib/ts/ink_rand.cc Sat Mar 12 23:46:35 2011
@@ -67,7 +67,6 @@ static uint64_t mag01[2]={0ULL, MATRIX_A
InkRand::InkRand(uint64_t d) {
seed(d);
- mti = NN+1;
}
void InkRand::seed(uint64_t seed) {
@@ -81,12 +80,6 @@ uint64_t InkRand::random() {
uint64_t x;
if (mti >= NN) { /* generate NN words at one time */
-
- /* if init_genrand64() has not been called, */
- /* a default initial seed is used */
- if (mti == NN+1)
- seed(5489ULL);
-
for (i=0;i<NN-MM;i++) {
x = (mt[i]&UM)|(mt[i+1]&LM);
mt[i] = mt[i+MM] ^ (x>>1) ^ mag01[(int)(x&1ULL)];