When trying to deploy a large WAR file (converted into EAR with the deploy tool) by the deploy service in the Visual Administrator, the progress bar always stops at 99%. Can somebody give me a hand?
My configuration is NetWeaver WinSQL 6.40 + SP8 installed and worked fine on Windows 2003 Server with 1024M physical memory.
The WAR file to deploy is large: war size over 100M and contains 30K files and 1K folders. The extracted total size is over 300M.
After the progress bar always stops at 99% for a very long time, the SAP log file contains the follow exception:
com.sap.engine.core.configuration#Administrator#5####1530d0c187a311d9b8cc000347f78d07#SAPEngine_Application_Thread[impl:3]_22##0#0#Error#1#com.sap.engine.core.configuration#Plain###Error during flush data, trying to rollback. See stacktrace for details.:
[DataDirect][SQLServer JDBC Driver]No more data available to read.
=======================================================
com.ddtek.jdbc.base.BaseBatchUpdateException: [DataDirect][SQLServer JDBC Driver]No more data available to read.
at com.ddtek.jdbc.sqlserver.SQLServerImplStatement.executeBatch(Unknown Source)
at com.ddtek.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.ddtek.jdbc.base.BasePreparedStatement.executeBatch(Unknown Source)
at com.sap.sql.jdbc.basic.BasicPreparedStatement.executeBatch(BasicPreparedStatement.java:263)
at com.sap.sql.jdbc.direct.DirectPreparedStatement.executeBatch(DirectPreparedStatement.java:1102)
at com.sap.sql.jdbc.direct.DirectPreparedStatement.executeBatch(DirectPreparedStatement.java:1066)
at com.sap.engine.core.configuration.impl.persistence.rdbms.DBAccessDefault.execInsertFileBatch(DBAccessDefault.java:1198)
at com.sap.engine.core.configuration.impl.persistence.rdbms.UpdateProcessor.flush(UpdateProcessor.java:269)
at com.sap.engine.core.configuration.impl.cache.ConfigurationCache.commitConfigurationHandler(ConfigurationCache.java:1217)
at com.sap.engine.core.configuration.impl.ConfigurationHandlerImpl.commit(ConfigurationHandlerImpl.java:833)
at com.sap.engine.services.deploy.server.application.ApplicationTransaction.commitHandler(ApplicationTransaction.java:174)
at com.sap.engine.services.deploy.server.application.DeploymentTransaction.prepare(DeploymentTransaction.java:334)
at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesOnOneServer(ApplicationTransaction.java:299)
at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhases(ApplicationTransaction.java:321)
at com.sap.engine.services.deploy.server.DeployServiceImpl.makeGlobalTransaction(DeployServiceImpl.java:3028)
at com.sap.engine.services.deploy.server.DeployServiceImpl.deploy(DeployServiceImpl.java:462)
at com.sap.engine.services.deploy.server.DeployRuntimeControlImpl.deploy(DeployRuntimeControlImpl.java:252)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.sap.pj.jmx.introspect.DefaultMBeanInvoker.invoke(DefaultMBeanInvoker.java:58)
at com.sap.pj.jmx.mbeaninfo.AdditionalInfoProviderMBean.invoke(AdditionalInfoProviderMBean.java:289)
at com.sap.pj.jmx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:944)
at com.sap.pj.jmx.server.interceptor.MBeanServerWrapperInterceptor.invoke(MBeanServerWrapperInterceptor.java:288)
at com.sap.engine.services.jmx.CompletionInterceptor.invoke(CompletionInterceptor.java:400)
at com.sap.engine.services.jmx.RedirectInterceptor.invoke(RedirectInterceptor.java:340)
at com.sap.pj.jmx.server.interceptor.MBeanServerInterceptorChain.invoke(MBeanServerInterceptorChain.java:330)
at com.sap.engine.services.jmx.MBeanServerSecurityWrapper.invoke(MBeanServerSecurityWrapper.java:287)
at com.sap.engine.services.jmx.MBeanServerInvoker.invokeMbs(MBeanServerInvoker.java:157)
at com.sap.engine.services.jmx.ClusterInterceptor.invokeMbs(ClusterInterceptor.java:220)
at com.sap.engine.services.jmx.ClusterInterceptor.invoke(ClusterInterceptor.java:803)
at com.sap.engine.services.jmx.MBeanServerInterceptorInvoker.invokeMbs(MBeanServerInterceptorInvoker.java:102)
at com.sap.engine.services.jmx.connector.p4.P4ConnectorServerImpl.invokeMbs(P4ConnectorServerImpl.java:61)
at com.sap.engine.services.jmx.connector.p4.P4ConnectorServerImplp4_Skel.dispatch(P4ConnectorServerImplp4_Skel.java:64)
at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:292)
at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:183)
at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:118)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)
at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:162)
==========================================
I suspect it is the SQL memory problem. So I tune up the SQL memory policy to set the the upper limit from 128M to 256M, 512M, and 1024M (100% my physical memory). The problem is still there. Watching the TaskMan observed that the sql process eats the physical memory slowly and up until around the upper memory I set, and then the SQL server logs have one of the following:
Error: 17803, Severity: 20, State: ??
Insufficient memory available..
Error: 17805, Severity: 20, State: 2
Invalid buffer received from client..
17803 error occurs when the SQL upper memory limit is set to low; after increase the upper memory limit, 17805 shows. But sometime I saw 17803 also.
Thanks.
Jin