开发者社区 > 云存储 > 正文

表格存储抛出这个异常代码配置了重试策略,tablestore会在服务端重试吗,还是要自己手动重试?

表格存储抛出这个异常代码配置了重试策略,tablestore会在服务端重试吗,还是要自己手动重试?
{"error":{"code":"OTSPartitionUnavailable","message":""},"index":124}
iwEcAqNwbmcDAQTRBOoF0QEnBrBJMYuIZVKBCQUbUWzvgJ8AB9IDpRT3CAAJomltCgAL0gABGdo.png_720x720q90.jpg

展开
收起
青城山下庄文杰 2023-10-16 18:20:47 47 0
3 条回答
写回答
取消 提交回答
  • 表格存储的SDK中,如果抛出了异常,可以通过配置重试策略来实现自动重试。具体来说,可以在创建客户端实例时设置最大重试次数、重试间隔等参数,以便在出现异常时进行自动重试。

    例如,在使用Java SDK时,可以这样设置重试策略:

    OTSClient client = new OTSClient(endpoint, accessKeyId, accessKeySecret);
    client.setMaxRetries(3); // 设置最大重试次数为3次
    client.setRetryIntervalInMillis(1000); // 设置重试间隔为1秒
    

    需要注意的是,虽然表格存储会在服务端进行重试,但是在某些情况下仍然需要手动处理异常。例如,当达到最大重试次数后仍然无法成功执行操作时,就需要手动处理异常并采取相应的措施。

    2023-10-31 22:39:40
    赞同 展开评论 打赏
  • 2023-10-17 18:51:17
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    如果在表格存储的操作中出现了 OTSPartitionUnavailable 错误,TableStore 会根据配置的重试策略进行自动重试。但是,在一些情况下,TableStore 不会自动重试,例如:

    1. 请求的错误类型为“不可重试错误”,例如请求参数无效,或者账号权限不足等;

    2. 配置的重试策略已经达到了最大尝试次数;

    3. 操作的频率过高,超过了阿里云表格存储服务的限制。

    在这些情况下,您需要手动处理异常并进行重试。推荐的做法是在代码中捕获 OTSPartitionUnavailableException 异常并根据具体情况进行重试,例如可以使用线程等待方式、增加重试间隔时间等方式控制重试间隔。

    以下是一个示例代码片段,演示如何捕获异常并重试:

    int maxRetries = 3;
    int retryCount = 0;
    
    while (retryCount < maxRetries) {
        try {
            // 执行 TableStore 操作
            // ...
    
            // 操作成功,跳出循环
            break;
        } catch (OTSPartitionUnavailableException e) {
            // 捕获 PartitionUnavailable 异常,进行重试
            retryCount++;
    
            if (retryCount >= maxRetries) {
                // 达到最大尝试次数,抛出异常
                throw e;
            }
    
            // 等待一段时间后重试
            Thread.sleep(1000 * retryCount);
        }
    }
    
    2023-10-16 18:56:30
    赞同 展开评论 打赏

阿里云存储基于飞天盘古2.0分布式存储系统,产品多种多样,充分满足用户数据存储和迁移上云需求。

相关电子书

更多
TableStore在社交类场景下的应用 立即下载
表格存储实时数据流Steam的技术揭秘和应用场景 立即下载
表格存储(TableStore) 立即下载