Error deploying solution

Hello,

Servoy Version 7.4.2

We have trouble on our server whenever we import a solution that already exists with its module. Deleting the solution and its module first, then importing the solution again as if it was an initial import works, but whenever a update is made, we get that kind of errors.

Any clue ? Thanks

Here’s the log

2015-02-09 15:15 http-8095-1 ERROR com.servoy.j2db.util.Debug Throwable
com.servoy.j2db.persistence.RepositoryException: com.microsoft.sqlserver.jdbc.SQLServerException: Software caused connection abort: recv failed ClientConnectionId:a8477e58-a607-4f32-9da2-ea7b78b83bb6
at com.servoy.j2db.server.Zc.Zdb.Za(Zdb.java:540)
at com.servoy.j2db.server.Zc.Zdb.importFromJarFile(Zdb.java:615)
at com.servoy.j2db.server.servlets.ConfigServlet.Zi(ConfigServlet.java:1134)
at com.servoy.j2db.server.servlets.ConfigServlet.service(ConfigServlet.java:1052)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Software caused connection abort: recv failed ClientConnectionId:a8477e58-a607-4f32-9da2-ea7b78b83bb6
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1654)
at com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1789)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.Prelogin(SQLServerConnection.java:1424)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1319)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
at com.servoy.j2db.datasource.Zp.createConnection(Zp.java:6)
at com.servoy.j2db.datasource.Ze.createConnection(Ze.java:4)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1158)
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
at com.servoy.j2db.datasource.Za.getConnection(Za.java:1)
at com.servoy.j2db.datasource.jmx.ManagedBasicPoolingDataSource.getConnection(ManagedBasicPoolingDataSource.java:9)
at com.servoy.j2db.server.Za.Zo.getRawConnection(Zo.java:458)
at com.servoy.j2db.server.Za.Zo.Zf(Zo.java:87)
at com.servoy.j2db.server.Za.Zo.Zf(Zo.java:910)
at com.servoy.j2db.server.Za.Zo.Za(Zo.java:1588)
at com.servoy.j2db.server.Za.Zo.syncTableObjWithDB(Zo.java:540)
at com.servoy.j2db.server.Zc.Zj.importDatabaseInfo(Zj.java:22)
at com.servoy.j2db.server.Zc.Zdb.Za(Zdb.java:74)
… 17 more

2015-02-09 15:15 http-8095-1 ERROR com.servoy.j2db.util.Debug Throwable
java.sql.SQLException: pas de transaction en cours
at com.servoy.j2db.datasource.Zo.rollback(Zo.java:132)
at com.servoy.j2db.util.Utils.rollback(Utils.java:1598)
at com.servoy.j2db.server.Zc.Zk.importingDone(Zk.java:447)
at com.servoy.j2db.server.Zc.Zdb.Za(Zdb.java:368)
at com.servoy.j2db.server.Zc.Zdb.importFromJarFile(Zdb.java:615)
at com.servoy.j2db.server.servlets.ConfigServlet.Zi(ConfigServlet.java:1134)
at com.servoy.j2db.server.servlets.ConfigServlet.service(ConfigServlet.java:1052)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

Hi,

What seems to be happening is that the database server closed the connection and Servoy didn’t know about it. (MySQL has the same issues)
You say you did the first import fine after you deleted the solution first, which makes sense because this does require a restart of the server and your connections will be newly created.
Perhaps SQL Server has a setting where you can set the timeout or some JDBC param to keep-alive or reconnect after such an exception.
What version of SQL Server are you using ?

Thanks Robert for the quick answer,

It’s a SQL Server 2008 R2. We use a 4CPU server with our production install which is running fine ( except that some db connexions apparently aren’t closed automatically by Servoy, we force an automatic reboot of the db server at night time ), but this instance is used for testing purpose and is deployed over a 2CPU server. Our hosting service is maintaining these two servers so that they are stricly identical except for the cpu and servoy licence.
I will ask them to check the timeout, I imagine this is not something we can deal within servoy properties or servoy application server files.

Thanks.

Hi Udiluca,

Servoy uses a connection pool and in the connection settings you can define how many connections it should keep open (Max. idle connections). For performance reasons it’s preferred to have some connections open ready to go but if you have the requirement that these should close you should set this to 0. You can also set the connection idle timeout. All these settings can be found on the connection in the Servoy-admin page.
As for rebooting the DB Server, you should then also restart Servoy after the DB server is back up or else you get these kinds of errors.

What is your requirement for having Servoy close all it’s connections ?

Robert,

ROCLASI:
What is your requirement for having Servoy close all it’s connections ?

I already did some changes in the connexion settings tab, for Max and Idle.
Actually, when accessing SQL Server via Remote Desktop, any operation was prohibited SQL complaining for too many connexions. ( I cannot recall the exact message but that’s chat our SQL expert said )
Apparently, according to him, a lot of connexions were not closed, that´s why we decided for this nighty reboot.
Both db server and application server are restarting.

But this si not strictly related to the problem that occurs for this post.

Thanks for your interest and suggestions.

Ugo