(此文档仅供参考)
...
问题说明
星环数据库执行SQL偶尔会报以下错误:
代码块 |
---|
java.net.SocketException: Broken pipe (Write failed) at smartbi.freequery.querydata.store.DBSQLResultStore.executeInDatabaseInner(DBSQLResultStore.java:1678) at ...(...) at smartbi.freequery.querydata.store.DBSQLResultStore.runRawSQL(DBSQLResultStore.java:3866) Caused by: java.sql.SQLException: org.apache.thrift.transport.TTransportException: java.net.SocketException: Broken pipe (Write failed) at org.apache.hive.jdbc.HiveStatement.executeInternal(HiveStatement.java:325) at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:419) at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:598) at org.apache.hive.jdbc.HivePreparedStatement.executeQuery(HivePreparedStatement.java:572) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) at smartbi.freequery.querydata.store.DBSQLResultStore.runRawSQL(DBSQLResultStore.java:3866) at smartbi.freequery.querydata.store.DBSQLResultStore.executeInDatabaseInner(DBSQLResultStore.java:1449) at smartbi.freequery.querydata.store.DBSQLResultStore.executeInDatabase(DBSQLResultStore.java:1361) at smartbi.freequery.querydata.store.DBSQLResultStore.ensureGridDataInMemDB(DBSQLResultStore.java:4560) at smartbi.freequery.querydata.store.DBSQLResultStore.getGridDataInternal(DBSQLResultStore.java:3951) at smartbi.freequery.querydata.store.SQLResultStore.getGridData(SQLResultStore.java:156) at smartbi.freequery.report.SimpleReportBO.getGridDataInternal(SimpleReportBO.java:1010) at smartbi.freequery.report.SimpleReportBO.getGridData(SimpleReportBO.java:986) at smartbi.freequery.client.simplereport.ClientReportService.getReportDataInPage(ClientReportService.java:793) at smartbi.freequery.client.simplereport.ClientReportService.getReportDataWithFutureInPage(ClientReportService.java:870) at smartbi.freequery.client.simplereport.ClientReportService.getReportDataWithFuture(ClientReportService.java:842) at sun.reflect.GeneratedMethodAccessor774.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at smartbi.framework.rmi.ClientService.execute(Smartbi:118) at smartbi.framework.rmi.RMIServlet.processExecute(RMIServlet.java:204) at smartbi.framework.rmi.RMIServlet.doPost(RMIServlet.java:148) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at smartbi.extension.ExtensionFilter$2.doFilter(ExtensionFilter.java:138) at smartbi.extension.ExtensionFilter$1.doFilter(ExtensionFilter.java:127) at smartbi.extension.ExtensionFilter.doFilterInternal(ExtensionFilter.java:150) at smartbi.extension.ExtensionFilter.doFilter(ExtensionFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at smartbi.framework.rmi.TransactionFilter.doFilter(Smartbi:97) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at smartbi.freequery.filter.GZIPFilter.doFilter(GZIPFilter.java:111) at smartbi.freequery.filter.Filter.doFilter(Filter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at smartbi.freequery.filter.CheckIsLoggedFilter.doFilter(CheckIsLoggedFilter.java:135) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at smartbi.freequery.filter.TraceFilter.doFilter(TraceFilter.java:59) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1139) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.AprEndpoint$SocketWithOptionsProcessor.run(AprEndpoint.java:2492) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.thrift.transport.TTransportException: java.net.SocketException: Broken pipe (Write failed) at org.apache.thrift.transport.TIOStreamTransport.write(TIOStreamTransport.java:147) at org.apache.thrift.transport.TSaslTransport.flush(TSaslTransport.java:500) at org.apache.thrift.transport.TSaslClientTransport.flush(TSaslClientTransport.java:37) at org.apache.hadoop.hive.thrift.TFilterTransport.flush(TFilterTransport.java:77) at org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:65) at org.apache.hive.service.cli.thrift.TCLIService$Client.send_ExecuteStatement(TCLIService.java:251) at org.apache.hive.service.cli.thrift.TCLIService$Client.ExecuteStatement(TCLIService.java:243) at org.apache.hive.jdbc.HiveStatement.executeInternal(HiveStatement.java:322) ... 63 more Caused by: java.net.SocketException: Broken pipe (Write failed) at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115) at java.net.SocketOutputStream.write(SocketOutputStream.java:161) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) at java.io.BufferedOutputStream.write(BufferedOutputStream.java:121) at org.apache.thrift.transport.TIOStreamTransport.write(TIOStreamTransport.java:145) ... 70 more |
...
解决方案
此报错是由于数据库服务器端会定时断开连接,而数据源设置"获取连接时测试"、"返还时测试"、"获取、返还连接时测试"方式,并没有设置校验语句导致,关于连接池、校验方式、校验语句的逻辑如下:
...