Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
doujutun3207
flink
提交
3d5ae611
F
flink
项目概览
doujutun3207
/
flink
与 Fork 源项目一致
从无法访问的项目Fork
通知
24
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
flink
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3d5ae611
编写于
3月 17, 2014
作者:
S
StephanEwen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix client and webclient for interactive mode of new java api.
上级
bdafcd8a
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
40 addition
and
157 deletion
+40
-157
stratosphere-clients/src/main/java/eu/stratosphere/client/program/Client.java
.../src/main/java/eu/stratosphere/client/program/Client.java
+17
-94
stratosphere-clients/src/main/java/eu/stratosphere/client/program/ContextEnvironment.java
...va/eu/stratosphere/client/program/ContextEnvironment.java
+1
-6
stratosphere-clients/src/main/java/eu/stratosphere/client/program/JobWithJars.java
...main/java/eu/stratosphere/client/program/JobWithJars.java
+1
-1
stratosphere-clients/src/main/java/eu/stratosphere/client/program/PackagedProgram.java
.../java/eu/stratosphere/client/program/PackagedProgram.java
+1
-6
stratosphere-clients/src/main/java/eu/stratosphere/client/web/JobSubmissionServlet.java
...java/eu/stratosphere/client/web/JobSubmissionServlet.java
+15
-42
stratosphere-clients/src/main/java/eu/stratosphere/client/web/PactJobJSONServlet.java
...n/java/eu/stratosphere/client/web/PactJobJSONServlet.java
+3
-3
stratosphere-clients/src/test/java/eu/stratosphere/client/program/ClientTest.java
.../test/java/eu/stratosphere/client/program/ClientTest.java
+2
-2
stratosphere-java/src/main/java/eu/stratosphere/api/java/ExecutionEnvironment.java
...n/java/eu/stratosphere/api/java/ExecutionEnvironment.java
+0
-3
未找到文件。
stratosphere-clients/src/main/java/eu/stratosphere/client/program/Client.java
浏览文件 @
3d5ae611
...
@@ -145,34 +145,21 @@ public class Client {
...
@@ -145,34 +145,21 @@ public class Client {
return
getOptimizedPlan
(
prog
.
getPlan
());
return
getOptimizedPlan
(
prog
.
getPlan
());
}
}
/**
public
JobGraph
getJobGraph
(
PackagedProgram
prog
,
OptimizedPlan
optPlan
)
throws
ProgramInvocationException
{
* Creates the job-graph, which is ready for submission, from a compiled and optimized program.
return
getJobGraph
(
optPlan
,
prog
.
getAllLibraries
());
* The original program is required to access the original jar file.
}
*
* @param prog The original program.
private
JobGraph
getJobGraph
(
OptimizedPlan
optPlan
,
List
<
File
>
jarFiles
)
{
* @param optPlan The optimized plan.
* @return The nephele job graph, generated from the optimized plan.
*/
public
JobGraph
getJobGraph
(
JobWithJars
prog
,
OptimizedPlan
optPlan
)
throws
ProgramInvocationException
{
NepheleJobGraphGenerator
gen
=
new
NepheleJobGraphGenerator
();
NepheleJobGraphGenerator
gen
=
new
NepheleJobGraphGenerator
();
JobGraph
job
=
gen
.
compileJobGraph
(
optPlan
);
JobGraph
job
=
gen
.
compileJobGraph
(
optPlan
);
for
(
File
jar
:
jarFiles
)
{
try
{
job
.
addJar
(
new
Path
(
jar
.
getAbsolutePath
()));
List
<
File
>
jarFiles
=
prog
.
getJarFiles
();
for
(
File
jar
:
jarFiles
)
{
job
.
addJar
(
new
Path
(
jar
.
getAbsolutePath
()));
}
}
catch
(
IOException
ioex
)
{
throw
new
ProgramInvocationException
(
"Could not extract the nested libraries: "
+
ioex
.
getMessage
(),
ioex
);
}
}
return
job
;
return
job
;
}
}
public
JobExecutionResult
run
(
PackagedProgram
prog
,
boolean
wait
)
throws
ProgramInvocationException
{
public
JobExecutionResult
run
(
PackagedProgram
prog
,
boolean
wait
)
throws
ProgramInvocationException
{
if
(
prog
.
isUsingProgramEntryPoint
())
{
if
(
prog
.
isUsingProgramEntryPoint
())
{
return
run
(
prog
.
getPlanWithJars
(),
wait
);
return
run
(
prog
.
getPlanWithJars
(),
wait
);
...
@@ -188,20 +175,9 @@ public class Client {
...
@@ -188,20 +175,9 @@ public class Client {
}
}
}
}
/**
public
JobExecutionResult
run
(
PackagedProgram
prog
,
OptimizedPlan
optimizedPlan
,
boolean
wait
)
throws
ProgramInvocationException
{
* Runs a program on the nephele system whose job-manager is configured in this client's configuration.
return
run
(
optimizedPlan
,
prog
.
getAllLibraries
(),
wait
);
* This method involves all steps, from compiling, job-graph generation to submission.
*
* @param prog The program to be executed.
* @throws CompilerException Thrown, if the compiler encounters an illegal situation.
* @throws ProgramInvocationException Thrown, if the program could not be instantiated from its jar file,
* or if the submission failed. That might be either due to an I/O problem,
* i.e. the job-manager is unreachable, or due to the fact that the execution
* on the nephele system failed.
* @throws JobInstantiationException Thrown, if the plan assembler function causes an exception.
*/
public
JobExecutionResult
run
(
JobWithJars
prog
)
throws
CompilerException
,
ProgramInvocationException
{
return
run
(
prog
,
false
);
}
}
/**
/**
...
@@ -218,64 +194,16 @@ public class Client {
...
@@ -218,64 +194,16 @@ public class Client {
* @throws JobInstantiationException Thrown, if the plan assembler function causes an exception.
* @throws JobInstantiationException Thrown, if the plan assembler function causes an exception.
*/
*/
public
JobExecutionResult
run
(
JobWithJars
prog
,
boolean
wait
)
throws
CompilerException
,
ProgramInvocationException
{
public
JobExecutionResult
run
(
JobWithJars
prog
,
boolean
wait
)
throws
CompilerException
,
ProgramInvocationException
{
return
run
(
prog
,
getOptimizedPlan
(
prog
),
wait
);
return
run
(
getOptimizedPlan
(
prog
),
prog
.
getJarFiles
(),
wait
);
}
/**
* Submits the given program to the nephele job-manager for execution. The first step of the compilation process is skipped and
* the given compiled plan is taken.
*
* @param prog The original program.
* @param compiledPlan The optimized plan.
* @throws ProgramInvocationException Thrown, if the program could not be instantiated from its jar file,
* or if the submission failed. That might be either due to an I/O problem,
* i.e. the job-manager is unreachable, or due to the fact that the execution
* on the nephele system failed.
*/
public
JobExecutionResult
run
(
JobWithJars
prog
,
OptimizedPlan
compiledPlan
)
throws
ProgramInvocationException
{
return
run
(
prog
,
compiledPlan
,
false
);
}
}
/**
* Submits the given program to the nephele job-manager for execution. The first step of the compilation process is skipped and
* the given compiled plan is taken.
*
* @param prog The original program.
* @param compiledPlan The optimized plan.
* @param wait A flag that indicates whether this function call should block until the program execution is done.
* @throws ProgramInvocationException Thrown, if the program could not be instantiated from its jar file,
* or if the submission failed. That might be either due to an I/O problem,
* i.e. the job-manager is unreachable, or due to the fact that the execution
* on the nephele system failed.
*/
public
JobExecutionResult
run
(
JobWithJars
prog
,
OptimizedPlan
compiledPlan
,
boolean
wait
)
throws
ProgramInvocationException
{
JobGraph
job
=
getJobGraph
(
prog
,
compiledPlan
);
return
run
(
prog
,
job
,
wait
);
}
/**
public
JobExecutionResult
run
(
OptimizedPlan
compiledPlan
,
List
<
File
>
libraries
,
boolean
wait
)
throws
ProgramInvocationException
{
* Submits the job-graph to the nephele job-manager for execution.
JobGraph
job
=
getJobGraph
(
compiledPlan
,
libraries
);
*
return
run
(
job
,
wait
);
* @param prog The program to be submitted.
* @throws ProgramInvocationException Thrown, if the submission failed. That might be either due to an I/O problem,
* i.e. the job-manager is unreachable, or due to the fact that the execution
* on the nephele system failed.
*/
public
JobExecutionResult
run
(
JobWithJars
program
,
JobGraph
jobGraph
)
throws
ProgramInvocationException
{
return
run
(
program
,
jobGraph
,
false
);
}
}
/**
* Submits the job-graph to the nephele job-manager for execution.
public
JobExecutionResult
run
(
JobGraph
jobGraph
,
boolean
wait
)
throws
ProgramInvocationException
{
*
* @param prog The program to be submitted.
* @param wait Method will block until the job execution is finished if set to true.
* If set to false, the method will directly return after the job is submitted.
* @throws ProgramInvocationException Thrown, if the submission failed. That might be either due to an I/O problem,
* i.e. the job-manager is unreachable, or due to the fact that the execution
* on the nephele system failed.
*/
public
JobExecutionResult
run
(
JobWithJars
program
,
JobGraph
jobGraph
,
boolean
wait
)
throws
ProgramInvocationException
{
JobClient
client
;
JobClient
client
;
try
{
try
{
client
=
new
JobClient
(
jobGraph
,
configuration
);
client
=
new
JobClient
(
jobGraph
,
configuration
);
...
@@ -344,12 +272,7 @@ public class Client {
...
@@ -344,12 +272,7 @@ public class Client {
}
}
private
void
setAsContext
()
{
private
void
setAsContext
()
{
if
(
isContextEnvironmentSet
())
{
initializeContextEnvironment
(
this
);
throw
new
RuntimeException
(
"The context environment has already been initialized."
);
}
else
{
initializeContextEnvironment
(
this
);
}
}
}
}
}
...
...
stratosphere-clients/src/main/java/eu/stratosphere/client/program/ContextEnvironment.java
浏览文件 @
3d5ae611
...
@@ -63,11 +63,6 @@ public class ContextEnvironment extends ExecutionEnvironment {
...
@@ -63,11 +63,6 @@ public class ContextEnvironment extends ExecutionEnvironment {
}
}
public
void
setAsContext
()
{
public
void
setAsContext
()
{
if
(
isContextEnvironmentSet
())
{
initializeContextEnvironment
(
this
);
throw
new
RuntimeException
(
"The context environment has already been initialized."
);
}
else
{
initializeContextEnvironment
(
this
);
}
}
}
}
}
stratosphere-clients/src/main/java/eu/stratosphere/client/program/JobWithJars.java
浏览文件 @
3d5ae611
...
@@ -68,7 +68,7 @@ public class JobWithJars {
...
@@ -68,7 +68,7 @@ public class JobWithJars {
/**
/**
* Returns list of jar files that need to be submitted with the plan.
* Returns list of jar files that need to be submitted with the plan.
*/
*/
public
List
<
File
>
getJarFiles
()
throws
IOException
{
public
List
<
File
>
getJarFiles
()
{
return
this
.
jarFiles
;
return
this
.
jarFiles
;
}
}
...
...
stratosphere-clients/src/main/java/eu/stratosphere/client/program/PackagedProgram.java
浏览文件 @
3d5ae611
...
@@ -626,12 +626,7 @@ public class PackagedProgram {
...
@@ -626,12 +626,7 @@ public class PackagedProgram {
}
}
private
void
setAsContext
()
{
private
void
setAsContext
()
{
if
(
isContextEnvironmentSet
())
{
initializeContextEnvironment
(
this
);
throw
new
RuntimeException
(
"The context environment has already been initialized."
);
}
else
{
initializeContextEnvironment
(
this
);
}
}
}
}
}
}
}
stratosphere-clients/src/main/java/eu/stratosphere/client/web/JobSubmissionServlet.java
浏览文件 @
3d5ae611
...
@@ -77,7 +77,7 @@ public class JobSubmissionServlet extends HttpServlet {
...
@@ -77,7 +77,7 @@ public class JobSubmissionServlet extends HttpServlet {
private
final
File
planDumpDirectory
;
// the directory to dump the optimizer plans to
private
final
File
planDumpDirectory
;
// the directory to dump the optimizer plans to
private
final
Map
<
Long
,
ProgramJobGraphPair
>
submittedJobs
;
// map from UIDs to the running jobs
private
final
Map
<
Long
,
JobGraph
>
submittedJobs
;
// map from UIDs to the running jobs
private
final
Random
rand
;
// random number generator for UIDs
private
final
Random
rand
;
// random number generator for UIDs
...
@@ -89,7 +89,7 @@ public class JobSubmissionServlet extends HttpServlet {
...
@@ -89,7 +89,7 @@ public class JobSubmissionServlet extends HttpServlet {
this
.
jobStoreDirectory
=
jobDir
;
this
.
jobStoreDirectory
=
jobDir
;
this
.
planDumpDirectory
=
planDir
;
this
.
planDumpDirectory
=
planDir
;
this
.
submittedJobs
=
Collections
.
synchronizedMap
(
new
HashMap
<
Long
,
ProgramJobGraphPair
>());
this
.
submittedJobs
=
Collections
.
synchronizedMap
(
new
HashMap
<
Long
,
JobGraph
>());
this
.
rand
=
new
Random
(
System
.
currentTimeMillis
());
this
.
rand
=
new
Random
(
System
.
currentTimeMillis
());
}
}
...
@@ -144,19 +144,19 @@ public class JobSubmissionServlet extends HttpServlet {
...
@@ -144,19 +144,19 @@ public class JobSubmissionServlet extends HttpServlet {
params
.
remove
(
0
);
params
.
remove
(
0
);
}
}
// create the p
act p
lan
// create the plan
String
[]
options
=
params
.
isEmpty
()
?
new
String
[
0
]
:
(
String
[])
params
.
toArray
(
new
String
[
params
.
size
()]);
String
[]
options
=
params
.
isEmpty
()
?
new
String
[
0
]
:
(
String
[])
params
.
toArray
(
new
String
[
params
.
size
()]);
PackagedProgram
p
actProgram
=
null
;
PackagedProgram
p
rogram
;
OptimizedPlan
optPlan
=
null
;
OptimizedPlan
optPlan
;
try
{
try
{
if
(
assemblerClass
==
null
)
{
if
(
assemblerClass
==
null
)
{
p
actP
rogram
=
new
PackagedProgram
(
jarFile
,
options
);
program
=
new
PackagedProgram
(
jarFile
,
options
);
}
else
{
}
else
{
p
actP
rogram
=
new
PackagedProgram
(
jarFile
,
assemblerClass
,
options
);
program
=
new
PackagedProgram
(
jarFile
,
assemblerClass
,
options
);
}
}
optPlan
=
client
.
getOptimizedPlan
(
p
actProgram
.
getPlanWithJars
()
);
optPlan
=
client
.
getOptimizedPlan
(
p
rogram
);
}
}
catch
(
ProgramInvocationException
e
)
{
catch
(
ProgramInvocationException
e
)
{
// collect the stack trace
// collect the stack trace
...
@@ -210,18 +210,17 @@ public class JobSubmissionServlet extends HttpServlet {
...
@@ -210,18 +210,17 @@ public class JobSubmissionServlet extends HttpServlet {
// submit the job only, if it should not be suspended
// submit the job only, if it should not be suspended
if
(!
suspend
)
{
if
(!
suspend
)
{
try
{
try
{
this
.
client
.
run
(
p
actProgram
.
getPlanWithJars
(),
optPlan
);
this
.
client
.
run
(
p
rogram
,
optPlan
,
false
);
}
catch
(
Throwable
t
)
{
}
catch
(
Throwable
t
)
{
LOG
.
error
(
"Error submitting job to the job-manager."
,
t
);
LOG
.
error
(
"Error submitting job to the job-manager."
,
t
);
showErrorPage
(
resp
,
t
.
getMessage
());
showErrorPage
(
resp
,
t
.
getMessage
());
return
;
return
;
}
finally
{
}
finally
{
p
actP
rogram
.
deleteExtractedLibraries
();
program
.
deleteExtractedLibraries
();
}
}
}
else
{
}
else
{
try
{
try
{
this
.
submittedJobs
.
put
(
uid
,
this
.
submittedJobs
.
put
(
uid
,
this
.
client
.
getJobGraph
(
program
,
optPlan
));
new
ProgramJobGraphPair
(
pactProgram
,
this
.
client
.
getJobGraph
(
pactProgram
.
getPlanWithJars
(),
optPlan
)));
}
}
catch
(
ProgramInvocationException
piex
)
{
catch
(
ProgramInvocationException
piex
)
{
LOG
.
error
(
"Error creating JobGraph from optimized plan."
,
piex
);
LOG
.
error
(
"Error creating JobGraph from optimized plan."
,
piex
);
...
@@ -241,7 +240,7 @@ public class JobSubmissionServlet extends HttpServlet {
...
@@ -241,7 +240,7 @@ public class JobSubmissionServlet extends HttpServlet {
// don't show any plan. directly submit the job and redirect to the
// don't show any plan. directly submit the job and redirect to the
// nephele runtime monitor
// nephele runtime monitor
try
{
try
{
client
.
run
(
p
actProgram
.
getPlanWithJars
()
);
client
.
run
(
p
rogram
,
false
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
LOG
.
error
(
"Error submitting job to the job-manager."
,
ex
);
LOG
.
error
(
"Error submitting job to the job-manager."
,
ex
);
// HACK: Is necessary because Message contains whole stack trace
// HACK: Is necessary because Message contains whole stack trace
...
@@ -249,7 +248,7 @@ public class JobSubmissionServlet extends HttpServlet {
...
@@ -249,7 +248,7 @@ public class JobSubmissionServlet extends HttpServlet {
showErrorPage
(
resp
,
errorMessage
);
showErrorPage
(
resp
,
errorMessage
);
return
;
return
;
}
finally
{
}
finally
{
p
actP
rogram
.
deleteExtractedLibraries
();
program
.
deleteExtractedLibraries
();
}
}
resp
.
sendRedirect
(
START_PAGE_URL
);
resp
.
sendRedirect
(
START_PAGE_URL
);
}
}
...
@@ -271,7 +270,7 @@ public class JobSubmissionServlet extends HttpServlet {
...
@@ -271,7 +270,7 @@ public class JobSubmissionServlet extends HttpServlet {
}
}
// get the retained job
// get the retained job
ProgramJobGraphPair
job
=
submittedJobs
.
remove
(
uid
);
JobGraph
job
=
submittedJobs
.
remove
(
uid
);
if
(
job
==
null
)
{
if
(
job
==
null
)
{
resp
.
sendError
(
HttpServletResponse
.
SC_BAD_REQUEST
,
resp
.
sendError
(
HttpServletResponse
.
SC_BAD_REQUEST
,
"No job with the given uid was retained for later submission."
);
"No job with the given uid was retained for later submission."
);
...
@@ -280,7 +279,7 @@ public class JobSubmissionServlet extends HttpServlet {
...
@@ -280,7 +279,7 @@ public class JobSubmissionServlet extends HttpServlet {
// submit the job
// submit the job
try
{
try
{
client
.
run
(
job
.
getProgram
().
getPlanWithJars
(),
job
.
getJobGraph
()
);
client
.
run
(
job
,
false
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
LOG
.
error
(
"Error submitting job to the job-manager."
,
ex
);
LOG
.
error
(
"Error submitting job to the job-manager."
,
ex
);
resp
.
setStatus
(
HttpServletResponse
.
SC_BAD_REQUEST
);
resp
.
setStatus
(
HttpServletResponse
.
SC_BAD_REQUEST
);
...
@@ -289,8 +288,6 @@ public class JobSubmissionServlet extends HttpServlet {
...
@@ -289,8 +288,6 @@ public class JobSubmissionServlet extends HttpServlet {
resp
.
getWriter
().
print
(
errorMessage
);
resp
.
getWriter
().
print
(
errorMessage
);
// resp.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage());
// resp.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage());
return
;
return
;
}
finally
{
job
.
getProgram
().
deleteExtractedLibraries
();
}
}
// redirect to the start page
// redirect to the start page
...
@@ -428,29 +425,5 @@ public class JobSubmissionServlet extends HttpServlet {
...
@@ -428,29 +425,5 @@ public class JobSubmissionServlet extends HttpServlet {
}
}
return
list
;
return
list
;
}
// ============================================================================================
private
static
final
class
ProgramJobGraphPair
{
private
final
PackagedProgram
program
;
private
final
JobGraph
jobGraph
;
public
ProgramJobGraphPair
(
PackagedProgram
program
,
JobGraph
jobGraph
)
{
this
.
program
=
program
;
this
.
jobGraph
=
jobGraph
;
}
public
PackagedProgram
getProgram
()
{
return
program
;
}
public
JobGraph
getJobGraph
()
{
return
jobGraph
;
}
}
}
}
}
stratosphere-clients/src/main/java/eu/stratosphere/client/web/PactJobJSONServlet.java
浏览文件 @
3d5ae611
...
@@ -109,10 +109,10 @@ public class PactJobJSONServlet extends HttpServlet {
...
@@ -109,10 +109,10 @@ public class PactJobJSONServlet extends HttpServlet {
}
}
if
(
programDescription
!=
null
)
{
if
(
programDescription
!=
null
)
{
wrt
.
print
(
", \"description\": \""
);
wrt
.
print
(
", \"description\": \""
);
wrt
.
print
(
escapeString
(
programDescription
));
wrt
.
print
(
escapeString
(
programDescription
));
wrt
.
print
(
"\""
);
}
}
wrt
.
print
(
"\""
);
wrt
.
println
(
"}"
);
wrt
.
println
(
"}"
);
}
}
}
}
...
...
stratosphere-clients/src/test/java/eu/stratosphere/client/program/ClientTest.java
浏览文件 @
3d5ae611
...
@@ -113,7 +113,7 @@ public class ClientTest {
...
@@ -113,7 +113,7 @@ public class ClientTest {
when
(
jobSubmissionResultMock
.
getReturnCode
()).
thenReturn
(
ReturnCode
.
SUCCESS
);
when
(
jobSubmissionResultMock
.
getReturnCode
()).
thenReturn
(
ReturnCode
.
SUCCESS
);
Client
out
=
new
Client
(
configMock
);
Client
out
=
new
Client
(
configMock
);
out
.
run
(
program
.
getPlanWithJars
());
out
.
run
(
program
.
getPlanWithJars
()
,
false
);
program
.
deleteExtractedLibraries
();
program
.
deleteExtractedLibraries
();
verify
(
this
.
compilerMock
,
times
(
1
)).
compile
(
planMock
);
verify
(
this
.
compilerMock
,
times
(
1
)).
compile
(
planMock
);
...
@@ -130,7 +130,7 @@ public class ClientTest {
...
@@ -130,7 +130,7 @@ public class ClientTest {
when
(
jobSubmissionResultMock
.
getReturnCode
()).
thenReturn
(
ReturnCode
.
ERROR
);
when
(
jobSubmissionResultMock
.
getReturnCode
()).
thenReturn
(
ReturnCode
.
ERROR
);
Client
out
=
new
Client
(
configMock
);
Client
out
=
new
Client
(
configMock
);
out
.
run
(
program
.
getPlanWithJars
());
out
.
run
(
program
.
getPlanWithJars
()
,
false
);
program
.
deleteExtractedLibraries
();
program
.
deleteExtractedLibraries
();
verify
(
this
.
jobClientMock
).
submitJob
();
verify
(
this
.
jobClientMock
).
submitJob
();
...
...
stratosphere-java/src/main/java/eu/stratosphere/api/java/ExecutionEnvironment.java
浏览文件 @
3d5ae611
...
@@ -293,9 +293,6 @@ public abstract class ExecutionEnvironment {
...
@@ -293,9 +293,6 @@ public abstract class ExecutionEnvironment {
}
}
protected
static
void
initializeContextEnvironment
(
ExecutionEnvironment
ctx
)
{
protected
static
void
initializeContextEnvironment
(
ExecutionEnvironment
ctx
)
{
if
(
contextEnvironment
!=
null
)
throw
new
IllegalStateException
(
"System context has already been initialized."
);
contextEnvironment
=
ctx
;
contextEnvironment
=
ctx
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录