如果数据大小以kb为单位,我已经能够执行我的代码以将数据从一个s3存储桶复制到另一个rbucket。但是,如果大小增加到几MB,我的任务将失败,并显示START_To_CLOSE错误。任务失败,taskStarttoClose超时。我尝试将defaultTaskStartToCloseTimeoutSeconds覆盖为60秒,之后在执行工作流程时,我看到该值设置为10秒。我不明白为什么等待60秒后值会改变。该 Activity 无法复制大文件。这是复制 Activity 的代码示例。
@Override
public String copyData(String jobFlowId, String inputFilename) throws IOException, InterruptedException {
AmazonS3 s3Client = new AmazonS3Client(credentials);
String baseOutputFilename = "job/"
CopyObjectRequest copyObjRequest = new CopyObjectRequest(
"bucket1", "/job/data.txt", "bucket2", OutputFilename);
s3Client.copyObject(copyObjRequest);
return "s3n://bucketName/eOutputFilename";
}
最佳答案
在 Activity 版本类型注册期间,会将defaultTaskStartToCloseTimeoutSeconds传递给SWF。版本类型注册仅发生一次,之后版本类型是不可变的。因此,更改Java代码中的超时值不会更改已注册的超时值。
解决方案是使用凹凸 Activity 版本号(在@Activities批注中)以强制进行新的 Activity 版本注册,或者显式指定超时覆盖(将ActivitySchedulingOptions参数传递给每个 Activity 调用)。
关于hadoop - 如何覆盖Amazon Simple Workflow StartToCloseTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26185975/