Thanks for posting this. I've filed issue 827<http://code.google.com/p/hypertable/issues/detail?id=827>to track it. We should be able to turn around a fix fairly quickly. If you'd like us to build you a package with the fix, let us know and we're happy to do that for you.
- Doug On Mon, Apr 23, 2012 at 8:03 PM, gcc.lua <[email protected]> wrote: > user thread logic like follow: > TableScannerPtr aScanner = tbSourcelist- > >create_scanner( specbuilder.get(), 5000 ); > while( aScanner->next( gotCell ) ) > { > ..... > } > > dead lock between user thread and scanner thread: > > 1. user thread TableScanner > > TableScannerAsync::~TableScannerAsync() { > try { > cancel(); > wait_for_completion(); > } > catch (Exception &e) { > HT_ERROR_OUT << e << HT_END; > } > if (m_use_index) { > delete m_cb;//<=========================dead lock entry > m_cb = 0; > } > } > ///////////////////////////////////////// > virtual ~IndexScannerCallback() { > ScopedLock lock(m_mutex);//<========= user thread got this > IndexScannerCallback::m_mutex > if (m_mutator) > delete m_mutator; > > foreach (TableScannerAsync *s, m_scanners) > delete s;//dead lock 1<=============user thread wait > TableScannerAsync::m_mutex > > > 2. scanner thread > > void TableScannerAsync::handle_result(int scanner_id, EventPtr > &event, bool is_create) { > > bool cancelled = is_cancelled(); > ScopedLock lock(m_mutex);<============scanner thread got > TableScannerAsync::m_mutex > ScanCellsPtr cells; > > . . . . . . > maybe_callback_ok();<================call m_cb->scan_ok(this, > cells); > > } > ////////////////////////////// > class IndexScannerCallback : public ResultCallback { > > virtual void scan_ok(TableScannerAsync *scanner, ScanCellsPtr > &scancells) { > bool is_eos = scancells->get_eos(); > String table_name = scanner->get_table_name(); > > ScopedLock lock(m_mutex);//dead lock 2<============scanner > thread wait IndexScannerCallback::m_mutex > > -- > 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. > > -- 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.
