Just to close this thread I found the cause of the problem: looking into
the code of the mysql connector the value of
PropertyDefinitions.SYSP_disableAbandonedConnectionCleanup
is "com.mysql.cj.disableAbandonedConnectionCleanup" and not
"com.mysql.disableAbandonedConnectionCleanup" as stated in [1]...I'll try
to inform the guys of the mysql site.. Thanks anyway for the support.

[1] https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-22.html

On Fri, Nov 20, 2020 at 1:13 PM Arvid Heise <ar...@ververica.com> wrote:

> No magic for JVM properties afaik (and I just looked in the code base for
> the most obvious candidates). There is also nothing to gain from
> overwriting properties.
> I'm also certain that it should work as it's used in most secured setups
> to inject keys/keytabs.
>
> What happens if you execute the Flink program in a local executor or mini
> cluster? Could you set a breakpoint to the static initializer of
> AbandonedConnectionCleanupThread and check what's going on there?
>
>
>
> On Fri, Nov 20, 2020 at 12:58 PM Flavio Pompermaier <pomperma...@okkam.it>
> wrote:
>
>> Yes, that's what is surprising..I already did a remote debug on the TM
>> and that property is not read..but that's really weird..could it be that
>> the JVM properties gets cleared before invoking the tasks?
>>
>> Il ven 20 nov 2020, 12:50 Arvid Heise <ar...@ververica.com> ha scritto:
>>
>>> All looks good and as it should be.
>>>
>>> Can you do a remote debugging session to the tm once more and check
>>> Boolean.getBoolean("com.mysql.disableAbandonedConnectionCleanup")
>>>
>>> There is no magic involved in System properties in Flink. If the
>>> property is set on the process, the configuration works. If it's in the
>>> project, mysql can access it.
>>>
>>> On Fri, Nov 20, 2020 at 10:46 AM Flavio Pompermaier <
>>> pomperma...@okkam.it> wrote:
>>>
>>>> I've just tested the following code in a java class and the property
>>>> (-Dcom.mysql.cj.disableAbandonedConnectionCleanup=true)  is read correctly
>>>> and the abandonedConnectionCleanupDisabled does not initialize
>>>> the cleanupThreadExecutorService (that in my other test was causing a
>>>> dynamic classloading memory leak):
>>>>
>>>>  try {
>>>>       Class.forName(drivername);
>>>>       Connection dbConn = DriverManager.getConnection(dbURL, username,
>>>> password);
>>>>       System.out.println("OK");
>>>>     } catch (SQLException se) {
>>>>       throw new IllegalArgumentException("open() failed." +
>>>> se.getMessage(), se);
>>>>     } catch (ClassNotFoundException cnfe) {
>>>>       throw new IllegalArgumentException("JDBC-Class not found. - " +
>>>> cnfe.getMessage(), cnfe);
>>>>     }
>>>>
>>>> This is the output of ps aux command (I can also notice that the
>>>> taskmanager parameters are created using a space after the -D option that I
>>>> don't know if it intended or not):
>>>>
>>>> flink    23904 59.5  1.1 5488264 380396 pts/5  Sl   10:41   0:08 java
>>>> -Xmx536870902 -Xms536870902 -XX:MaxDirectMemorySize=268435458
>>>> -XX:MaxMetaspaceSize=268435456
>>>> -Dcom.mysql.disableAbandonedConnectionCleanup=true
>>>> -Dlog.file=/opt/flink/flink-1.11.0/log/flink-flink-taskexecutor-0-flavio-ThinkPad-P50.log
>>>> -Dlog4j.configuration=file:/opt/flink/flink-1.11.0/conf/log4j.properties
>>>> -Dlog4j.configurationFile=file:/opt/flink/flink-1.11.0/conf/log4j.properties
>>>> -Dlogback.configurationFile=file:/opt/flink/flink-1.11.0/conf/logback.xml
>>>> -classpath
>>>> /opt/flink/flink-1.11.0/lib/flink-csv-1.11.0.jar:/opt/flink/flink-1.11.0/lib/flink-json-1.11.0.jar:/opt/flink/flink-1.11.0/lib/flink-shaded-zookeeper-3.4.14.jar:/opt/flink/flink-1.11.0/lib/flink-table_2.12-1.11.0.jar:/opt/flink/flink-1.11.0/lib/flink-table-blink_2.12-1.11.0.jar:/opt/flink/flink-1.11.0/lib/log4j-1.2-api-2.12.1.jar:/opt/flink/flink-1.11.0/lib/log4j-api-2.12.1.jar:/opt/flink/flink-1.11.0/lib/log4j-core-2.12.1.jar:/opt/flink/flink-1.11.0/lib/log4j-slf4j-impl-2.12.1.jar:/opt/flink/flink-1.11.0/lib/mariadb-java-client-2.6.0.jar:/opt/flink/flink-1.11.0/lib/mssql-jdbc-7.4.1.jre11.jar:/opt/flink/flink-1.11.0/lib/mysql-connector-java-8.0.22.jar:/opt/flink/flink-1.11.0/lib/flink-dist_2.12-1.11.0.jar:::
>>>> org.apache.flink.runtime.taskexecutor.TaskManagerRunner --configDir
>>>> /opt/flink/flink-1.11.0/conf -D
>>>> taskmanager.memory.framework.off-heap.size=134217728b -D
>>>> taskmanager.memory.network.max=134217730b -D
>>>> taskmanager.memory.network.min=134217730b -D
>>>> taskmanager.memory.framework.heap.size=134217728b -D
>>>> taskmanager.memory.managed.size=536870920b -D taskmanager.cpu.cores=1.0 -D
>>>> taskmanager.memory.task.heap.size=402653174b -D
>>>> taskmanager.memory.task.off-heap.size=0b
>>>>
>>>> The mysql dependency in the maven project is:
>>>>
>>>> <dependency>
>>>>    <groupId>mysql</groupId>
>>>>    <artifactId>mysql-connector-java</artifactId>
>>>>    <version>8.0.22</version>
>>>>    <scope>provided</scope>
>>>> </dependency>
>>>>
>>>> On Fri, Nov 20, 2020 at 10:07 AM Flavio Pompermaier <
>>>> pomperma...@okkam.it> wrote:
>>>>
>>>>> no no I didn't relocate any class related to jdbc
>>>>>
>>>>> Il ven 20 nov 2020, 10:02 Arvid Heise <ar...@ververica.com> ha
>>>>> scritto:
>>>>>
>>>>>> I was particularly asking if you relocate classes. Since the property
>>>>>> name looks like a class name, it could have been changed as well. Could 
>>>>>> you
>>>>>> check the value of
>>>>>> PropertyDefinitions.SYSP_disableAbandonedConnectionCleanup in your final
>>>>>> jar?
>>>>>>
>>>>>> On Fri, Nov 20, 2020 at 9:35 AM Flavio Pompermaier <
>>>>>> pomperma...@okkam.it> wrote:
>>>>>>
>>>>>>> the mysql connector is put in the client classpath and in the Flink
>>>>>>> lib dir. When i debugged remotely the AbandonedConnectionCleanupThread
>>>>>>> was initialized at the first run of the job by the taskmamager. Today 
>>>>>>> I'll
>>>>>>> try to run the mysql connector in a standalone java app to see if the
>>>>>>> property is read correctly or not.
>>>>>>>
>>>>>>> Il ven 20 nov 2020, 07:52 Arvid Heise <ar...@ververica.com> ha
>>>>>>> scritto:
>>>>>>>
>>>>>>>> Hi Flavio,
>>>>>>>>
>>>>>>>> if it arrives in the java process then you are doing everything
>>>>>>>> right already (or almost).
>>>>>>>>
>>>>>>>> Are you shading the mysql connector? I'm suspecting that the
>>>>>>>> property also get shaded then. You could decompile your jar to be sure.
>>>>>>>> Have you verified that this is working as intended without Flink?
>>>>>>>>
>>>>>>>> On Thu, Nov 19, 2020 at 9:19 PM Flavio Pompermaier <
>>>>>>>> pomperma...@okkam.it> wrote:
>>>>>>>>
>>>>>>>>> the properties arrives to the task manager because I can see them
>>>>>>>>> in the java process (using ps aux)..or donyoubmean some special line 
>>>>>>>>> of
>>>>>>>>> code?
>>>>>>>>>
>>>>>>>>> Il gio 19 nov 2020, 20:53 Arvid Heise <ar...@ververica.com> ha
>>>>>>>>> scritto:
>>>>>>>>>
>>>>>>>>>> Hi Flavio,
>>>>>>>>>>
>>>>>>>>>> you are right, all looks good.
>>>>>>>>>>
>>>>>>>>>> Can you please verify if the properties arrived at the task
>>>>>>>>>> manager in the remote debugger session? For example, you could check 
>>>>>>>>>> the
>>>>>>>>>> JVisualVM Overview tab.
>>>>>>>>>>
>>>>>>>>>> On Thu, Nov 19, 2020 at 8:38 PM Flavio Pompermaier <
>>>>>>>>>> pomperma...@okkam.it> wrote:
>>>>>>>>>>
>>>>>>>>>>> At the moment I use a standalone cluster, isn't using
>>>>>>>>>>> env.java.opts the right way to do it?
>>>>>>>>>>>
>>>>>>>>>>> Il gio 19 nov 2020, 20:11 Arvid Heise <ar...@ververica.com> ha
>>>>>>>>>>> scritto:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Flavio,
>>>>>>>>>>>>
>>>>>>>>>>>> -D afaik passes only the system property to the entry point
>>>>>>>>>>>> (client or jobmanager depending on setup), while you probably want 
>>>>>>>>>>>> to have
>>>>>>>>>>>> it on the task managers.
>>>>>>>>>>>>
>>>>>>>>>>>> The specific options to pass it to the task managers depend on
>>>>>>>>>>>> the way you deploy. -yD for yarn for example. For docker or k8s, 
>>>>>>>>>>>> you would
>>>>>>>>>>>> use env.
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Nov 18, 2020 at 10:20 PM Flavio Pompermaier <
>>>>>>>>>>>> pomperma...@okkam.it> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi to all,
>>>>>>>>>>>>> while trying to solve a leak with dynamic class loading I
>>>>>>>>>>>>> found out
>>>>>>>>>>>>> that mysql connector creates an
>>>>>>>>>>>>> AbandonedConnectionCleanupThread that
>>>>>>>>>>>>> is retained in the ChildFirstClassLoader..from version 8.0.22
>>>>>>>>>>>>> there's
>>>>>>>>>>>>> the possibility to inhibit this thread passing the system
>>>>>>>>>>>>> property
>>>>>>>>>>>>> com.mysql.disableAbandonedConnectionCleanup=true [1] (I put
>>>>>>>>>>>>> the mysql
>>>>>>>>>>>>> jar in the lib folder).
>>>>>>>>>>>>>
>>>>>>>>>>>>> I tried to set in the flink-conf.yml
>>>>>>>>>>>>> env.java.opts:
>>>>>>>>>>>>> "-Dcom.mysql.disableAbandonedConnectionCleanup=true"
>>>>>>>>>>>>>
>>>>>>>>>>>>> but the property does not produce the desired effect in the
>>>>>>>>>>>>> static
>>>>>>>>>>>>> section of such a thread [2] (I verified that attaching the
>>>>>>>>>>>>> remote
>>>>>>>>>>>>> debugger to the task manager).
>>>>>>>>>>>>>
>>>>>>>>>>>>> How can I fix this problem?
>>>>>>>>>>>>>
>>>>>>>>>>>>> [1]
>>>>>>>>>>>>> https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-22.html
>>>>>>>>>>>>> [2]
>>>>>>>>>>>>> public class AbandonedConnectionCleanupThread implements
>>>>>>>>>>>>> Runnable {8898 7324 0768
>>>>>>>>>>>>>     private static boolean abandonedConnectionCleanupDisabled =
>>>>>>>>>>>>>
>>>>>>>>>>>>> Boolean.getBoolean(PropertyDefinitions.SYSP_disableAbandonedConnectionCleanup);
>>>>>>>>>>>>>
>>>>>>>>>>>>>     static {
>>>>>>>>>>>>>         if (abandonedConnectionCleanupDisabled) {
>>>>>>>>>>>>>             cleanupThreadExecutorService = null;
>>>>>>>>>>>>>         } else {
>>>>>>>>>>>>>             cleanupThreadExecutorService =
>>>>>>>>>>>>>                Executors.newSingleThreadExecutor(r -> {....}
>>>>>>>>>>>>>        }
>>>>>>>>>>>>>   }
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>>
>>>>>>>>>>>> Arvid Heise | Senior Java Developer
>>>>>>>>>>>>
>>>>>>>>>>>> <https://www.ververica.com/>
>>>>>>>>>>>>
>>>>>>>>>>>> Follow us @VervericaData
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>>
>>>>>>>>>>>> Join Flink Forward <https://flink-forward.org/> - The Apache
>>>>>>>>>>>> Flink Conference
>>>>>>>>>>>>
>>>>>>>>>>>> Stream Processing | Event Driven | Real Time
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>>
>>>>>>>>>>>> Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Ververica GmbH
>>>>>>>>>>>> Registered at Amtsgericht Charlottenburg: HRB 158244 B
>>>>>>>>>>>> Managing Directors: Timothy Alexander Steinert, Yip Park Tung
>>>>>>>>>>>> Jason, Ji (Toni) Cheng
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Arvid Heise | Senior Java Developer
>>>>>>>>>>
>>>>>>>>>> <https://www.ververica.com/>
>>>>>>>>>>
>>>>>>>>>> Follow us @VervericaData
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Join Flink Forward <https://flink-forward.org/> - The Apache
>>>>>>>>>> Flink Conference
>>>>>>>>>>
>>>>>>>>>> Stream Processing | Event Driven | Real Time
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Ververica GmbH
>>>>>>>>>> Registered at Amtsgericht Charlottenburg: HRB 158244 B
>>>>>>>>>> Managing Directors: Timothy Alexander Steinert, Yip Park Tung
>>>>>>>>>> Jason, Ji (Toni) Cheng
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> Arvid Heise | Senior Java Developer
>>>>>>>>
>>>>>>>> <https://www.ververica.com/>
>>>>>>>>
>>>>>>>> Follow us @VervericaData
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> Join Flink Forward <https://flink-forward.org/> - The Apache Flink
>>>>>>>> Conference
>>>>>>>>
>>>>>>>> Stream Processing | Event Driven | Real Time
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany
>>>>>>>>
>>>>>>>> --
>>>>>>>> Ververica GmbH
>>>>>>>> Registered at Amtsgericht Charlottenburg: HRB 158244 B
>>>>>>>> Managing Directors: Timothy Alexander Steinert, Yip Park Tung
>>>>>>>> Jason, Ji (Toni) Cheng
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Arvid Heise | Senior Java Developer
>>>>>>
>>>>>> <https://www.ververica.com/>
>>>>>>
>>>>>> Follow us @VervericaData
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Join Flink Forward <https://flink-forward.org/> - The Apache Flink
>>>>>> Conference
>>>>>>
>>>>>> Stream Processing | Event Driven | Real Time
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany
>>>>>>
>>>>>> --
>>>>>> Ververica GmbH
>>>>>> Registered at Amtsgericht Charlottenburg: HRB 158244 B
>>>>>> Managing Directors: Timothy Alexander Steinert, Yip Park Tung Jason,
>>>>>> Ji (Toni) Cheng
>>>>>>
>>>>>
>>>
>>> --
>>>
>>> Arvid Heise | Senior Java Developer
>>>
>>> <https://www.ververica.com/>
>>>
>>> Follow us @VervericaData
>>>
>>> --
>>>
>>> Join Flink Forward <https://flink-forward.org/> - The Apache Flink
>>> Conference
>>>
>>> Stream Processing | Event Driven | Real Time
>>>
>>> --
>>>
>>> Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany
>>>
>>> --
>>> Ververica GmbH
>>> Registered at Amtsgericht Charlottenburg: HRB 158244 B
>>> Managing Directors: Timothy Alexander Steinert, Yip Park Tung Jason, Ji
>>> (Toni) Cheng
>>>
>>
>
> --
>
> Arvid Heise | Senior Java Developer
>
> <https://www.ververica.com/>
>
> Follow us @VervericaData
>
> --
>
> Join Flink Forward <https://flink-forward.org/> - The Apache Flink
> Conference
>
> Stream Processing | Event Driven | Real Time
>
> --
>
> Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany
>
> --
> Ververica GmbH
> Registered at Amtsgericht Charlottenburg: HRB 158244 B
> Managing Directors: Timothy Alexander Steinert, Yip Park Tung Jason, Ji
> (Toni) Cheng
>

Reply via email to