Login  Register

Rest API cancel-with-savepoint: 404s when passing path as target-directory

classic Classic list List threaded Threaded
6 messages Options Options
Embed post
Permalink
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Rest API cancel-with-savepoint: 404s when passing path as target-directory

Emily McMahon
4 posts
I've tried every combination I can think of to pass an s3 path as the target directory (url encode, include trailing slash, etc)

I can successfully pass a local path as the target directory (ie /jobs/$jobID/cancel-with-savepoint/target-directory/tmp) so I don't think there's a problem with the jobId or rest of the url. I also verified I can create the savepoint on s3 from the command line so it's not a permission issue.

Here's the same question on stack overflow (with the exception that they are getting a 502 whereas I'm getting a 404)

using Flink 1.3.1

Anyone have a working example?

Thanks,
Emily
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: Rest API cancel-with-savepoint: 404s when passing path as target-directory

Fabian Hueske-2
1749 posts
Hi Emily,

thanks for reaching out.
I'm not familiar with the details of the Rest API but Ufuk (in CC) might be able to help you.

Best, Fabian

2017-09-19 10:23 GMT+02:00 Emily McMahon <[hidden email]>:
I've tried every combination I can think of to pass an s3 path as the target directory (url encode, include trailing slash, etc)

I can successfully pass a local path as the target directory (ie /jobs/$jobID/cancel-with-savepoint/target-directory/tmp) so I don't think there's a problem with the jobId or rest of the url. I also verified I can create the savepoint on s3 from the command line so it's not a permission issue.

Here's the same question on stack overflow (with the exception that they are getting a 502 whereas I'm getting a 404)

using Flink 1.3.1

Anyone have a working example?

Thanks,
Emily

Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: Rest API cancel-with-savepoint: 404s when passing path as target-directory

Eron Wright
48 posts
Good news, it can be done if you carefully encode the target directory with percent-encoding, as per:
https://tools.ietf.org/html/rfc3986#section-2.1

For example, given the directory `s3:///savepoint-bucket/my-awesome-job`, which encodes to `s3%3A%2F%2F%2Fsavepoint-bucket%2Fmy-awesome-job`, I was able to submit the following URL:

And see the following in the log:
2017-09-19 14:27:45,939 INFO  org.apache.flink.runtime.jobmanager.JobManager                - Trying to cancel job 5c360ded6e4b7d8db103e71d68b7c83d with savepoint to s3:///savepoint-bucket/my-awesome-job

-Eron

On Tue, Sep 19, 2017 at 1:54 PM, Fabian Hueske <[hidden email]> wrote:
Hi Emily,

thanks for reaching out.
I'm not familiar with the details of the Rest API but Ufuk (in CC) might be able to help you.

Best, Fabian

2017-09-19 10:23 GMT+02:00 Emily McMahon <[hidden email]>:
I've tried every combination I can think of to pass an s3 path as the target directory (url encode, include trailing slash, etc)

I can successfully pass a local path as the target directory (ie /jobs/$jobID/cancel-with-savepoint/target-directory/tmp) so I don't think there's a problem with the jobId or rest of the url. I also verified I can create the savepoint on s3 from the command line so it's not a permission issue.

Here's the same question on stack overflow (with the exception that they are getting a 502 whereas I'm getting a 404)

using Flink 1.3.1

Anyone have a working example?

Thanks,
Emily


Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: Rest API cancel-with-savepoint: 404s when passing path as target-directory

Emily McMahon
4 posts
Thanks Eron & Fabian.

The issue was hitting a yarn proxy url vs the node itself. For example this worked 
http://{ip}:37716/jobs/1a0fd176ec8aabb9b8464fa481f755f0/cancel-with-savepoint/target-directory/s3%3A%2F%2F%2Fremit-flink 

But this did not
http://{ip}:20888/proxy/application_1504649135200_0001/jobs/1a0fd176ec8aabb9b8464fa481f755f0/cancel-with-savepoint/target-directory/s3%3A%2F%2F%2Fremit-flink

It's a bit confusing because the cancel api works with either and the proxy url sometimes works as this was successful http://{ip}:20888/proxy/application_1504649135200_0001/jobs/cca2dd609c716a7b0a195700777e5b1f/cancel-with-savepoint/target-directory/tmp/

Cheers,
Emily


On Tue, Sep 19, 2017 at 2:37 PM, Eron Wright <[hidden email]> wrote:
Good news, it can be done if you carefully encode the target directory with percent-encoding, as per:
https://tools.ietf.org/html/rfc3986#section-2.1

For example, given the directory `s3:///savepoint-bucket/my-awesome-job`, which encodes to `s3%3A%2F%2F%2Fsavepoint-bucket%2Fmy-awesome-job`, I was able to submit the following URL:

And see the following in the log:
2017-09-19 14:27:45,939 INFO  org.apache.flink.runtime.jobmanager.JobManager                - Trying to cancel job 5c360ded6e4b7d8db103e71d68b7c83d with savepoint to s3:///savepoint-bucket/my-awesome-job

-Eron

On Tue, Sep 19, 2017 at 1:54 PM, Fabian Hueske <[hidden email]> wrote:
Hi Emily,

thanks for reaching out.
I'm not familiar with the details of the Rest API but Ufuk (in CC) might be able to help you.

Best, Fabian

2017-09-19 10:23 GMT+02:00 Emily McMahon <[hidden email]>:
I've tried every combination I can think of to pass an s3 path as the target directory (url encode, include trailing slash, etc)

I can successfully pass a local path as the target directory (ie /jobs/$jobID/cancel-with-savepoint/target-directory/tmp) so I don't think there's a problem with the jobId or rest of the url. I also verified I can create the savepoint on s3 from the command line so it's not a permission issue.

Here's the same question on stack overflow (with the exception that they are getting a 502 whereas I'm getting a 404)

using Flink 1.3.1

Anyone have a working example?

Thanks,
Emily



Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: Rest API cancel-with-savepoint: 404s when passing path as target-directory

Nico Kruber
165 posts
Hi Emily,
I'm not familiar with the details of the REST API either but if this is a
problem with the proxy, maybe it is already interpreting the encoded URL and
passes it on un-encoded - have you tried encoding the path again? That is,
encoding the percent-signs:

http://
{ip}:20888/proxy/application_1504649135200_0001/jobs/
1a0fd176ec8aabb9b8464fa481f755f0/cancel-with-savepoint/target-directory/
s3%253A%252F%252F%252Fremit-flink


Nico

On Wednesday, 20 September 2017 00:52:05 CEST Emily McMahon wrote:

> Thanks Eron & Fabian.
>
> The issue was hitting a yarn proxy url vs the node itself. For example this
> worked
> http://
> {ip}:37716/jobs/1a0fd176ec8aabb9b8464fa481f755f0/cancel-with-savepoint/targe
> t-directory/s3%3A%2F%2F%2Fremit-flink
>
> But this did not
> http://
> {ip}:20888/proxy/application_1504649135200_0001/jobs/1a0fd176ec8aabb9b8464fa
> 481f755f0/cancel-with-savepoint/target-directory/s3%3A%2F%2F%2Fremit-flink
>
> It's a bit confusing because the cancel api works with either and the proxy
> url sometimes works as this was successful http://
> {ip}:20888/proxy/application_1504649135200_0001/jobs/cca2dd609c716a7b0a19570
> 0777e5b1f/cancel-with-savepoint/target-directory/tmp/
>
> Cheers,
> Emily
>
> On Tue, Sep 19, 2017 at 2:37 PM, Eron Wright <[hidden email]> wrote:
> > Good news, it can be done if you carefully encode the target directory
> > with percent-encoding, as per:
> > https://tools.ietf.org/html/rfc3986#section-2.1
> >
> > For example, given the directory `s3:///savepoint-bucket/my-awesome-job`,
> > which encodes to `s3%3A%2F%2F%2Fsavepoint-bucket%2Fmy-awesome-job`, I was
> > able to submit the following URL:
> > http://localhost:8081/jobs/5c360ded6e4b7d8db103e71d68b7c8
> > 3d/cancel-with-savepoint/target-directory/s3%3A%2F%2F%
> > 2Fsavepoint-bucket%2Fmy-awesome-job
> >
> > And see the following in the log:
> > 2017-09-19 14:27:45,939 INFO
> > org.apache.flink.runtime.jobmanager.JobManager>
> >                - Trying to cancel job 5c360ded6e4b7d8db103e71d68b7c83d
> >
> > with savepoint to s3:///savepoint-bucket/my-awesome-job
> >
> > -Eron
> >
> > On Tue, Sep 19, 2017 at 1:54 PM, Fabian Hueske <[hidden email]> wrote:
> >> Hi Emily,
> >>
> >> thanks for reaching out.
> >> I'm not familiar with the details of the Rest API but Ufuk (in CC) might
> >> be able to help you.
> >>
> >> Best, Fabian
> >>
> >> 2017-09-19 10:23 GMT+02:00 Emily McMahon <[hidden email]>:
> >>> I've tried every combination I can think of to pass an s3 path as the
> >>> target directory (url encode, include trailing slash, etc)
> >>>
> >>> I can successfully pass a local path as the target directory (ie
> >>> /jobs/$jobID/cancel-with-savepoint/target-directory/tmp) so I don't
> >>> think there's a problem with the jobId or rest of the url. I also
> >>> verified
> >>> I can create the savepoint on s3 from the command line so it's not a
> >>> permission issue.
> >>>
> >>> Here's the same question on stack overflow
> >>> <https://stackoverflow.com/questions/45844298/send-flink-job-manager-a-f
> >>> ully-qualified-path-to-a-savepoint-directory-using-the> (with the
> >>> exception that they are getting a 502 whereas I'm getting a 404)
> >>>
> >>> using Flink 1.3.1
> >>>
> >>> Anyone have a working example?
> >>>
> >>> Thanks,
> >>> Emily


signature.asc (201 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

Re: Rest API cancel-with-savepoint: 404s when passing path as target-directory

Eron Wright
48 posts
It is not surprising to see fidelity issues with the YARN proxy.  I suggest opening a ticket on Flink side to update the cancel-with-savepoint API to take the target directory as a query string parameter (of course, backwards compatibility should be maintained).

On Wed, Sep 20, 2017 at 1:55 AM, Nico Kruber <[hidden email]> wrote:
Hi Emily,
I'm not familiar with the details of the REST API either but if this is a
problem with the proxy, maybe it is already interpreting the encoded URL and
passes it on un-encoded - have you tried encoding the path again? That is,
encoding the percent-signs:

http://
{ip}:20888/proxy/application_1504649135200_0001/jobs/
1a0fd176ec8aabb9b8464fa481f755f0/cancel-with-savepoint/target-directory/
s3%253A%252F%252F%252Fremit-flink


Nico

On Wednesday, 20 September 2017 00:52:05 CEST Emily McMahon wrote:
> Thanks Eron & Fabian.
>
> The issue was hitting a yarn proxy url vs the node itself. For example this
> worked
> http://
> {ip}:37716/jobs/1a0fd176ec8aabb9b8464fa481f755f0/cancel-with-savepoint/targe
> t-directory/s3%3A%2F%2F%2Fremit-flink
>
> But this did not
> http://
> {ip}:20888/proxy/application_1504649135200_0001/jobs/1a0fd176ec8aabb9b8464fa
> 481f755f0/cancel-with-savepoint/target-directory/s3%3A%2F%2F%2Fremit-flink
>
> It's a bit confusing because the cancel api works with either and the proxy
> url sometimes works as this was successful http://
> {ip}:20888/proxy/application_1504649135200_0001/jobs/cca2dd609c716a7b0a19570
> 0777e5b1f/cancel-with-savepoint/target-directory/tmp/
>
> Cheers,
> Emily
>
> On Tue, Sep 19, 2017 at 2:37 PM, Eron Wright <[hidden email]> wrote:
> > Good news, it can be done if you carefully encode the target directory
> > with percent-encoding, as per:
> > https://tools.ietf.org/html/rfc3986#section-2.1
> >
> > For example, given the directory `s3:///savepoint-bucket/my-awesome-job`,
> > which encodes to `s3%3A%2F%2F%2Fsavepoint-bucket%2Fmy-awesome-job`, I was
> > able to submit the following URL:
> > http://localhost:8081/jobs/5c360ded6e4b7d8db103e71d68b7c8
> > 3d/cancel-with-savepoint/target-directory/s3%3A%2F%2F%
> > 2Fsavepoint-bucket%2Fmy-awesome-job
> >
> > And see the following in the log:
> > 2017-09-19 14:27:45,939 INFO
> > org.apache.flink.runtime.jobmanager.JobManager>
> >                - Trying to cancel job 5c360ded6e4b7d8db103e71d68b7c83d
> >
> > with savepoint to s3:///savepoint-bucket/my-awesome-job
> >
> > -Eron
> >
> > On Tue, Sep 19, 2017 at 1:54 PM, Fabian Hueske <[hidden email]> wrote:
> >> Hi Emily,
> >>
> >> thanks for reaching out.
> >> I'm not familiar with the details of the Rest API but Ufuk (in CC) might
> >> be able to help you.
> >>
> >> Best, Fabian
> >>
> >> 2017-09-19 10:23 GMT+02:00 Emily McMahon <[hidden email]>:
> >>> I've tried every combination I can think of to pass an s3 path as the
> >>> target directory (url encode, include trailing slash, etc)
> >>>
> >>> I can successfully pass a local path as the target directory (ie
> >>> /jobs/$jobID/cancel-with-savepoint/target-directory/tmp) so I don't
> >>> think there's a problem with the jobId or rest of the url. I also
> >>> verified
> >>> I can create the savepoint on s3 from the command line so it's not a
> >>> permission issue.
> >>>
> >>> Here's the same question on stack overflow
> >>> <https://stackoverflow.com/questions/45844298/send-flink-job-manager-a-f
> >>> ully-qualified-path-to-a-savepoint-directory-using-the> (with the
> >>> exception that they are getting a 502 whereas I'm getting a 404)
> >>>
> >>> using Flink 1.3.1
> >>>
> >>> Anyone have a working example?
> >>>
> >>> Thanks,
> >>> Emily