speed up overflow check for firstip with a little

cache thingy. reduce log spam from ssl msgs.
This commit is contained in:
Matt
2015-03-10 13:24:03 -07:00
parent 7cf549bf2a
commit ef66e1e69f
2 changed files with 30 additions and 15 deletions

@ -3769,6 +3769,27 @@ bool SpiderColl::readListFromSpiderdb ( ) {
//if ( m_isReadDone ) return true;
}
static int32_t s_lastIn = 0;
static int32_t s_lastOut = 0;
bool SpiderColl::isFirstIpInOverflowList ( int32_t firstIp ) {
if ( ! m_overflowList ) return false;
if ( firstIp == 0 || firstIp == -1 ) return false;
if ( firstIp == s_lastIn ) return true;
if ( firstIp == s_lastOut ) return false;
for ( int32_t oi = 0 ; ; oi++ ) {
// stop at end
if ( ! m_overflowList[oi] ) break;
// an ip of zero is end of the list
if ( m_overflowList[oi] == firstIp ) {
s_lastIn = firstIp;
return true;
}
}
s_lastOut = firstIp;
return false;
}
// . ADDS top X winners to m_winnerTree
// . this is ONLY CALLED from evalIpLoop() above
// . scan m_list that we read from spiderdb for m_scanningIp IP
@ -4765,7 +4786,7 @@ bool SpiderColl::scanListForWinners ( ) {
// don't add any more outlinks to this firstip after we
// have 10M spider requests for it.
// lower for testing
//if ( m_totalNewSpiderRequests > 100 )
//if ( m_totalNewSpiderRequests > 1 )
if ( m_totalNewSpiderRequests > 10000000 )
overflow = true;
@ -4803,6 +4824,8 @@ bool SpiderColl::scanListForWinners ( ) {
// if we need to add it...
if ( overflow && ! found && m_overflowList ) {
log("spider: adding %s to overflow list",iptoa(firstIp));
// reset this little cache thingy
s_lastOut = 0;
// take the empty slot if there is one
if ( emptySlot >= 0 )
m_overflowList[emptySlot] = firstIp;
@ -4826,6 +4849,8 @@ bool SpiderColl::scanListForWinners ( ) {
// take it out of list
m_overflowList[oi2] = -1;
log("spider: removing %s from overflow list",iptoa(firstIp));
// reset this little cache thingy
s_lastIn = 0;
break;
}
/////
@ -13891,15 +13916,3 @@ void SpiderLoop::buildActiveList ( ) {
tail = cr;
}
}
bool SpiderColl::isFirstIpInOverflowList ( int32_t firstIp ) {
if ( ! m_overflowList ) return false;
if ( firstIp == 0 || firstIp == -1 ) return false;
for ( int32_t oi = 0 ; ; oi++ ) {
// stop at end
if ( ! m_overflowList[oi] ) break;
// an ip of zero is end of the list
if ( m_overflowList[oi] == firstIp ) return true;
}
return false;
}

@ -2834,7 +2834,7 @@ int TcpServer::sslHandshake ( TcpSocket *s ) {
}
// if the connection happened return r, should be 1
if ( r > 0 ) {
//if ( g_conf.m_logDebugTcp )
if ( g_conf.m_logDebugTcp )
log("tcp: ssl handshake done. entering writing mode "
"sd=%i",s->m_sd);
// ok, it completed, go into writing mode
@ -2882,7 +2882,9 @@ int TcpServer::sslHandshake ( TcpSocket *s ) {
// read callbacks are always registered and if we need a read
// hopefully it will be called. TODO: verify this...
if ( sslError == SSL_ERROR_WANT_READ ) {
log("tcp: ssl handshake is not want write sd=%i",s->m_sd);
if ( g_conf.m_logDebugTcp )
log("tcp: ssl handshake is not want write sd=%i",
s->m_sd);
//logSSLError(s->m_ssl, r);
return 0;
}