如何解决Azure BlobClient.beginCopy(..) 失败,错误为组 main 中的调度程序工作器失败,出现未捕获的异常,函数响应 http 503
以下是我的代码:
try (CSVReader reader = new CSVReader(new FileReader(csvFile.getAbsolutePath()))) {
//List<String[]> r = reader.readAll();
String[] lineInArray;
int count = 0;
while ((lineInArray = reader.readNext()) != null) {
String interId = lineInArray[0];
String fileId = null;
String mp3Name = null;
List<Map<String,Object>> filesList = ccrDao.retrieveCallIdAndpaths(interId);
for (Iterator iterator = filesList.iterator(); iterator.hasNext();) {
Map<String,Object> map = (Map<String,Object>) iterator.next();
fileId = map.get("C_CALL_ID")!=null?map.get("C_CALL_ID").toString():"";
mp3Name = map.get("C_FILENAME")!=null?map.get("C_FILENAME").toString():"";
if(!fileId.equals("") && !mp3Name.equals("")) {
String blobName = fileId+"/"+mp3Name;
context.getLogger().info("blobName: "+blobName);
BlobClient sourceBlobClient = srcContainer.getBlobClient(blobName);
context.getLogger().info("source blob client");
BlobClient destBlobClient = dstnContainer.getBlobClient(blobName);
context.getLogger().info("destination blob client");
if(!destBlobClient.exists()) {
context.getLogger().info("blobName doesnt exist :"+blobName);
BlobServiceSasSignatureValues sas = new BlobServiceSasSignatureValues(OffsetDateTime.Now().plusHours(1),BlobContainerSasPermission.parse("r"));
String sasToken = sourceBlobClient.generateSas(sas);
context.getLogger().info("generated sas token :"+sasToken);
destBlobClient.begincopy(sourceBlobClient.getBlobUrl()+"?"+ sasToken,null);
//destBlobClient.copyFromUrl(sourceBlobClient.getBlobUrl());
context.getLogger().info(interId+"copied successfully");
}else {
context.getLogger().info("blob already exists");
}
}else {
context.getLogger().info("No file is present");
}
}
count++;
context.getLogger().fine("Recourd Count "+count);
}
} catch (Exception e ) { //IOException | Csvexception
context.getLogger().severe("Error occured while copying the data :"+e.getMessage());
e.printstacktrace();
}
在线获得以下错误
"destBlobClient.begincopy(sourceBlobClient.getBlobUrl()+"?"+ sasToken,null);"
正文 {font-family:Arial;左边距:40px; }img { 边框:0 无; }#content { margin-left: auto; margin-right: auto }#message h2 { font-size: 20px;字体粗细:正常;颜色:#000000;边距:34px 0px 0px 0px }#message p { 字体大小:13px;颜色:#000000;边距:7px 0px 0px0px}#errorref { 字体大小:11px;颜色:#737373; margin-top: 41px }服务不可用我们的服务现在不可用
我们正在努力尽快恢复所有服务。请尽快回来查看。
0XjmzYAAAAAC2Ast2oBmIS47phNpxTuFBQk9NMDFFREdFMDIxOQA3ZGIwYWMxYy1iNzZkLTRiYTQtYTE3NS01NTgxNTUxMTEzZDU=解决方法
我终于找到了解决方案,怀疑这些问题与层或任何扩展问题无关。虽然执行我的函数没有显示完整的日志,我的代码也无法捕获异常,所以我按照以下步骤操作。
- 通过 Kudu -Debug 控制台检查了“主机”日志。
- 能够在 beginCopy() 步骤中找到实际错误,如下所述
2021-05-31T14:37:48.513 [Information] 2021-05-31 14:37:48.494 ERROR 5820 --- [parallel-1] reactor.core.scheduler.Schedulers : 组 main 中的调度程序工作器失败未捕获的异常 2021-05-31T14:37:48.513 [信息] java.lang.NoSuchMethodError: okhttp3.RequestBody.create(Lokio/ByteString;Lokhttp3/MediaType;)Lokhttp3/RequestBody;
- 对上述错误进行分析后,通过添加以下依赖项覆盖我的 pom.xml 中的 okhttp 版本
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.1</version>
</dependency>
- 清理包并用现有库替换所有库。不要只替换函数应用中的一个库,因为它的依赖库如 okio jar 也必须更新
如果您认为解决方案有效并且能够解决上述问题,请点赞。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。