Make the hashed object write code not block on an SQL write. Make bulk updates efficient.

This commit is contained in:
JoelKatz
2012-06-24 04:53:31 -07:00
parent 4a15c2a105
commit 748461ddc2
4 changed files with 80 additions and 62 deletions

View File

@@ -642,14 +642,13 @@ int SHAMap::flushDirty(int maxNodes, HashedObjectType t, uint32 seq)
if(mDirtyNodes)
{
HashedObjectBulkWriter bw(theApp->getHashedObjectStore());
boost::unordered_map<SHAMapNode, SHAMapTreeNode::pointer>& dirtyNodes = *mDirtyNodes;
boost::unordered_map<SHAMapNode, SHAMapTreeNode::pointer>::iterator it = dirtyNodes.begin();
while (it != dirtyNodes.end())
{
s.erase();
it->second->addRaw(s);
bw.store(t, seq, s.peekData(), s.getSHA512Half());
theApp->getHashedObjectStore().store(t, seq, s.peekData(), s.getSHA512Half());
if (flushed++ >= maxNodes)
return flushed;
it = dirtyNodes.erase(it);