页面树结构
转至元数据结尾
转至元数据起始

(此文档仅供参考)

问题说明

星环数据库执行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

解决方案

       此报错是由于数据库服务器端会定时断开连接,而数据源设置"获取连接时测试"、"返还时测试"、"获取、返还连接时测试"方式,并没有设置校验语句导致,关于连接池、校验方式、校验语句的逻辑如下:

       (1)当设置校验方式为"获取连接时测试"、"返还时测试"、"获取、返还连接时测试",但没有设置校验语句时,处理逻辑是直接将数据集执行的SQL拿到数据库中执行,此时因为数据库已将连接断开了,则出现超时的错误。

       (2)当设置校验方式为"获取连接时测试"、"返还时测试"、"获取、返还连接时测试",但设置了校验语句时,会先将校验语句拿到数据库中执行,若执行校验语句报错后,连接池里面的该连接视为失效,会从连接池里删除此失效连接并重新创建连接,新连接会继续执行校验语句,校验语句执行成功后,再将数据集的SQL拿到数据库中去执行。

       (3)若设置为"返还时关闭连接",每次创建连接执行SQL后会将连接关闭。即数据源的校验语句执行是会创建连接,执行完后则将连接关闭,当数据集执行SQL时会创建新的连接去执行。

         综上,若需解决目前问题,有两种方案

         ①设置校验语句

        

        将校验方法设置为"返还时关闭连接"

        

         注:

         1、关于"返还时测试",若有校验语句时,执行逻辑是先将数据集执行SQL拿到数据库中执行后,再执行校验语句。故当数据库将连接断开后,执行数据集的SQL就会出现超时报错。

         2、当第一次执行校验语句失败后(超时是其中一种),会再创建新的连接去执行校验语句,若执行成功则再执行SQL(此时前端一直是等待状态);若执行失败,前端返回报错,不会再创建新的连接。

         


Viewtracker License Missing

There is a problem with the license of the Viewtracker addon. Please check if you have a valid license.

授权码细节

(此文档仅供参考)

问题说明

星环数据库执行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

解决方案

       此报错是由于数据库服务器端会定时断开连接,而数据源设置"获取连接时测试"、"返还时测试"、"获取、返还连接时测试"方式,并没有设置校验语句导致,关于连接池、校验方式、校验语句的逻辑如下:

       (1)当设置校验方式为"获取连接时测试"、"返还时测试"、"获取、返还连接时测试",但没有设置校验语句时,处理逻辑是直接将数据集执行的SQL拿到数据库中执行,此时因为数据库已将连接断开了,则出现超时的错误。

       (2)当设置校验方式为"获取连接时测试"、"返还时测试"、"获取、返还连接时测试",但设置了校验语句时,会先将校验语句拿到数据库中执行,若执行校验语句报错后,连接池里面的该连接视为失效,会从连接池里删除此失效连接并重新创建连接,新连接会继续执行校验语句,校验语句执行成功后,再将数据集的SQL拿到数据库中去执行。

       (3)若设置为"返还时关闭连接",每次创建连接执行SQL后会将连接关闭。即数据源的校验语句执行是会创建连接,执行完后则将连接关闭,当数据集执行SQL时会创建新的连接去执行。

         综上,若需解决目前问题,有两种方案

         ①设置校验语句

        

        将校验方法设置为"返还时关闭连接"

        

         注:

         1、关于"返还时测试",若有校验语句时,执行逻辑是先将数据集执行SQL拿到数据库中执行后,再执行校验语句。故当数据库将连接断开后,执行数据集的SQL就会出现超时报错。

         2、当第一次执行校验语句失败后(超时是其中一种),会再创建新的连接去执行校验语句,若执行成功则再执行SQL(此时前端一直是等待状态);若执行失败,前端返回报错,不会再创建新的连接。

         


Viewtracker License Missing

There is a problem with the license of the Viewtracker addon. Please check if you have a valid license.

授权码细节