Hi Hong:

I compared @gyula and yours solutions, here are some of my thoughts:

We can't control whether the user defines some parameters in the code, so I
think User Code is always bigger than other configuration items (usually
code in development has the highest priority)
such as @gyula said, I think it's more reasonable to put User code
first. Then, according to the cluster configuration
(rest.submit.job.override-config = true/false), whether this job parameter
is configured to determine which value should take effect

If we follow your strategy(Rest API / Flink CLI > User Code > Cluster
Config), it means that after we submit the job, the user's hard-coded
configuration will be invalid, which will make the user feel strange: I
have configured this parameter in the code, why does it not take effect?
So I will be more inclined to support @gyula suggestion

(Default) override true:
User code > rest api > cluster conf

Override false :
User code > cluster conf  > rest api

@Hong What do you think ?



Teoh, Hong <lian...@amazon.co.uk.invalid> 于2022年8月27日周六 16:06写道:

> Hi Zheng Yu,
>
> Sorry for the late reply, I was on holiday last week.
>
> Could we propose the following config instead?
>
> rest.submit.job.override-config = true/false
>   - true: REST API will have priority over user code (i.e. Rest API /
> Flink CLI > User Code > Cluster Config)
>   - false (default): user code will have priority over REST API (i.e. User
> Code > Rest API / Flink CLI > Cluster Config)
>
> This way, the default behaviour will be according to the proposed FLIP,
> but we will have an additional toggle to ignore the configuration set in
> user code.
>
>     >    However, there will be a problem in doing this. If the user writes
>     >     this Flink Config in jar by hardcoding, the highest priority
> must be
>     >     the code at this time, so the problem may still exist, and the
> user
>     >     cannot be prevented from this behavior
>
> Hmm, would it be better if we set it such that the
> "rest.submit.job.override-config" cannot be overwritten in user code
> (ignored), just like configuration  "jobmanager.rpc.port"?
>
> What do you think?
>
> Regards,
> Hong
>
>
>
> On 26/08/2022, 12:05, "Zheng Yu Chen" <jam.gz...@gmail.com> wrote:
>
>     CAUTION: This email originated from outside of the organization. Do
> not click links or open attachments unless you can confirm the sender and
> know the content is safe.
>
>
>
>     HI Hong,
>
>     Maybe you forgot. I don’t know if the current FLIP still needs to be
>     modified. If not, we will start with the current plan. If you have
>     relevant ideas in the future, please continue to discuss. If not, we
>     will open voting at a later date.
>
>     Teoh, Hong <lian...@amazon.co.uk.invalid> 于2022年8月22日周一 16:02写道:
>     >
>     > Hi Zheng Yu,
>     >
>     > We would have to take the same "cluster configuration" (cannot be
> set on job submission) vs "job configuration" approach in the User code as
> well. And we can classify jobmanager.rest.api.submit.job.allow-reset-config
> as a cluster configuration. That way, neither the REST API / User code can
> override this configuration, and it can only be set in cluster
> configuration on startup.
>     >
>     > There are other cluster specific configurations that are already
> treated this way (e.g. jobmanager.rpc.address,
> jobmanager.memory.process.size). As part of this work, I wonder if we can
> update the Flink docs on configuration (
> https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/config/)
> to specify which configuration is "cluster" and which is "job".
>     >
>     > Regards,
>     > Hong
>     >
>     >
>     >
>     > On 20/08/2022, 09:16, "Zheng Yu Chen" <jam.gz...@gmail.com> wrote:
>     >
>     >     CAUTION: This email originated from outside of the organization.
> Do not click links or open attachments unless you can confirm the sender
> and know the content is safe.
>     >
>     >
>     >
>     >      @Gyula say that  add a config for this but not expose it on the
> rest
>     >     api is right
>     >     when user start up session cluster,we can config (eg
>     >     jobmanager.rest.api.submit.job.allow-reset-config = true/false)
> to
>     >     controller this behavior
>     >
>     >     Now we have an existing cluster, the admin configures
> checkpointing
>     >     interval by this session cluster
>     >
>     >     jobmanager.rest.api.submit.job.allow-reset-config = true/false
>     >
>     >     - true : allow user reset new value config
>     >     - false(default) : not allow user set new config from ,throw exp
> to
>     >     tell user what properties is admin was set it
>     >
>     >     However, there will be a problem in doing this. If the user
> writes
>     >     this Flink Config in jar by hardcoding, the highest priority
> must be
>     >     the code at this time, so the problem may still exist, and the
> user
>     >     cannot be prevented from this behavior.
>     >
>     >     what do you think ?
>     >
>     >     @Hong @Gyula @Teoh @Danny
>     >
>     >
>     >     Gyula Fóra <gyula.f...@gmail.com> 于2022年8月18日周四 18:37写道:
>     >     >
>     >     > +1 for the proposal.
>     >     >
>     >     > @Hong : I feel that the inverted override flag should be a
> cluster setting
>     >     > and not something the user can override at will. I fear that
> this might
>     >     > defeat the purpose of the feature itself.
>     >     > So I think we should add a config for this but not expose it
> on the rest api
>     >     >
>     >     > Gyula
>     >     >
>     >     > On Thu, Aug 18, 2022 at 12:33 PM Teoh, Hong
> <lian...@amazon.co.uk.invalid>
>     >     > wrote:
>     >     >
>     >     > > +1 to this FLIP.
>     >     > > This is very useful for teams building a Flink platform to
> run jobs from
>     >     > > an external user
>     >     > >
>     >     > > +1 on Danny's comment on adding a configuration to allow
> inverted order of
>     >     > > overrides.
>     >     > > However, might it be better to include an "override" toggle
> in the REST
>     >     > > API itself? That way we can change the flink configuration
> override
>     >     > > behaviour without restarting the Flink cluster. This would
> make sense if we
>     >     > > are thinking of a Session cluster and deploying multiple
> Flink jobs to the
>     >     > > same cluster.
>     >     > >
>     >     > > Regards,
>     >     > > Hong
>     >     > >
>     >     > >
>     >     > > On 18/08/2022, 10:46, "Danny Cranmer" <
> dannycran...@apache.org> wrote:
>     >     > >
>     >     > >     CAUTION: This email originated from outside of the
> organization. Do
>     >     > > not click links or open attachments unless you can confirm
> the sender and
>     >     > > know the content is safe.
>     >     > >
>     >     > >
>     >     > >
>     >     > >     +1 thanks for driving this FLIP.
>     >     > >
>     >     > >     We actually have an internally forked equivalent of
> this, which is on
>     >     > > our
>     >     > >     list to try to upstream. Your proposal would *almost*
> work "off the
>     >     > > shelf"
>     >     > >     for us. We have an inverted order or priority:
>     >     > >     - Rest API / Flink CLI > User Code > Cluster Config
>     >     > >
>     >     > >     This is because our end users do not submit their jobs
> directly, our
>     >     > >     service does it on their behalf. For our usecase we do
> not want to
>     >     > > allow
>     >     > >     users to override certain values we set, since some are
> managed from
>     >     > > our
>     >     > >     service configuration, example: checkpointing interval.
>     >     > >
>     >     > >     How would you feel about including a cluster
> configuration to invert
>     >     > > the
>     >     > >     order? This could be decoupled to a follow-up FLIP.
>     >     > >
>     >     > >     Thanks,
>     >     > >     Danny Cranmer
>     >     > >
>     >     > >
>     >     > >     On Tue, Aug 16, 2022 at 7:21 AM Zheng Yu Chen <
> jam.gz...@gmail.com>
>     >     > > wrote:
>     >     > >
>     >     > >     > This is a good suggestion, we can start this work
> after we finish the
>     >     > >     > discussion and vote
>     >     > >     >
>     >     > >     > --
>     >     > >     > Best
>     >     > >     >
>     >     > >     > ConradJam
>     >     > >     >
>     >     > >     >
>     >     > >     > <zhanghao.c...@outlook.com> 于2022年8月15日周一 21:01写道:
>     >     > >     >
>     >     > >     > > I've created a new ticket [FLINK-28973] Extending
>     >     > > /jars/:jarid/plan API
>     >     > >     > to
>     >     > >     > > support setting Flink configs - ASF JIRA (apache.org
> )<
>     >     > >     > > https://issues.apache.org/jira/browse/FLINK-28973>.
> for the job
>     >     > > plan
>     >     > >     > API.
>     >     > >     > > Maybe we can create a new umbrella ticket for
> FLIP-256 and put
>     >     > >     > FLINK-27060
>     >     > >     > > & FLINK-28973 as subtasks. WDYT?
>     >     > >     > >
>     >     > >     > > Best,
>     >     > >     > > Zhanghao Chen
>     >     > >     > > ________________________________
>     >     > >     > > From: zhengyu chen <jam.gz...@gmail.com>
>     >     > >     > > Sent: Monday, August 15, 2022 18:06
>     >     > >     > > To: dev@flink.apache.org <dev@flink.apache.org>
>     >     > >     > > Subject: [DISCUSS] FLIP-256 Support Job Dynamic
> Parameter With
>     >     > > Flink Rest
>     >     > >     > > Api
>     >     > >     > >
>     >     > >     > > Hi all,
>     >     > >     > >
>     >     > >     > >
>     >     > >     > > We would like to start a discussion thread on
> FLIP-256 Support Job
>     >     > >     > Dynamic
>     >     > >     > > Parameter With Flink Rest Api
>     >     > >     > > <
>     >     > >     > >
>     >     > >     >
>     >     > >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-256+Support+Job+Dynamic+Parameter+With+Flink+Rest+Api
>     >     > >     > > >
>     >     > >     > > [1]
>     >     > >     > >
>     >     > >     > > After the user submits the jar package, running a
> job through
>     >     > > restapi
>     >     > >     > > (/jars/:jarid/run) [2] can only pass in
> (allowNonRestoredState,
>     >     > >     > > savepointPath, programArg, entry-class, parallelism)
> parameters,
>     >     > > which is
>     >     > >     > > obvious with the diversification of job parameters
> (eg Checkpoint
>     >     > >     > address)
>     >     > >     > >
>     >     > >     > > This solves the problem that the user can pass in
> other parameters
>     >     > > when
>     >     > >     > > submitting a job, avoiding the user to define these
> job parameters
>     >     > > in the
>     >     > >     > > code, resulting in the need to repackage the job for
> each
>     >     > > modification
>     >     > >     > >
>     >     > >     > > There was some interest from users [3] from a meetup
> and the
>     >     > > mailing
>     >     > >     > list.
>     >     > >     > > Looking forward to comments and feedback, thanks!
>     >     > >     > >
>     >     > >     > >
>     >     > >     > > [1]
>     >     > >     > >
>     >     > >     > >
>     >     > >     >
>     >     > >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-256+Support+Job+Dynamic+Parameter+With+Flink+Rest+Api
>     >     > >     > >
>     >     > >     > >
>     >     > >     > > [2]
>     >     > >     > >
>     >     > >     > >
>     >     > >     >
>     >     > >
> https://nightlies.apache.org/flink/flink-docs-master/docs/ops/rest_api/#jars-jarid-run
>     >     > >     > >
>     >     > >     > > [3]
> https://issues.apache.org/jira/browse/FLINK-27060
>     >     > >     > >
>     >     > >     > >
>     >     > >     > >
>     >     > >     > >
>     >     > >     > > --
>     >     > >     > > Best
>     >     > >     > >
>     >     > >     > > ConradJam
>     >     > >     > >
>     >     > >     >
>     >     > >
>     >     > >
>     >
>
>     --
>     Best
>
>     ConradJam
>
>

-- 
Best

ConradJam

Reply via email to