Hi Tony,
I think your reasoning is correct that this is because of the
fact that rest server runs in the same process as
standalonesession.
It's hard to say if it is an expected behavior or not, but there
is really not much we can do about it. User code can actually call
System.exit from any
place in the code, which will result in the process executing
this code to terminate. In general I would say calling System.exit
is rather discouraged.
Best,
Dawid
On 05/11/2018 06:38, Tony Wei wrote:
Hi,
I used a scala library called scallop[1] to parse
my job’s arguments. When the argument didn’t
exist in the config setting, the default behavior
of scallop would call sys.exit(1).
It is not a problem when I’m using flink
cli to submit job. However, when I used rest api to
submit
job, it seems that sys.exit(1) will
leads to standalonesession daemon closed. Maybe the
reason is
that rest server is also in the same
process as standalonesession daemon. Am I correct?
If this is the root cause, is this an expected
behavior and users should be aware of not using
sys.exit(1) in their jobs?
I tested this on 1.6.0 standalone
session cluster with flip-6 mode. And here are my
testing job
and logs before and after the
submission.
package
com.appier.rt.rt_match
import
org.apache.flink.api.scala.createTypeInformation
import
org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
import org.rogach.scallop.{ScallopConf,
ScallopOption}
object TestMain {
def main(args: Array[String]): Unit = {
object Args extends ScallopConf(args) {
val mode: ScallopOption[String] =
opt[String](default = Some("development"))
verify
}
val env =
StreamExecutionEnvironment.getExecutionEnvironment
env.fromElements(Args.mode()).map(a => a)
env.execute()
}
}
Submit by flink-cli
$ ./bin/flink run
-c com.appier.rt.rt_match.TestMain -p 2 -d
rt-match-assembly-4.5.1-SNAPSHOT.jar --mo xyz
Starting execution of program
[scallop] Error: Unknown option 'mo'
Submit by rest-api
2018-11-05
13:27:58,800 TRACE
org.apache.flink.runtime.webmonitor.handlers.JarListHandler
- Received request /jars/.
2018-11-05 13:27:59,679 TRACE
org.apache.flink.runtime.rest.FileUploadHandler
- Received request. URL:/jobs/overview
Method:GET
2018-11-05 13:27:59,680 TRACE
org.apache.flink.runtime.rest.handler.job.JobsOverviewHandler
- Received request /jobs/overview.
2018-11-05 13:28:01,752 TRACE
org.apache.flink.runtime.rest.FileUploadHandler
- Received request. URL:/jars/ Method:GET
2018-11-05 13:28:01,753 TRACE
org.apache.flink.runtime.webmonitor.handlers.JarListHandler
- Received request /jars/.
2018-11-05 13:28:02,682 TRACE
org.apache.flink.runtime.rest.FileUploadHandler
- Received request. URL:/jobs/overview
Method:GET
2018-11-05 13:28:02,683 TRACE
org.apache.flink.runtime.rest.handler.job.JobsOverviewHandler
- Received request /jobs/overview.
2018-11-05 13:28:03,899 TRACE
org.apache.flink.runtime.rest.FileUploadHandler
- Received request.
URL:/jars/7413f82a-d650-4729-873e-a94150ffe9d0_rt-match-assembly-4.5.1-SNAPSHOT.jar/run?entry
class=com.appier.rt.rt_match.TestMain¶llelism=2&program-args=--mo+xyz
Method:POST
2018-11-05 13:28:03,902 TRACE
org.apache.flink.runtime.webmonitor.handlers.JarRunHandler
- Received request
/jars/7413f82a-d650-4729-873e-a94150ffe9d0_rt-match-assembly-4.5.1-SNAPSHOT.jar/run?entry
class=com.appier.rt.rt_match.TestMain¶llelism=2&program-args=--mo+xyz.
2018-11-05 13:28:04,751 TRACE
org.apache.flink.runtime.rest.FileUploadHandler
- Received request. URL:/jars/ Method:GET
2018-11-05 13:28:04,752 TRACE
org.apache.flink.runtime.webmonitor.handlers.JarListHandler
- Received request /jars/.
2018-11-05 13:28:04,760 INFO
org.apache.flink.runtime.blob.TransientBlobCache
- Shutting down BLOB cache
2018-11-05 13:28:04,761 INFO
org.apache.flink.runtime.blob.BlobServer
- Stopped BLOB server at 0.0.0.0:42075
Best,
Tony Wei.