[ 
https://issues.apache.org/jira/browse/MAPREDUCE-1444?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aaron Kimball updated MAPREDUCE-1444:
-------------------------------------

    Attachment: MAPREDUCE-1444.patch

This patch adds a {{release()}} method to the ConnManager API which releases 
the Statement associated with a returned ResultSet. If a ConnManager provides 
you with a ResultSet, you are responsible for calling {{rs.close()}} on the 
ResultSet and then calling the ConnManager's {{release()}} method to free 
internal resources, since we cannot depend on timely finalization. Furthermore, 
using methods of ConnManager which make another database call (e.g., 
{{getColumnTypes()}}) may internally call {{release()}}, nullifying a prior 
ResultSet (e.g., as returned by {{readTable()}}).  This has always been the 
case, but now it is explicit in the code.

This patch does not include explicit tests. Tests using the {{release()}} API 
are included in MAPREDUCE-1445. I used Oracle and MySQL administration tools to 
verify that connections are closed in a timely fashion and that open 
connections do not accrue over time, as they previously did.

> Sqoop ConnManager instances can leak Statement objects
> ------------------------------------------------------
>
>                 Key: MAPREDUCE-1444
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-1444
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: contrib/sqoop
>            Reporter: Aaron Kimball
>            Assignee: Aaron Kimball
>         Attachments: MAPREDUCE-1444.patch
>
>
> The ConnManager API returns ResultSets to users but does not provide a 
> mechanism to clean up the underlying Statement that generated the ResultSet. 
> Problematically, closing the Statement will invalidate the ResultSet, so 
> these must be cleaned up in LIFO order, putting the onus on the receiver of 
> the ResultSet.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to