когда я сохраняю поток в swift: пар закрывается, время от времени выбрасывается - PullRequest
0 голосов
/ 22 октября 2018

это происходило время от времени.я загружаю файл через форму / мульти-файл и передаю его в хранилище объектов 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 (кластеры с тремя узлами)

...