如何覆盖Amazon Simple Workflow StartToCloseTimeout?

时间:2014-10-03 20:02:45

标签: hadoop amazon-s3 emr amazon-swf

如果数据大小是kb,我已经能够执行我的代码将数据从一个s3存储桶复制到另一个rbucket。但是,如果大小增加到几mb,我的任务将因START_To_CLOSE错误而失败。任务失败,taskStarttoClose超时。我已经尝试将defaultTaskStartToCloseTimeoutSeconds重写为60秒,然后在执行工作流时,我看到值设置为10秒。当我让它等待60秒时,我不明白为什么值会改变。活动无法复制大文件。以下是复制活动的代码示例。

    @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";
}

1 个答案:

答案 0 :(得分:0)

defaultTaskStartToCloseTimeoutSeconds 在活动版本类型注册期间传递给SWF。版本类型注册只发生一次,之后版本类型是不可变的。因此,更改Java代码中的超时值不会更改已注册的值。 解决方案是缓冲活动版本号(在@Activities注释中)以强制新活动版本注册或显式指定超时覆盖(将ActivitySchedulingOptions参数传递给每个活动调用。