tobato / FastDFS_Client

Java Client for FastDFS
GNU Lesser General Public License v3.0
1.48k stars 515 forks source link

com.github.tobato.fastdfs.exception.FdfsIOException: 客户端连接服务端出现了io异常:socket io exception occured while sending cmd #29

Closed wetsion closed 6 years ago

wetsion commented 6 years ago

java.io.IOException: the end of the stream has been reached. not match the expected size com.github.tobato.fastdfs.exception.FdfsIOException: 客户端连接服务端出现了io异常:socket io exception occured while sending cmd 2017-11-23 23:02:32.027 ERROR 26023 --- [l-EvictionTimer] c.g.t.fastdfs.conn.DefaultConnection : valid connection error java.net.SocketTimeoutException: Read timed out 上面是错误栈打印的,场景是我读取邮件的附件,并将邮件附件上传到FDFS上,使用storageClient.uploadFile这个方法时就报错,通过debug知道附件的inputstream是Base64DecoderStream,不知道和这个有没有关系,请问这是哪方面问题

tobato commented 6 years ago

<logger name="com.github.tobato.fastdfs.proto" level="DEBUG" /> 开日志看看

看起来是连接断开了

wetsion commented 6 years ago

@tobato 好的,我看看,不过我把邮件附件先下载到应用服务器再上传到FDFS时没问题,而直接用附件的bodypart.getInputstream进行上传时就出现上述问题

wetsion commented 6 years ago

@tobato 2017-11-24 10:20:55.408 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 发出交易请求..报文头为ProtoHead [contentLength=0, cmd=101, status=0] 2017-11-24 10:20:55.409 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 交易参数为[] 2017-11-24 10:20:55.418 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 服务端返回报文头ProtoHead [contentLength=40, cmd=100, status=0] 2017-11-24 10:20:55.420 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : dump class=com.github.tobato.fastdfs.domain.StorageNode 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : ---------------------------------------- 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : FieldMateData [field=groupName, index=0, max=16, size=16, offsize=0] 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : FieldMateData [field=ip, index=1, max=15, size=15, offsize=16] 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : FieldMateData [field=port, index=2, max=0, size=8, offsize=31] 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : FieldMateData [field=storeIndex, index=3, max=0, size=1, offsize=39] 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.FdfsParamMapper : 设置值是 FieldMateData [field=groupName, index=0, max=16, size=16, offsize=0]group1 2017-11-24 10:20:55.437 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.FdfsParamMapper : 设置值是 FieldMateData [field=ip, index=1, max=15, size=15, offsize=16]114.115.144.73 2017-11-24 10:20:55.437 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.FdfsParamMapper : 设置值是 FieldMateData [field=port, index=2, max=0, size=8, offsize=31]23000 2017-11-24 10:20:55.437 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.FdfsParamMapper : 设置值是 FieldMateData [field=storeIndex, index=3, max=0, size=1, offsize=39]0 2017-11-24 10:20:55.451 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 发出交易请求..报文头为ProtoHead [contentLength=189159, cmd=11, status=0] 2017-11-24 10:20:55.451 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 交易参数为[0, 0, 0, 0, 0, 0, 2, -30, -40, 112, 100, 102, 63, 61, 0] 2017-11-24 10:20:55.452 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 开始上传文件流大小为189144 2017-11-24 10:20:59.876 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 剩余数据量50923 2017-11-24 10:20:59.882 ERROR 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : send conent error 上面是开启日志后打印的东西,您看看,传输了一部分就断开了

tobato commented 6 years ago

把日志截全才好分析啊,后面的日志呢

wetsion commented 6 years ago

@tobato `2017-11-24 10:20:55.408 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 发出交易请求..报文头为ProtoHead [contentLength=0, cmd=101, status=0] 2017-11-24 10:20:55.409 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 交易参数为[] 2017-11-24 10:20:55.418 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 服务端返回报文头ProtoHead [contentLength=40, cmd=100, status=0] 2017-11-24 10:20:55.420 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : dump class=com.github.tobato.fastdfs.domain.StorageNode 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : ---------------------------------------- 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : FieldMateData [field=groupName, index=0, max=16, size=16, offsize=0] 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : FieldMateData [field=ip, index=1, max=15, size=15, offsize=16] 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : FieldMateData [field=port, index=2, max=0, size=8, offsize=31] 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.ObjectMateData : FieldMateData [field=storeIndex, index=3, max=0, size=1, offsize=39] 2017-11-24 10:20:55.421 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.FdfsParamMapper : 设置值是 FieldMateData [field=groupName, index=0, max=16, size=16, offsize=0]group1 2017-11-24 10:20:55.437 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.FdfsParamMapper : 设置值是 FieldMateData [field=ip, index=1, max=15, size=15, offsize=16]114.115.144.73 2017-11-24 10:20:55.437 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.FdfsParamMapper : 设置值是 FieldMateData [field=port, index=2, max=0, size=8, offsize=31]23000 2017-11-24 10:20:55.437 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.f.proto.mapper.FdfsParamMapper : 设置值是 FieldMateData [field=storeIndex, index=3, max=0, size=1, offsize=39]0 2017-11-24 10:20:55.451 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 发出交易请求..报文头为ProtoHead [contentLength=189159, cmd=11, status=0] 2017-11-24 10:20:55.451 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 交易参数为[0, 0, 0, 0, 0, 0, 2, -30, -40, 112, 100, 102, 63, 61, 0] 2017-11-24 10:20:55.452 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 开始上传文件流大小为189144 2017-11-24 10:20:59.876 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 剩余数据量50923 2017-11-24 10:20:59.882 ERROR 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : send conent error

java.io.IOException: the end of the stream has been reached. not match the expected size at com.github.tobato.fastdfs.proto.AbstractFdfsCommand.sendFileContent(AbstractFdfsCommand.java:124) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.proto.AbstractFdfsCommand.send(AbstractFdfsCommand.java:84) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.proto.AbstractFdfsCommand.execute(AbstractFdfsCommand.java:38) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.conn.ConnectionManager.execute(ConnectionManager.java:76) [fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.conn.ConnectionManager.executeFdfsCmd(ConnectionManager.java:61) [fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.service.DefaultFastFileStorageClient.uploadFileAndMateData(DefaultFastFileStorageClient.java:131) [fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.service.DefaultFastFileStorageClient.uploadFile(DefaultFastFileStorageClient.java:54) [fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.sinosources.erp_mailcenter.service.fastdfs.MailBodyPartFdfsService.uploadFile(MailBodyPartFdfsService.java:33) [classes/:na] at com.sinosources.erp_mailcenter.service.fastdfs.MailBodyPartFdfsService.uploadFile(MailBodyPartFdfsService.java:1) [classes/:na] at com.sinosources.erp_mailcenter.util.MailUtil.parseImapMultiToMailMessage(MailUtil.java:123) [classes/:na] at com.sinosources.erp_mailcenter.util.MailUtil.messageHandler(MailUtil.java:67) [classes/:na] at com.sinosources.erp_mailcenter.controller.IMAPMailController.getMessage(IMAPMailController.java:202) [classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.23.jar:8.5.23] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.23.jar:8.5.23] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]

2017-11-24 10:20:59.884 ERROR 28197 --- [nio-8081-exec-1] c.s.e.s.fastdfs.MailBodyPartFdfsService : 文件上传时异常

com.github.tobato.fastdfs.exception.FdfsIOException: 客户端连接服务端出现了io异常:socket io exception occured while sending cmd at com.github.tobato.fastdfs.proto.AbstractFdfsCommand.execute(AbstractFdfsCommand.java:41) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.conn.ConnectionManager.execute(ConnectionManager.java:76) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.conn.ConnectionManager.executeFdfsCmd(ConnectionManager.java:61) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.service.DefaultFastFileStorageClient.uploadFileAndMateData(DefaultFastFileStorageClient.java:131) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.service.DefaultFastFileStorageClient.uploadFile(DefaultFastFileStorageClient.java:54) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.sinosources.erp_mailcenter.service.fastdfs.MailBodyPartFdfsService.uploadFile(MailBodyPartFdfsService.java:33) [classes/:na] at com.sinosources.erp_mailcenter.service.fastdfs.MailBodyPartFdfsService.uploadFile(MailBodyPartFdfsService.java:1) [classes/:na] at com.sinosources.erp_mailcenter.util.MailUtil.parseImapMultiToMailMessage(MailUtil.java:123) [classes/:na] at com.sinosources.erp_mailcenter.util.MailUtil.messageHandler(MailUtil.java:67) [classes/:na] at com.sinosources.erp_mailcenter.controller.IMAPMailController.getMessage(IMAPMailController.java:202) [classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.12.RELEASE.jar:4.3.12.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.23.jar:8.5.23] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.23.jar:8.5.23] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131] Caused by: java.io.IOException: the end of the stream has been reached. not match the expected size at com.github.tobato.fastdfs.proto.AbstractFdfsCommand.sendFileContent(AbstractFdfsCommand.java:124) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.proto.AbstractFdfsCommand.send(AbstractFdfsCommand.java:84) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.proto.AbstractFdfsCommand.execute(AbstractFdfsCommand.java:38) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] ... 63 common frames omitted

2017-11-24 10:21:48.749 ERROR 28197 --- [l-EvictionTimer] c.g.t.fastdfs.conn.DefaultConnection : valid connection error

java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) ~[na:1.8.0_131] at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[na:1.8.0_131] at java.net.SocketInputStream.read(SocketInputStream.java:171) ~[na:1.8.0_131] at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_131] at java.net.SocketInputStream.read(SocketInputStream.java:127) ~[na:1.8.0_131] at com.github.tobato.fastdfs.conn.DefaultConnection.isValid(DefaultConnection.java:102) ~[fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.conn.PooledConnectionFactory.validateObject(PooledConnectionFactory.java:86) [fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at com.github.tobato.fastdfs.conn.PooledConnectionFactory.validateObject(PooledConnectionFactory.java:24) [fastdfs-client-1.25.4-RELEASE.jar:1.25.4-RELEASE] at org.apache.commons.pool2.impl.GenericKeyedObjectPool.evict(GenericKeyedObjectPool.java:975) [commons-pool2-2.4.2.jar:2.4.2] at org.apache.commons.pool2.impl.BaseGenericObjectPool$Evictor.run(BaseGenericObjectPool.java:1036) [commons-pool2-2.4.2.jar:2.4.2] at java.util.TimerThread.mainLoop(Timer.java:555) [na:1.8.0_131] at java.util.TimerThread.run(Timer.java:505) [na:1.8.0_131]`

ToutChenV587 commented 6 years ago

是不是也重启了tracker?

tobato commented 6 years ago

c.g.t.fastdfs.proto.AbstractFdfsCommand : 开始上传文件流大小为189144 2017-11-24 10:20:59.876 DEBUG 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : 剩余数据量50923 2017-11-24 10:20:59.882 ERROR 28197 --- [nio-8081-exec-1] c.g.t.fastdfs.proto.AbstractFdfsCommand : send conent error

java.io.IOException: the end of the stream has been reached. not match the expected size

再加上你的描述,我猜是输入流当中没有完整的数据,声明要上传189144,其实没完全载入?,如果附件不是很大,建议你把数据从附件流当中完整的载入到内存,然后从内存当中再向服务端上传。否则,建议你下载到零时目录再上传。或者想办法把两个流对接起来。

wetsion commented 6 years ago

@ToutChenV587 没重启

wetsion commented 6 years ago

@tobato 可能是输入流的数据不完整,由于是去获取邮件里的附件,可能这些邮件服务商的原因,不允许直接这样使用吧,目前暂时采用的方式就是通过任务队列下载到临时目录再上传到FDFS,以后有时间再考虑对接两个流

tobato commented 6 years ago

好到,那我把问题关闭了

xuanyuanbao commented 1 year ago

Exception in thread "myThreadPoolTaskExecutor-->1" java.lang.RuntimeException: com.github.tobato.fastdfs.exception.FdfsConnectException: 无法获取服务端连接资源:can't create connection to/172.17.0.1:23000 at tom.prizemanager.service.impl.ElasticsearchImageServiceImpl.getImageUrl(ElasticsearchImageServiceImpl.java:43) at tom.prizemanager.service.impl.ArticleServiceImpl.updateOnES(ArticleServiceImpl.java:120) at tom.prizemanager.service.impl.ArticleServiceImpl$$FastClassBySpringCGLIB$$1.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687) at tom.prizemanager.service.impl.ArticleServiceImpl$$EnhancerBySpringCGLIB$$1.updateOnES() at tom.prizemanager.job.SynchronousArticleInESJob.lambda$execute$0(SynchronousArticleInESJob.java:64) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: com.github.tobato.fastdfs.exception.FdfsConnectException: 无法获取服务端连接资源:can't create connection to/172.17.0.1:23000 at com.github.tobato.fastdfs.domain.conn.DefaultConnection.(DefaultConnection.java:56) at com.github.tobato.fastdfs.domain.conn.PooledConnectionFactory.create(PooledConnectionFactory.java:56) at com.github.tobato.fastdfs.domain.conn.PooledConnectionFactory.create(PooledConnectionFactory.java:22) at org.apache.commons.pool2.BaseKeyedPooledObjectFactory.makeObject(BaseKeyedPooledObjectFactory.java:62) at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1051) at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:347) at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:270) at com.github.tobato.fastdfs.domain.conn.FdfsConnectionManager.getConnection(FdfsConnectionManager.java:148) at com.github.tobato.fastdfs.domain.conn.FdfsConnectionManager.executeFdfsCmd(FdfsConnectionManager.java:63) at com.github.tobato.fastdfs.service.DefaultFastFileStorageClient.uploadFileAndMetaData(DefaultFastFileStorageClient.java:223) at com.github.tobato.fastdfs.service.DefaultFastFileStorageClient.uploadImage(DefaultFastFileStorageClient.java:145) at tom.prizemanager.util.FastDFSUtil.uploadImage(FastDFSUtil.java:55) at tom.prizemanager.service.impl.ElasticsearchImageServiceImpl.getImageUrl(ElasticsearchImageServiceImpl.java:41) ... 9 more Caused by: java.net.SocketTimeoutException: connect timed out at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) at java.net.Socket.connect(Socket.java:606) at com.github.tobato.fastdfs.domain.conn.DefaultConnection.(DefaultConnection.java:54) ... 21 more

可以问一下这个是什么问题吗,原始问题在这里https://github.com/tobato/FastDFS_Client/issues/289