[ 
https://issues.apache.org/jira/browse/BEAM-12044?focusedWorklogId=571757&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-571757
 ]

ASF GitHub Bot logged work on BEAM-12044:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 25/Mar/21 09:32
            Start Date: 25/Mar/21 09:32
    Worklog Time Spent: 10m 
      Work Description: turb opened a new pull request #14338:
URL: https://github.com/apache/beam/pull/14338


   According to [PostgreSQL JDBC 
documentation](https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor),
 it is required to disable autocommit in order to allow cursor streaming.
   
   In `JdbcIO:1548` we have 
`poolableConnectionFactory.setDefaultAutoCommit(false);`, however it is only 
applicable to poolable datasource. So any other usage will eventually lead to 
OOM since the JDBC driver silently falls back to full memoization of the 
request result.
   
   The commit disables autocommit more systematically.
   
   cc @lukecwik @kennknowles @aaltay
   
   
   Post-Commit Tests Status (on master branch)
   
------------------------------------------------------------------------------------------------
   
   <table>
     <thead>
       <tr>
         <th>Lang</th>
         <th>SDK</th>
         <th>ULR</th>
         <th>Dataflow</th>
         <th>Flink</th>
         <th>Samza</th>
         <th>Spark</th>
         <th>Twister2</th>
       </tr>
     </thead>
     <tbody>
       <tr>
         <td>Go</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Go/lastCompletedBuild/";>
             <img 
src="https://ci-beam.apache.org/job/beam_PostCommit_Go/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>---</td>
         <td>---</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Go_VR_Flink/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Go_VR_Flink/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>---</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Go_VR_Spark/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Go_VR_Spark/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>---</td>
       </tr>
       <tr>
         <td>Java</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_ULR/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_ULR/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow_Streaming/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow_Streaming/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_VR_Dataflow_V2/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_VR_Dataflow_V2/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_VR_Dataflow_V2_Streaming/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_VR_Dataflow_V2_Streaming/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow_Java11/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Dataflow_Java11/lastCompletedBuild/badge/icon";>
           </a>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_Java_Examples_Dataflow_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_Java_Examples_Dataflow_Cron/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_Java_Examples_Dataflow_Java11_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_Java_Examples_Dataflow_Java11_Cron/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_Examples_Dataflow_V2/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_Examples_Dataflow_V2/lastCompletedBuild/badge/icon";>
           </a><br>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Flink/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Flink/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Flink_Java11/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Flink_Java11/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Flink_Batch/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Flink_Batch/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Flink_Streaming/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Flink_Streaming/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Samza/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Samza/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Spark/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Spark/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Spark_Batch/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_PVR_Spark_Batch/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_SparkStructuredStreaming/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_SparkStructuredStreaming/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Twister2/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Java_ValidatesRunner_Twister2/lastCompletedBuild/badge/icon";>
           </a>
         </td>
       </tr>
       <tr>
         <td>Python</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Python36/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Python36/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Python37/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Python37/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Python38/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Python38/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>---</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Py_VR_Dataflow/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Py_VR_Dataflow/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Py_VR_Dataflow_V2/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Py_VR_Dataflow_V2/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Py_ValCont/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Py_ValCont/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_Python_PVR_Flink_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_Python_PVR_Flink_Cron/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Python_VR_Flink/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Python_VR_Flink/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>---</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_Python_VR_Spark/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_Python_VR_Spark/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>---</td>
       </tr>
       <tr>
         <td>XLang</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Direct/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Direct/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>---</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Dataflow/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Dataflow/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Flink/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Flink/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>---</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Spark/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PostCommit_XVR_Spark/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>---</td>
       </tr>
     </tbody>
   </table>
   
   Pre-Commit Tests Status (on master branch)
   
------------------------------------------------------------------------------------------------
   
   <table>
     <thead>
       <tr>
         <th>---</th>
         <th>Java</th>
         <th>Python</th>
         <th>Go</th>
         <th>Website</th>
         <th>Whitespace</th>
         <th>Typescript</th>
       </tr>
     </thead>
     <tbody>
       <tr>
         <td>Non-portable</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_Java_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_Java_Cron/lastCompletedBuild/badge/icon";>
           </a><br>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_Python_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_Python_Cron/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_PythonLint_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_PythonLint_Cron/lastCompletedBuild/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_PythonDocker_Cron/lastCompletedBuild/";>
             <img 
src="https://camo.githubusercontent.com/4565d7b7e907114e6c1d12323408bd903aa252fefed5eeab93701b05c9628a84/68747470733a2f2f63692d6265616d2e6170616368652e6f72672f6a6f622f6265616d5f507265436f6d6d69745f507974686f6e446f636b65725f43726f6e2f62616467652f69636f6e";
 alt="Build Status" 
data-canonical-src="https://ci-beam.apache.org/job/beam_PreCommit_PythonDocker_Cron/badge/icon";>
           </a><br>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_PythonDocs_Cron/lastCompletedBuild/";>
             <img 
src="https://camo.githubusercontent.com/21afb097a5745440598bee5c59a027b140585eec871c3f3b883200610fabf722/68747470733a2f2f63692d6265616d2e6170616368652e6f72672f6a6f622f6265616d5f507265436f6d6d69745f507974686f6e446f63735f43726f6e2f62616467652f69636f6e";
 alt="Build Status" 
data-canonical-src="https://ci-beam.apache.org/job/beam_PreCommit_PythonDocs_Cron/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_Go_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_Go_Cron/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_Website_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_Website_Cron/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_Whitespace_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_Whitespace_Cron/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_Typescript_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_Typescript_Cron/lastCompletedBuild/badge/icon";>
           </a>
         </td>
       </tr>
       <tr>
         <td>Portable</td>
         <td>---</td>
         <td>
           <a 
href="https://ci-beam.apache.org/job/beam_PreCommit_Portable_Python_Cron/lastCompletedBuild/";>
             <img alt="Build Status" 
src="https://ci-beam.apache.org/job/beam_PreCommit_Portable_Python_Cron/lastCompletedBuild/badge/icon";>
           </a>
         </td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
         <td>---</td>
       </tr>
     </tbody>
   </table>
   
   See 
[.test-infra/jenkins/README](https://github.com/apache/beam/blob/master/.test-infra/jenkins/README.md)
 for trigger phrase, status and link of all Jenkins jobs.
   
   
   GitHub Actions Tests Status (on master branch)
   
------------------------------------------------------------------------------------------------
   [![Build python source distribution and 
wheels](https://github.com/apache/beam/workflows/Build%20python%20source%20distribution%20and%20wheels/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Build+python+source+distribution+and+wheels%22+branch%3Amaster+event%3Aschedule)
   [![Python 
tests](https://github.com/apache/beam/workflows/Python%20tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Python+Tests%22+branch%3Amaster+event%3Aschedule)
   [![Java 
tests](https://github.com/apache/beam/workflows/Java%20Tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Java+Tests%22+branch%3Amaster+event%3Aschedule)
   
   See [CI.md](https://github.com/apache/beam/blob/master/CI.md) for more 
information about GitHub Actions CI.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

            Worklog Id:     (was: 571757)
    Remaining Estimate: 0h
            Time Spent: 10m

> JdbcIO should explicitly setAutoCommit to false
> -----------------------------------------------
>
>                 Key: BEAM-12044
>                 URL: https://issues.apache.org/jira/browse/BEAM-12044
>             Project: Beam
>          Issue Type: Bug
>          Components: sdk-java-core
>    Affects Versions: 2.28.0
>            Reporter: Sylvain Veyrié
>            Priority: P2
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Hello,
> Per [PostgreSQL JDBC 
> documentation|https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor],
>  autocommit must be explicitly disabled on the connection to allow cursor 
> streaming.
> [~jkff] mentionned it [on the mailing 
> list|https://www.mail-archive.com/[email protected]/msg16808.html], however 
> even if there is:
> {code:java}
> poolableConnectionFactory.setDefaultAutoCommit(false);
> {code}
> in JdbcIO:1555, currently, at least with JDBC driver 42.2.16, any read with 
> JdbcIO will memoize the whole dataset (which leads to OOM), since 
> {code:java}
> connection.getAutoCommit()
> {code}
> returns true in JdbcIO#ReadFn#processElement.
> I can provide a PR — the patch is pretty simple (and solves the problem for 
> us in 2.28.0):
> {code:java}
> if (connection == null) {
>         connection = dataSource.getConnection();
> }
> connection.setAutoCommit(false); // line added
> {code}
> Thanks!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to