Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Null pointer error in IDACall

    We're using a fetch operation binding with customSQL and doing a server side DSRequest. This same fetch is repeated multiple times with the same criteria, but using a new DSRequest each time. The first couple of times the fetch is successful, but subsequent fetches fail with a null pointer error at line 212 in IDACall.

    Here is the log showing the two fetches without error, and a couple of instances of the error on subsequent fetches. It seems that the error occurs after the fetch completes with DSResponse: List with 1 items.
    Code:
    === 2012-06-22 09:53:29,329 [l0-5] INFO  SQLDataSource - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Performing fetch operation with
    	criteria: {productionLineId:102}	values: {productionLineId:102}
    === 2012-06-22 09:53:29,355 [l0-5] INFO  SQLDataSource - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Executing SQL query on 'iptsfili': SELECT IPFDSTD.QDES, IPFDSTD.QFDQ01, IPFDSTD.QFDQ02, IPFDSTD.QFDQ03, IPFDSTD.QFDQ04, IPFDSTD.QFDQ05, IPFDSTD.QFDQ06, IPFDSTD.QFDQ07, IPFDSTD.QFDQ08, IPFDSTD.QFDQ09, IPFDSTD.QFDQ10, IPFDSTD.QFDQ11, IPFDSTD.QFDQ12, IPFDSTD.QFDQ13, IPFDSTD.QFDQ14, '' AS QFDS01, '' AS QFDS02, '' AS QFDS03, '1' AS QFDS04, '' AS QFDS05, '' AS QFDS06, '' AS QFDS07, '1' AS QFDS08, '' AS QFDS09, '' AS QFDS10, '' AS QFDS11, '' AS QFDS12, '' AS QFDS13, '' AS QFDS14, IPFDSTD.QFDV01, IPFDSTD.QFDV02, IPFDSTD.QFDV03, IPFDSTD.QFDV04, IPFDSTD.QFDV05, IPFDSTD.QFDV06, IPFDSTD.QFDV07, IPFDSTD.QFDV08, IPFDSTD.QFDV09, IPFDSTD.QFDV10, IPFDSTD.QFDV11, IPFDSTD.QFDV12, IPFDSTD.QFDV13, IPFDSTD.QFDV14, IPFDSTD.QFDY01, IPFDSTD.QFDY02, IPFDSTD.QFDY03, IPFDSTD.QFDY04, IPFDSTD.QFDY05, IPFDSTD.QFDY06, IPFDSTD.QFDY07, IPFDSTD.QFDY08, IPFDSTD.QFDY09, IPFDSTD.QFDY10, IPFDSTD.QFDY11, IPFDSTD.QFDY12, IPFDSTD.QFDY13, IPFDSTD.QFDY14, ShippingTerms.id, ShippingTerms.incoterm, ShippingTerms.name, ShippingTerms.rateTable, ProductionOrder.exchRate as "exchRate"
    				FROM ProductionLine
    					join ProductionOrder on ProductionLine.parentId = ProductionOrder.id
    					join ShippingTerms on ProductionOrder.shipTermId = ShippingTerms.id 
    					join IPFDSTD on ShippingTerms.rateTable=IPFDSTD.QCOD
    				WHERE ProductionLine.id = 102
    === 2012-06-22 09:53:29,914 [l0-5] INFO  SQLDriver - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Executing SQL query on 'iptsfili': SELECT IPFDSTD.QDES, IPFDSTD.QFDQ01, IPFDSTD.QFDQ02, IPFDSTD.QFDQ03, IPFDSTD.QFDQ04, IPFDSTD.QFDQ05, IPFDSTD.QFDQ06, IPFDSTD.QFDQ07, IPFDSTD.QFDQ08, IPFDSTD.QFDQ09, IPFDSTD.QFDQ10, IPFDSTD.QFDQ11, IPFDSTD.QFDQ12, IPFDSTD.QFDQ13, IPFDSTD.QFDQ14, '' AS QFDS01, '' AS QFDS02, '' AS QFDS03, '1' AS QFDS04, '' AS QFDS05, '' AS QFDS06, '' AS QFDS07, '1' AS QFDS08, '' AS QFDS09, '' AS QFDS10, '' AS QFDS11, '' AS QFDS12, '' AS QFDS13, '' AS QFDS14, IPFDSTD.QFDV01, IPFDSTD.QFDV02, IPFDSTD.QFDV03, IPFDSTD.QFDV04, IPFDSTD.QFDV05, IPFDSTD.QFDV06, IPFDSTD.QFDV07, IPFDSTD.QFDV08, IPFDSTD.QFDV09, IPFDSTD.QFDV10, IPFDSTD.QFDV11, IPFDSTD.QFDV12, IPFDSTD.QFDV13, IPFDSTD.QFDV14, IPFDSTD.QFDY01, IPFDSTD.QFDY02, IPFDSTD.QFDY03, IPFDSTD.QFDY04, IPFDSTD.QFDY05, IPFDSTD.QFDY06, IPFDSTD.QFDY07, IPFDSTD.QFDY08, IPFDSTD.QFDY09, IPFDSTD.QFDY10, IPFDSTD.QFDY11, IPFDSTD.QFDY12, IPFDSTD.QFDY13, IPFDSTD.QFDY14, ShippingTerms.id, ShippingTerms.incoterm, ShippingTerms.name, ShippingTerms.rateTable, ProductionOrder.exchRate as "exchRate"
    				FROM ProductionLine
    					join ProductionOrder on ProductionLine.parentId = ProductionOrder.id
    					join ShippingTerms on ProductionOrder.shipTermId = ShippingTerms.id 
    					join IPFDSTD on ShippingTerms.rateTable=IPFDSTD.QCOD
    				WHERE ProductionLine.id = 102
    === 2012-06-22 09:53:30,363 [l0-5] INFO  DSResponse - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] DSResponse: List with 1 items
    === 2012-06-22 09:53:30,372 [l0-5] INFO  Compression - /ipgui/sc/IDACall: 251 -> 195 bytes
    === 2012-06-22 09:53:41,399 [l0-0] INFO  SQLDataSource - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Performing fetch operation with
    	criteria: {productionLineId:102}	values: {productionLineId:102}
    === 2012-06-22 09:53:41,404 [l0-0] INFO  SQLDataSource - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Executing SQL query on 'iptsfili': SELECT IPFDSTD.QDES, IPFDSTD.QFDQ01, IPFDSTD.QFDQ02, IPFDSTD.QFDQ03, IPFDSTD.QFDQ04, IPFDSTD.QFDQ05, IPFDSTD.QFDQ06, IPFDSTD.QFDQ07, IPFDSTD.QFDQ08, IPFDSTD.QFDQ09, IPFDSTD.QFDQ10, IPFDSTD.QFDQ11, IPFDSTD.QFDQ12, IPFDSTD.QFDQ13, IPFDSTD.QFDQ14, '' AS QFDS01, '' AS QFDS02, '' AS QFDS03, '1' AS QFDS04, '' AS QFDS05, '' AS QFDS06, '' AS QFDS07, '1' AS QFDS08, '' AS QFDS09, '' AS QFDS10, '' AS QFDS11, '' AS QFDS12, '' AS QFDS13, '' AS QFDS14, IPFDSTD.QFDV01, IPFDSTD.QFDV02, IPFDSTD.QFDV03, IPFDSTD.QFDV04, IPFDSTD.QFDV05, IPFDSTD.QFDV06, IPFDSTD.QFDV07, IPFDSTD.QFDV08, IPFDSTD.QFDV09, IPFDSTD.QFDV10, IPFDSTD.QFDV11, IPFDSTD.QFDV12, IPFDSTD.QFDV13, IPFDSTD.QFDV14, IPFDSTD.QFDY01, IPFDSTD.QFDY02, IPFDSTD.QFDY03, IPFDSTD.QFDY04, IPFDSTD.QFDY05, IPFDSTD.QFDY06, IPFDSTD.QFDY07, IPFDSTD.QFDY08, IPFDSTD.QFDY09, IPFDSTD.QFDY10, IPFDSTD.QFDY11, IPFDSTD.QFDY12, IPFDSTD.QFDY13, IPFDSTD.QFDY14, ShippingTerms.id, ShippingTerms.incoterm, ShippingTerms.name, ShippingTerms.rateTable, ProductionOrder.exchRate as "exchRate"
    				FROM ProductionLine
    					join ProductionOrder on ProductionLine.parentId = ProductionOrder.id
    					join ShippingTerms on ProductionOrder.shipTermId = ShippingTerms.id 
    					join IPFDSTD on ShippingTerms.rateTable=IPFDSTD.QCOD
    				WHERE ProductionLine.id = 102
    === 2012-06-22 09:53:42,025 [l0-0] INFO  SQLDriver - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Executing SQL query on 'iptsfili': SELECT IPFDSTD.QDES, IPFDSTD.QFDQ01, IPFDSTD.QFDQ02, IPFDSTD.QFDQ03, IPFDSTD.QFDQ04, IPFDSTD.QFDQ05, IPFDSTD.QFDQ06, IPFDSTD.QFDQ07, IPFDSTD.QFDQ08, IPFDSTD.QFDQ09, IPFDSTD.QFDQ10, IPFDSTD.QFDQ11, IPFDSTD.QFDQ12, IPFDSTD.QFDQ13, IPFDSTD.QFDQ14, '' AS QFDS01, '' AS QFDS02, '' AS QFDS03, '1' AS QFDS04, '' AS QFDS05, '' AS QFDS06, '' AS QFDS07, '1' AS QFDS08, '' AS QFDS09, '' AS QFDS10, '' AS QFDS11, '' AS QFDS12, '' AS QFDS13, '' AS QFDS14, IPFDSTD.QFDV01, IPFDSTD.QFDV02, IPFDSTD.QFDV03, IPFDSTD.QFDV04, IPFDSTD.QFDV05, IPFDSTD.QFDV06, IPFDSTD.QFDV07, IPFDSTD.QFDV08, IPFDSTD.QFDV09, IPFDSTD.QFDV10, IPFDSTD.QFDV11, IPFDSTD.QFDV12, IPFDSTD.QFDV13, IPFDSTD.QFDV14, IPFDSTD.QFDY01, IPFDSTD.QFDY02, IPFDSTD.QFDY03, IPFDSTD.QFDY04, IPFDSTD.QFDY05, IPFDSTD.QFDY06, IPFDSTD.QFDY07, IPFDSTD.QFDY08, IPFDSTD.QFDY09, IPFDSTD.QFDY10, IPFDSTD.QFDY11, IPFDSTD.QFDY12, IPFDSTD.QFDY13, IPFDSTD.QFDY14, ShippingTerms.id, ShippingTerms.incoterm, ShippingTerms.name, ShippingTerms.rateTable, ProductionOrder.exchRate as "exchRate"
    				FROM ProductionLine
    					join ProductionOrder on ProductionLine.parentId = ProductionOrder.id
    					join ShippingTerms on ProductionOrder.shipTermId = ShippingTerms.id 
    					join IPFDSTD on ShippingTerms.rateTable=IPFDSTD.QCOD
    				WHERE ProductionLine.id = 102
    === 2012-06-22 09:53:42,477 [l0-0] INFO  DSResponse - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] DSResponse: List with 1 items
    === 2012-06-22 09:53:45,697 [l0-8] INFO  SQLDataSource - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Performing fetch operation with
    	criteria: {productionLineId:102}	values: {productionLineId:102}
    === 2012-06-22 09:53:45,704 [l0-8] INFO  SQLDataSource - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Executing SQL query on 'iptsfili': SELECT IPFDSTD.QDES, IPFDSTD.QFDQ01, IPFDSTD.QFDQ02, IPFDSTD.QFDQ03, IPFDSTD.QFDQ04, IPFDSTD.QFDQ05, IPFDSTD.QFDQ06, IPFDSTD.QFDQ07, IPFDSTD.QFDQ08, IPFDSTD.QFDQ09, IPFDSTD.QFDQ10, IPFDSTD.QFDQ11, IPFDSTD.QFDQ12, IPFDSTD.QFDQ13, IPFDSTD.QFDQ14, '' AS QFDS01, '' AS QFDS02, '' AS QFDS03, '1' AS QFDS04, '' AS QFDS05, '' AS QFDS06, '' AS QFDS07, '1' AS QFDS08, '' AS QFDS09, '' AS QFDS10, '' AS QFDS11, '' AS QFDS12, '' AS QFDS13, '' AS QFDS14, IPFDSTD.QFDV01, IPFDSTD.QFDV02, IPFDSTD.QFDV03, IPFDSTD.QFDV04, IPFDSTD.QFDV05, IPFDSTD.QFDV06, IPFDSTD.QFDV07, IPFDSTD.QFDV08, IPFDSTD.QFDV09, IPFDSTD.QFDV10, IPFDSTD.QFDV11, IPFDSTD.QFDV12, IPFDSTD.QFDV13, IPFDSTD.QFDV14, IPFDSTD.QFDY01, IPFDSTD.QFDY02, IPFDSTD.QFDY03, IPFDSTD.QFDY04, IPFDSTD.QFDY05, IPFDSTD.QFDY06, IPFDSTD.QFDY07, IPFDSTD.QFDY08, IPFDSTD.QFDY09, IPFDSTD.QFDY10, IPFDSTD.QFDY11, IPFDSTD.QFDY12, IPFDSTD.QFDY13, IPFDSTD.QFDY14, ShippingTerms.id, ShippingTerms.incoterm, ShippingTerms.name, ShippingTerms.rateTable, ProductionOrder.exchRate as "exchRate"
    				FROM ProductionLine
    					join ProductionOrder on ProductionLine.parentId = ProductionOrder.id
    					join ShippingTerms on ProductionOrder.shipTermId = ShippingTerms.id 
    					join IPFDSTD on ShippingTerms.rateTable=IPFDSTD.QCOD
    				WHERE ProductionLine.id = 102
    === 2012-06-22 09:53:46,300 [l0-8] INFO  SQLDriver - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Executing SQL query on 'iptsfili': SELECT IPFDSTD.QDES, IPFDSTD.QFDQ01, IPFDSTD.QFDQ02, IPFDSTD.QFDQ03, IPFDSTD.QFDQ04, IPFDSTD.QFDQ05, IPFDSTD.QFDQ06, IPFDSTD.QFDQ07, IPFDSTD.QFDQ08, IPFDSTD.QFDQ09, IPFDSTD.QFDQ10, IPFDSTD.QFDQ11, IPFDSTD.QFDQ12, IPFDSTD.QFDQ13, IPFDSTD.QFDQ14, '' AS QFDS01, '' AS QFDS02, '' AS QFDS03, '1' AS QFDS04, '' AS QFDS05, '' AS QFDS06, '' AS QFDS07, '1' AS QFDS08, '' AS QFDS09, '' AS QFDS10, '' AS QFDS11, '' AS QFDS12, '' AS QFDS13, '' AS QFDS14, IPFDSTD.QFDV01, IPFDSTD.QFDV02, IPFDSTD.QFDV03, IPFDSTD.QFDV04, IPFDSTD.QFDV05, IPFDSTD.QFDV06, IPFDSTD.QFDV07, IPFDSTD.QFDV08, IPFDSTD.QFDV09, IPFDSTD.QFDV10, IPFDSTD.QFDV11, IPFDSTD.QFDV12, IPFDSTD.QFDV13, IPFDSTD.QFDV14, IPFDSTD.QFDY01, IPFDSTD.QFDY02, IPFDSTD.QFDY03, IPFDSTD.QFDY04, IPFDSTD.QFDY05, IPFDSTD.QFDY06, IPFDSTD.QFDY07, IPFDSTD.QFDY08, IPFDSTD.QFDY09, IPFDSTD.QFDY10, IPFDSTD.QFDY11, IPFDSTD.QFDY12, IPFDSTD.QFDY13, IPFDSTD.QFDY14, ShippingTerms.id, ShippingTerms.incoterm, ShippingTerms.name, ShippingTerms.rateTable, ProductionOrder.exchRate as "exchRate"
    				FROM ProductionLine
    					join ProductionOrder on ProductionLine.parentId = ProductionOrder.id
    					join ShippingTerms on ProductionOrder.shipTermId = ShippingTerms.id 
    					join IPFDSTD on ShippingTerms.rateTable=IPFDSTD.QCOD
    				WHERE ProductionLine.id = 102
    === 2012-06-22 09:53:46,742 [l0-8] INFO  DSResponse - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] DSResponse: List with 1 items
    === 2012-06-22 09:53:46,745 [l0-8] WARN  RequestContext - dsRequest.execute() failed: 
    java.lang.NullPointerException
    	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:212)
    	at com.islandpacific.gui.server.customDataSource.IpIDACall.handleDSRequest(IpIDACall.java:70)
    	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:156)
    	at com.islandpacific.gui.server.customDataSource.IpIDACall.processRPCTransaction(IpIDACall.java:41)
    	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:121)
    	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:73)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
    	at com.islandpacific.gui.server.GWTCacheControlFilter.doFilter(GWTCacheControlFilter.java:44)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
    	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
    	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at com.islandpacific.gui.security.IpConcurrentSessionFilter.doFilter(IpConcurrentSessionFilter.java:55)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
    	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
    	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    	at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:324)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
    === 2012-06-22 09:53:46,750 [l0-8] INFO  Compression - /ipgui/sc/IDACall: 123 -> 113 bytes
    === 2012-06-22 09:56:14,630 [l0-9] INFO  SQLDataSource - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Performing fetch operation with
    	criteria: {productionLineId:102}	values: {productionLineId:102}
    === 2012-06-22 09:56:14,648 [l0-9] INFO  SQLDataSource - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Executing SQL query on 'iptsfili': SELECT IPFDSTD.QDES, IPFDSTD.QFDQ01, IPFDSTD.QFDQ02, IPFDSTD.QFDQ03, IPFDSTD.QFDQ04, IPFDSTD.QFDQ05, IPFDSTD.QFDQ06, IPFDSTD.QFDQ07, IPFDSTD.QFDQ08, IPFDSTD.QFDQ09, IPFDSTD.QFDQ10, IPFDSTD.QFDQ11, IPFDSTD.QFDQ12, IPFDSTD.QFDQ13, IPFDSTD.QFDQ14, '' AS QFDS01, '' AS QFDS02, '' AS QFDS03, '1' AS QFDS04, '' AS QFDS05, '' AS QFDS06, '' AS QFDS07, '1' AS QFDS08, '' AS QFDS09, '' AS QFDS10, '' AS QFDS11, '' AS QFDS12, '' AS QFDS13, '' AS QFDS14, IPFDSTD.QFDV01, IPFDSTD.QFDV02, IPFDSTD.QFDV03, IPFDSTD.QFDV04, IPFDSTD.QFDV05, IPFDSTD.QFDV06, IPFDSTD.QFDV07, IPFDSTD.QFDV08, IPFDSTD.QFDV09, IPFDSTD.QFDV10, IPFDSTD.QFDV11, IPFDSTD.QFDV12, IPFDSTD.QFDV13, IPFDSTD.QFDV14, IPFDSTD.QFDY01, IPFDSTD.QFDY02, IPFDSTD.QFDY03, IPFDSTD.QFDY04, IPFDSTD.QFDY05, IPFDSTD.QFDY06, IPFDSTD.QFDY07, IPFDSTD.QFDY08, IPFDSTD.QFDY09, IPFDSTD.QFDY10, IPFDSTD.QFDY11, IPFDSTD.QFDY12, IPFDSTD.QFDY13, IPFDSTD.QFDY14, ShippingTerms.id, ShippingTerms.incoterm, ShippingTerms.name, ShippingTerms.rateTable, ProductionOrder.exchRate as "exchRate"
    				FROM ProductionLine
    					join ProductionOrder on ProductionLine.parentId = ProductionOrder.id
    					join ShippingTerms on ProductionOrder.shipTermId = ShippingTerms.id 
    					join IPFDSTD on ShippingTerms.rateTable=IPFDSTD.QCOD
    				WHERE ProductionLine.id = 102
    === 2012-06-22 09:56:15,306 [l0-9] INFO  SQLDriver - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] Executing SQL query on 'iptsfili': SELECT IPFDSTD.QDES, IPFDSTD.QFDQ01, IPFDSTD.QFDQ02, IPFDSTD.QFDQ03, IPFDSTD.QFDQ04, IPFDSTD.QFDQ05, IPFDSTD.QFDQ06, IPFDSTD.QFDQ07, IPFDSTD.QFDQ08, IPFDSTD.QFDQ09, IPFDSTD.QFDQ10, IPFDSTD.QFDQ11, IPFDSTD.QFDQ12, IPFDSTD.QFDQ13, IPFDSTD.QFDQ14, '' AS QFDS01, '' AS QFDS02, '' AS QFDS03, '1' AS QFDS04, '' AS QFDS05, '' AS QFDS06, '' AS QFDS07, '1' AS QFDS08, '' AS QFDS09, '' AS QFDS10, '' AS QFDS11, '' AS QFDS12, '' AS QFDS13, '' AS QFDS14, IPFDSTD.QFDV01, IPFDSTD.QFDV02, IPFDSTD.QFDV03, IPFDSTD.QFDV04, IPFDSTD.QFDV05, IPFDSTD.QFDV06, IPFDSTD.QFDV07, IPFDSTD.QFDV08, IPFDSTD.QFDV09, IPFDSTD.QFDV10, IPFDSTD.QFDV11, IPFDSTD.QFDV12, IPFDSTD.QFDV13, IPFDSTD.QFDV14, IPFDSTD.QFDY01, IPFDSTD.QFDY02, IPFDSTD.QFDY03, IPFDSTD.QFDY04, IPFDSTD.QFDY05, IPFDSTD.QFDY06, IPFDSTD.QFDY07, IPFDSTD.QFDY08, IPFDSTD.QFDY09, IPFDSTD.QFDY10, IPFDSTD.QFDY11, IPFDSTD.QFDY12, IPFDSTD.QFDY13, IPFDSTD.QFDY14, ShippingTerms.id, ShippingTerms.incoterm, ShippingTerms.name, ShippingTerms.rateTable, ProductionOrder.exchRate as "exchRate"
    				FROM ProductionLine
    					join ProductionOrder on ProductionLine.parentId = ProductionOrder.id
    					join ShippingTerms on ProductionOrder.shipTermId = ShippingTerms.id 
    					join IPFDSTD on ShippingTerms.rateTable=IPFDSTD.QCOD
    				WHERE ProductionLine.id = 102
    === 2012-06-22 09:56:16,175 [l0-9] INFO  DSResponse - [builtinApplication.ProductionLineCosts_update, builtinApplication.forProductionLine] DSResponse: List with 1 items
    === 2012-06-22 09:56:16,178 [l0-9] WARN  RequestContext - dsRequest.execute() failed: 
    java.lang.NullPointerException
    	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:212)
    	at com.islandpacific.gui.server.customDataSource.IpIDACall.handleDSRequest(IpIDACall.java:70)
    	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:156)
    	at com.islandpacific.gui.server.customDataSource.IpIDACall.processRPCTransaction(IpIDACall.java:41)
    	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:121)
    	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:73)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
    	at com.islandpacific.gui.server.GWTCacheControlFilter.doFilter(GWTCacheControlFilter.java:44)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
    	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
    	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at com.islandpacific.gui.security.IpConcurrentSessionFilter.doFilter(IpConcurrentSessionFilter.java:55)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
    	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
    	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
    	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    	at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:324)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
    === 2012-06-22 09:56:16,182 [l0-9] INFO  Compression - /ipgui/sc/IDACall: 123 -> 113 bytes

    #2
    Line 212 is a comment in the latest code. Please update to the latest and if this still occurs, please show the new stack.

    Comment


      #3
      Sorry. I should have stated the version we're running. SmartClient Version: v8.2p_2012-06-08/PowerEdition Deployment (built 2012-06-08)

      Comment


        #4
        That line is in a catch block:

        212: if (e.toString() != null && !e.toString().equals("") &&
        The only way we can see this happening is if an Exception has been thrown where, if toString() is called more than once, the second time null is returned.

        This is actually plausible - we've seen worse (this line was introduced because e.toString() can return empty string for some Oracle exceptions). We'll change the line to ensure toString() is called only once and let you know when that's committed so you can check it out.

        However, by adding a DMI to the SQL operation with a try..catch() around dsRequest.execute(), you can probably catch the Exception at an earlier stage and see what it is.

        Comment


          #5
          Thanks! I was able to add the try/catch block and get to the root of the problem.

          Comment


            #6
            Are you able to confirm that the Exception object returns null if toString() is called twice? It would be great to know this for sure, as well as what Exception does this, just for our notes / comments. We're guessing it's something from DB2.

            Comment


              #7
              It actually had nothing to do with that DSRequest or with the jdbc response, both of which worked fine. When I looked at the Exception object in debug it just showed cause=NullPointerException. detailMessage and stackTrace are both null.

              Some other code in the same DMI that was processing the request had an if condition that was casting the results of a Map.get() as a Boolean and not checking for null. When I fixed that the problem went away.

              When I put the try/catch block in place and caught the error calling printStackTrace() on the Exception gave me the stack I was looking for.
              Code:
              === 2012-06-22 13:29:00,603 [l0-4] INFO  SQLDriver - [builtinApplication.ProductionLineCosts_update, builtinApplication.forBatchJob] Executing SQL update on 'iptsfili': UPDATE ProductionDestination SET landedCost='13.1309' WHERE (ProductionDestination.id='616')
              java.lang.NullPointerException
              	at com.islandpacific.gui.server.purchasing.productionorder.ProductionLineCostsDS.destinationIsReceivedOrClosed(ProductionLineCostsDS.java:125)
              	at com.islandpacific.gui.server.purchasing.productionorder.ProductionLineCostsDS.cascadeChanges(ProductionLineCostsDS.java:81)
              	at com.islandpacific.gui.server.purchasing.productionorder.ProductionLineCostsDS.executeUpdate(ProductionLineCostsDS.java:48)
              	at com.isomorphic.datasource.DataSource.execute(DataSource.java:1295)
              	at com.islandpacific.gui.server.customDataSource.IpDataSource.execute(IpDataSource.java:174)
              	at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:725)
              	at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
              	at com.isomorphic.application.AppBase.execute(AppBase.java:491)
              	at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1954)
              	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:199)
              	at com.islandpacific.gui.server.customDataSource.IpIDACall.handleDSRequest(IpIDACall.java:70)
              	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:156)
              	at com.islandpacific.gui.server.customDataSource.IpIDACall.processRPCTransaction(IpIDACall.java:41)
              	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:121)
              	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:73)
              	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
              	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
              	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
              	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
              	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
              	at com.islandpacific.gui.server.GWTCacheControlFilter.doFilter(GWTCacheControlFilter.java:44)
              	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
              	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
              	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
              	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
              	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
              	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
              	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
              	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
              	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
              	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
              	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
              	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
              	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
              	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
              	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
              	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
              	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
              	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
              	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
              	at com.islandpacific.gui.security.IpConcurrentSessionFilter.doFilter(IpConcurrentSessionFilter.java:55)
              	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
              	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
              	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
              	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
              	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
              	at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
              	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
              	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
              	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
              	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
              	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
              	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
              	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
              	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
              	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
              	at org.mortbay.jetty.Server.handle(Server.java:324)
              	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
              	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
              	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
              	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
              	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
              	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
              	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

              Comment


                #8
                Just a note that we have now added code that should deal with your strange exception as well, regardless of whether the problem is calling toString() twice or something to do with the null stack trace. This change will be presented in 3.0p builds from tomorrow on, it would be great if you could confirm.

                Comment

                Working...
                X