Hi Weihua,

Thanks for your reply!

Even when I use jarURI: "local:///path/to/job.jar" I can see that the
classes loaded by the taskmanager are from something like:

file:/tmp/tm_flink-app-wdqs-taskmanager-1-10/blobStorage/job_94ec61137dc8814f4558116848dd29cc/blob_p-0037843784c2e3ee289c9cc3ec644bc0df2c1084-39e459efea8e0348e5a3c635e1c947c2

when logging:
aRandomJobObject.getClass().getProtectionDomain().getCodeSource().getLocation()
This file does seem present on the object storage under the
flink_ha_storage/flink-app-wdqs/blob/job_94ec61137dc8814f4558116848dd29cc/
si it's uploaded at some point.

I can confirm that I see things like in taskmanager logs:
Loading configuration property: pipeline.jars,
local:///opt/flink/streaming-updater-producer.jar
[...]
Loading dynamic configuration property: pipeline.jars,
file:/opt/flink/streaming-updater-producer.jar
So I'm not sure what makes flink willing to use the H/A blob storage rather
than the path provided in the image.

Regarding jarURI being optional I found
https://github.com/apache/flink-kubernetes-operator/pull/370 but I'm unsure
if this is going to help my case.

Thanks!

On Thu, Apr 6, 2023 at 7:38 AM Weihua Hu <huweihua....@gmail.com> wrote:

> Hi, David
>
> The jarURI is required[1], otherwise Flink doesn't know which jar should
> be used.
>
> If you are using application mode, you can set jarURI to
> "local:///opt/flink/usrlib/your-job.jar", and the jar will not upload to
> H/A storage.
>
> Best,
> Weihua
>
>
> On Wed, Apr 5, 2023 at 5:51 PM David Causse <dcau...@wikimedia.org> wrote:
>
>> Hi,
>>
>> I'm trying to deploy a job (flink 1.16) with the flink-operator, the job
>> jar is part of the image and placed under /opt/flink/usrlib.
>> I thought that by placing the job jar there I could avoid setting the
>> jarURI in the JobSpec but I'm getting a NPE (pasted at the end of this
>> email) suggesting that this param is actually mandatory.
>> Ultimately what I would like is to avoid pushing the job jar to the flink
>> H/A storage since it's part of the image.
>> I'm probably missing something regarding the use cases where jarURI can
>> be omitted.
>>
>> Thanks!
>>
>> David.
>>
>> org.apache.flink.kubernetes.operator.exception.ReconciliationException:
>> java.lang.NullPointerException
>>         at
>> org.apache.flink.kubernetes.operator.controller.FlinkDeploymentController.reconcile(FlinkDeploymentController.java:142)
>>         at
>> org.apache.flink.kubernetes.operator.controller.FlinkDeploymentController.reconcile(FlinkDeploymentController.java:56)
>>         at
>> io.javaoperatorsdk.operator.processing.Controller$1.execute(Controller.java:145)
>>         at
>> io.javaoperatorsdk.operator.processing.Controller$1.execute(Controller.java:103)
>>         at
>> org.apache.flink.kubernetes.operator.metrics.OperatorJosdkMetrics.timeControllerExecution(OperatorJosdkMetrics.java:80)
>>         at
>> io.javaoperatorsdk.operator.processing.Controller.reconcile(Controller.java:102)
>>         at
>> io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.reconcileExecution(ReconciliationDispatcher.java:139)
>>         at
>> io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleReconcile(ReconciliationDispatcher.java:119)
>>         at
>> io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleDispatch(ReconciliationDispatcher.java:89)
>>         at
>> io.javaoperatorsdk.operator.processing.event.ReconciliationDispatcher.handleExecution(ReconciliationDispatcher.java:62)
>>         at
>> io.javaoperatorsdk.operator.processing.event.EventProcessor$ReconcilerExecutor.run(EventProcessor.java:406)
>>         at
>> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>         at
>> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>         at java.base/java.lang.Thread.run(Thread.java:829)
>> Caused by: java.lang.NullPointerException
>>         at
>> org.apache.flink.kubernetes.utils.KubernetesUtils.checkJarFileForApplicationMode(KubernetesUtils.java:403)
>>         at
>> org.apache.flink.kubernetes.KubernetesClusterDescriptor.deployApplicationCluster(KubernetesClusterDescriptor.java:207)
>>         at
>> org.apache.flink.client.deployment.application.cli.ApplicationClusterDeployer.run(ApplicationClusterDeployer.java:67)
>>         at
>> org.apache.flink.kubernetes.operator.service.NativeFlinkService.deployApplicationCluster(NativeFlinkService.java:66)
>>         at
>> org.apache.flink.kubernetes.operator.service.AbstractFlinkService.submitApplicationCluster(AbstractFlinkService.java:184)
>>         at
>> org.apache.flink.kubernetes.operator.reconciler.deployment.ApplicationReconciler.deploy(ApplicationReconciler.java:182)
>>         at
>> org.apache.flink.kubernetes.operator.reconciler.deployment.ApplicationReconciler.deploy(ApplicationReconciler.java:59)
>>         at
>> org.apache.flink.kubernetes.operator.reconciler.deployment.AbstractFlinkResourceReconciler.reconcile(AbstractFlinkResourceReconciler.java:115)
>>         at
>> org.apache.flink.kubernetes.operator.controller.FlinkDeploymentController.reconcile(FlinkDeploymentController.java:130)
>>         ... 13 more
>>
>

Reply via email to