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.

Reply via email to