fix core from new file caching logic

This commit is contained in:
Matt Wells
2015-09-10 20:42:45 -07:00
parent ed9c5c580a
commit f3b2883268
2 changed files with 23 additions and 7 deletions

@ -1054,13 +1054,13 @@ bool Msg3::doneScanning ( ) {
// compute cache info
RdbCache *rpc = getDiskPageCache ( m_rdbId );
int64_t vfd = ff->getVfd();
int64_t vfd ;
if ( ff ) vfd = ff->getVfd();
key192_t ck ;
ck = makeCacheKey ( vfd ,
m_scans[i].m_offset ,
m_scans[i].m_bytesToRead );
if ( ff )
ck = makeCacheKey ( vfd ,
m_scans[i].m_offset ,
m_scans[i].m_bytesToRead );
if ( m_validateCache && ff && rpc && vfd != -1 ) {
bool inCache;
char *rec; int32_t recSize;

@ -600,7 +600,7 @@ bool TcpServer::sendMsg ( int32_t ip ,
// had not closed it.
if ( g_hostdb.m_hostId == 0 ) {
SafeBuf sb;
sb.safePrintf("tcp: newsd=%i readbuf=",s->m_sd);
sb.safePrintf("tcp: open newsd=%i sendbuf=",s->m_sd);
sb.safeTruncateEllipsis (sendBuf,sendBufSize,200);
log("%s",sb.getBufStart());
}
@ -2275,6 +2275,22 @@ void TcpServer::destroySocket ( TcpSocket *s ) {
// if sd is 0 do not really close it. seems to fix that bug.
// 0 is the FD for stdin so i don't know how that is happening.
if ( sd != 0 ) cret = ::close ( sd );
if ( g_hostdb.m_hostId == 0 ) {
SafeBuf sb;
sb.safePrintf("tcp: closing sd=%i sendbuf=",s->m_sd);
if ( s->m_sendBuf )
sb.safeTruncateEllipsis(s->m_sendBuf,
s->m_sendBufSize,
200);
sb.safePrintf(" readbuf=");
if ( s->m_readBuf )
sb.safeTruncateEllipsis(s->m_readBuf,
s->m_readBufSize,
200);
log("%s",sb.getBufStart());
}
if ( cret != 0 ) { // == -1 )
log("tcp: s=%"PTRFMT" close(%"INT32") = %"INT32" = %s",
(PTRTYPE)s,(int32_t)sd,cret,mstrerror(errno));