On Sat, Mar 7, 2009 at 2:08 AM, Doug Judd <[email protected]> wrote:
> In the HT_FATALF statement, print out the size of the block that is
> attempting to be inserted into the block cache.  If it is larger than 200MB,
> then that would be the reason.  If the size of the block looks reasonable,
> maybe you can add a method to the BlockCache called something like
> tell_me_why_insert_and_checkout_is_failing() which is an exact copy of
> insert_and_checkout, but prints out a bunch of diagnostic information as to
> why it cannot insert the object into the cache.  Then, right before the call
> to HT_FATALF, call this method and see what it prints out.

Ok, so it's running out of memory for some strange reason, but
surprisingly the RangeServer process is at 15.1% of total memory
utilization

1236389033 ERROR Hypertable.RangeServer : insert_and_checkout
(/home/mateusz/hypertable/src/cc/Hypertable/RangeServer/FileBlockCache.cc:114):
available memory : 303465
1236389033 ERROR Hypertable.RangeServer : insert_and_checkout
(/home/mateusz/hypertable/src/cc/Hypertable/RangeServer/FileBlockCache.cc:115):
length : 996243

It looks like the part of the code below the // make room comment
is unable to find enough room and the only case this could happen is
hitting m_cache.end() == iter condition before enough space gets reserved.

 95   // make room
 96   if (m_avail_memory < length) {
 97     BlockCache::iterator iter = m_cache.begin();
 98     while (iter != m_cache.end()) {
 99       if ((*iter).ref_count == 0) {
100         m_avail_memory += (*iter).length;
101         delete [] (*iter).block;
102         iter = m_cache.erase(iter);
103         if (m_avail_memory >= length)
104           break;
105       }
106       else
107         ++iter;
108     }
109   }
110
111   if (m_avail_memory < length)
112   {
113     HT_ERROR_OUT << "Out of MEMOR?Y!" << HT_END;
114     HT_ERROR_OUT << "available memory : " << m_avail_memory << HT_END;
115     HT_ERROR_OUT << "length : " << length << HT_END;
116     return false;
117   }

Is there anything that I can do to workaround this?

Mateusz

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Hypertable Development" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/hypertable-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to