это происходило время от времени.я загружаю файл через форму / мульти-файл и передаю его в хранилище объектов swift.но иногда он выдавал исключения: IOException, поток закрыт.
@RequestMapping(value = {"/image/{id}/detail"}, consumes = {"multipart/form-data"}, method = RequestMethod.POST)
public ResponseEntity<Object> InsertPic(
@PathVariable Long id,
@RequestParam(required = false) Long type,
@RequestParam(required = false) String desc,
@RequestParam("file") MultipartFile file) {
PltUsers user = SecurityUtils.getUserDetails().getPltUsers();
EirCntrReceiptImgIt entity = new EirCntrReceiptImgIt();
entity.setRcpgId(id);
entity.setRgiType(type);
entity.setRgiDesc(desc);
entity = eirBizFacade.InsertReceiptImageDetail(entity, user);
final Long rcgId = entity.getRgiId();
String url = null;
try {
url = inspectImageService.AddFile(rcgId.toString(), file.getInputStream());
} catch (Exception e) {
eirBizFacade.SetImageDetailInvalid(rcgId, e.getMessage(), user);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
eirBizFacade.SetImageDetailInfo(rcgId, url);
entity.setRgiUrl(url);
return new ResponseEntity<>(entity, HttpStatus.OK);
}
inspectImageService
public String AddFile(String objectName, InputStream stream){
try {
os = fileStorageConfig.getOSClientV3();
String etag = os.objectStorage().objects().put(getCONTAINER_NAME(), objectName, Payloads.create(stream), ObjectPutOptions.create());
if(StringUtils.isNotEmpty(etag)){
return "/api/eir/receipt/image/detail/" + objectName;
}
return null;
}catch (Exception e){
throw e;
}
finally {
if(stream != null){
try {
stream.close();
}catch (Exception ee){
}
}
}
}
Я допустил ошибки?Я в замешательстве.
и это произошло только в производственной среде.это нормально с развивающейся средой.
DEV: docker + swift (только один узел) PRO: docker + swift (кластеры с тремя узлами)