Yibing Shi created SQOOP-2343:
---------------------------------

             Summary: AsyncSqlRecordWriter stucks if any exception is thrown 
out in its close method
                 Key: SQOOP-2343
                 URL: https://issues.apache.org/jira/browse/SQOOP-2343
             Project: Sqoop
          Issue Type: Bug
          Components: connectors
    Affects Versions: 1.4.5
            Reporter: Yibing Shi


In class {{AsyncSqlRecordWriter}}, if any exception is thrown in its close 
method, the Hadoop MapTask will call this close method once more in case it 
hasn't been closed. Please see below code snippet (in method runNewMapper):
{code}
    try {
      input.initialize(split, mapperContext);
      mapper.run(mapperContext);
      mapPhase.complete();
      setPhase(TaskStatus.Phase.SORT);
      statusUpdate(umbilical);
      input.close();
      input = null;
      output.close(mapperContext);
      output = null;
    } finally {
      closeQuietly(input);
      closeQuietly(output, mapperContext);
    }
{code}

The second time the close method is called, the main thread will stuck in 
executeUpdate when trying to put a new dbOp into the synchronous queue, because 
at this moment the worker thread has ended and thus not receiver will take that 
object, which makes the putter (main thread) stuck.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to