dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #47321
Re: Pivot table and analytics
Hi there
Just resurrecting this one....maybe it's been fixed in 2.24 / 2.25?
Thanks
Alan
On Wed, Sep 21, 2016 at 12:19 PM, Alan Hill <ahill@xxxxxxxxxx> wrote:
> Hi there
>
> We're having a small issue in 2.23 with the Pivot Table.
>
> We create our metadata for programs and program stages and then import
> data through our custom import app using the web API.
>
> Then if we go into Pivot Table for the Program / Event Data Items and
> click 'Update', the page hangs with 'Loading...' We get the error below
> in our Tomcat logs:
>
> * INFO 2016-09-21 11:46:46,715 'admin' create org.hisp.dhis.program.ProgramDataElement,
> name: MALAWI 2010 (6) MALAWI 2010 (6) WM - ever participated in a literacy
> program outside of primary, uid: BKGvXg1sV5l (AuditLogUtil.java
> [qtp219396780-43])
> ** INFO 2016-09-21 11:46:46,727 'admin' create
> org.hisp.dhis.program.ProgramDataElement, name: MALAWI 2010 (6) MALAWI 2010
> (6) BR - Intermittent preventive treatment for malaria during pregnancy,
> uid: R3XNjq83Was (AuditLogUtil.java [qtp219396780-15])*
> ** INFO 2016-09-21 11:46:46,727 'admin' create
> org.hisp.dhis.program.ProgramDataElement, name: MALAWI 2010 (6) MALAWI 2010
> (6) BR - Intermittent preventive treatment for malaria during pregnancy,
> uid: e6bsk7HlMFZ (AuditLogUtil.java [qtp219396780-43])*
> * INFO 2016-09-21 11:46:46,740 'admin' create org.hisp.dhis.program.ProgramDataElement,
> name: MALAWI 2010 (6) MALAWI 2010 (6) BR - month of birth, uid: gJ23iAx6HVg
> (AuditLogUtil.java [qtp219396780-15])
> * WARN 2016-09-21 11:46:46,740 SQL Error: 0, SQLState: 23505
> (SqlExceptionHelper.java [qtp219396780-43])
> ** ERROR 2016-09-21 11:46:46,741 ERROR: duplicate key value violates
> unique constraint "programdataelement_unique_key"*
> * Detail: Key (programid, dataelementid)=(12372, 13027) already exists.
> (SqlExceptionHelper.java [qtp219396780-43])*
> 2016-09-21 11:46:46.770:WARN:oejs.ServletHandler:qtp219396780-43:
> org.springframework.web.util.NestedServletException: Request processing
> failed; nested exception is org.springframework.dao.
> DataIntegrityViolationException: could not execute statement; SQL [n/a];
> constraint [programdataelement_unique_key]; nested exception is
> org.hibernate.exception.ConstraintViolationException: could not execute
> statement
> at org.springframework.web.servlet.FrameworkServlet.processRequest(
> FrameworkServlet.java:980)
> at org.springframework.web.servlet.FrameworkServlet.
> doGet(FrameworkServlet.java:859)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
> at org.springframework.web.servlet.FrameworkServlet.
> service(FrameworkServlet.java:844)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:800)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1669)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> at org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
> at org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.access.ExceptionTranslationFilter.
> doFilter(ExceptionTranslationFilter.java:113)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.session.SessionManagementFilter.
> doFilter(SessionManagementFilter.java:103)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.
> java:113)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.servletapi.
> SecurityContextHolderAwareRequestFilter.doFilter(
> SecurityContextHolderAwareRequestFilter.java:154)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.
> doFilter(RequestCacheAwareFilter.java:45)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.www.
> BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:90)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AbstractAuthenticationProcessingFilter.doFilter(
> AbstractAuthenticationProcessingFilter.java:199)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AbstractAuthenticationProcessingFilter.doFilter(
> AbstractAuthenticationProcessingFilter.java:199)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.CustomAuthenticationFilter.doFilter(
> CustomAuthenticationFilter.java:64)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.oauth2.provider.authentication.
> OAuth2AuthenticationProcessingFilter.doFilter(
> OAuth2AuthenticationProcessingFilter.java:140)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.logout.
> LogoutFilter.doFilter(LogoutFilter.java:110)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(
> AutomaticAccessFilter.java:115)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.header.HeaderWriterFilter.
> doFilterInternal(HeaderWriterFilter.java:57)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.context.request.async.
> WebAsyncManagerIntegrationFilter.doFilterInternal(
> WebAsyncManagerIntegrationFilter.java:50)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.context.SecurityContextPersistenceFilt
> er.doFilter(SecurityContextPersistenceFilter.java:87)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.FilterChainProxy.doFilterInternal(
> FilterChainProxy.java:192)
> at org.springframework.security.web.FilterChainProxy.doFilter(
> FilterChainProxy.java:160)
> at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(
> DelegatingFilterProxy.java:346)
> at org.springframework.web.filter.DelegatingFilterProxy.doFilter(
> DelegatingFilterProxy.java:262)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.web.filter.ShallowEtagHeaderFilter.
> doFilterInternal(ShallowEtagHeaderFilter.java:87)
> at org.hisp.dhis.servlet.filter.ExcludableShallowEtagHeaderFil
> ter.doFilterInternal(ExcludableShallowEtagHeaderFilter.java:102)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.
> doFilterInternal(OpenSessionInViewFilter.java:151)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.web.filter.CharacterEncodingFilter.
> doFilterInternal(CharacterEncodingFilter.java:121)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(
> ServletHandler.java:585)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:143)
> at org.eclipse.jetty.security.SecurityHandler.handle(
> SecurityHandler.java:577)
> at org.eclipse.jetty.server.session.SessionHandler.
> doHandle(SessionHandler.java:223)
> at org.eclipse.jetty.server.handler.ContextHandler.
> doHandle(ContextHandler.java:1127)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(
> ServletHandler.java:515)
> at org.eclipse.jetty.server.session.SessionHandler.
> doScope(SessionHandler.java:185)
> at org.eclipse.jetty.server.handler.ContextHandler.
> doScope(ContextHandler.java:1061)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:141)
> at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(
> ContextHandlerCollection.java:215)
> at org.eclipse.jetty.server.handler.HandlerCollection.
> handle(HandlerCollection.java:110)
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:97)
> at org.eclipse.jetty.server.Server.handle(Server.java:497)
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
> at org.eclipse.jetty.server.HttpConnection.onFillable(
> HttpConnection.java:245)
> at org.eclipse.jetty.io.AbstractConnection$2.run(
> AbstractConnection.java:540)
> * INFO 2016-09-21 11:46:46,813 'admin' create org.hisp.dhis.program.ProgramDataElement,
> name: MALAWI 2010 (6) MALAWI 2010 (6) BR - ORS for diarrhea, uid:
> ZR6t6HZO5bJ (AuditLogUtil.java [qtp219396780-15])
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
> QueuedThreadPool.java:635)
> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(
> QueuedThreadPool.java:555)
> at java.lang.Thread.run(Thread.java:745)
> Caused by:
> org.springframework.dao.DataIntegrityViolationException: could not
> execute statement; SQL [n/a]; constraint [programdataelement_unique_key];
> nested exception is org.hibernate.exception.ConstraintViolationException:
> could not execute statement
> at org.springframework.orm.hibernate4.SessionFactoryUtils.
> convertHibernateAccessException(SessionFactoryUtils.java:163)
> at org.springframework.orm.hibernate4.HibernateTransactionManager.
> convertHibernateAccessException(HibernateTransactionManager.java:730)
> at org.springframework.orm.hibernate4.HibernateTransactionManager.
> doCommit(HibernateTransactionManager.java:592)
> at org.springframework.transaction.support.AbstractPlatformTransactionMan
> ager.processCommit(AbstractPlatformTransactionManager.java:761)
> at org.springframework.transaction.support.AbstractPlatformTransactionMan
> ager.commit(AbstractPlatformTransactionManager.java:730)
> at org.springframework.transaction.interceptor.TransactionAspectSupport.
> commitTransactionAfterReturning(TransactionAspectSupport.java:485)
> at org.springframework.transaction.interceptor.TransactionAspectSupport.
> invokeWithinTransaction(TransactionAspectSupport.java:291)
> at org.springframework.transaction.interceptor.
> TransactionInterceptor.invoke(TransactionInterceptor.java:96)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(
> ExposeInvocationInterceptor.java:92)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> at org.springframework.aop.framework.JdkDynamicAopProxy.
> invoke(JdkDynamicAopProxy.java:208)
> at com.sun.proxy.$Proxy55.getOrAddProgramDataElement(Unknown Source)
> at org.hisp.dhis.dimension.DefaultDimensionService.
> getOrAddDataDimensionalItemObject(DefaultDimensionService.java:355)
> at org.hisp.dhis.analytics.data.DefaultDataQueryService.getDimension(
> DefaultDataQueryService.java:256)
> at org.hisp.dhis.analytics.data.DefaultDataQueryService.
> getDimensionalObjects(DefaultDataQueryService.java:209)
> at org.hisp.dhis.analytics.data.DefaultDataQueryService.getFromUrl(
> DefaultDataQueryService.java:130)
> at org.hisp.dhis.webapi.controller.AnalyticsController.getJson(
> AnalyticsController.java:108)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(
> InvocableHandlerMethod.java:221)
> at org.springframework.web.method.support.InvocableHandlerMethod.
> invokeForRequest(InvocableHandlerMethod.java:136)
> at org.springframework.web.servlet.mvc.method.annotation.
> ServletInvocableHandlerMethod.invokeAndHandle(
> ServletInvocableHandlerMethod.java:110)
> at org.springframework.web.servlet.mvc.method.annotation.
> RequestMappingHandlerAdapter.invokeHandlerMethod(
> RequestMappingHandlerAdapter.java:817)
> at org.springframework.web.servlet.mvc.method.annotation.
> RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.
> java:731)
> at org.springframework.web.servlet.mvc.method.
> AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
> at org.springframework.web.servlet.DispatcherServlet.
> doDispatch(DispatcherServlet.java:959)
> at org.springframework.web.servlet.DispatcherServlet.
> doService(DispatcherServlet.java:893)
> at org.springframework.web.servlet.FrameworkServlet.processRequest(
> FrameworkServlet.java:968)
> at org.springframework.web.servlet.FrameworkServlet.
> doGet(FrameworkServlet.java:859)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
> at org.springframework.web.servlet.FrameworkServlet.
> service(FrameworkServlet.java:844)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:800)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1669)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> at org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
> at org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.access.ExceptionTranslationFilter.
> doFilter(ExceptionTranslationFilter.java:113)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.session.SessionManagementFilter.
> doFilter(SessionManagementFilter.java:103)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.
> java:113)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.servletapi.
> SecurityContextHolderAwareRequestFilter.doFilter(
> SecurityContextHolderAwareRequestFilter.java:154)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.
> doFilter(RequestCacheAwareFilter.java:45)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.www.
> BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:90)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AbstractAuthenticationProcessingFilter.doFilter(
> AbstractAuthenticationProcessingFilter.java:199)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AbstractAuthenticationProcessingFilter.doFilter(
> AbstractAuthenticationProcessingFilter.java:199)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.CustomAuthenticationFilter.doFilter(
> CustomAuthenticationFilter.java:64)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.oauth2.provider.authentication.
> OAuth2AuthenticationProcessingFilter.doFilter(
> OAuth2AuthenticationProcessingFilter.java:140)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.logout.
> LogoutFilter.doFilter(LogoutFilter.java:110)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(
> AutomaticAccessFilter.java:115)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.header.HeaderWriterFilter.
> doFilterInternal(HeaderWriterFilter.java:57)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.context.request.async.
> WebAsyncManagerIntegrationFilter.doFilterInternal(
> WebAsyncManagerIntegrationFilter.java:50)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.context.SecurityContextPersistenceFilt
> er.doFilter(SecurityContextPersistenceFilter.java:87)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.FilterChainProxy.doFilterInternal(
> FilterChainProxy.java:192)
> at org.springframework.security.web.FilterChainProxy.doFilter(
> FilterChainProxy.java:160)
> at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(
> DelegatingFilterProxy.java:346)
> at org.springframework.web.filter.DelegatingFilterProxy.doFilter(
> DelegatingFilterProxy.java:262)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.web.filter.ShallowEtagHeaderFilter.
> doFilterInternal(ShallowEtagHeaderFilter.java:87)
> at org.hisp.dhis.servlet.filter.ExcludableShallowEtagHeaderFil
> ter.doFilterInternal(ExcludableShallowEtagHeaderFilter.java:102)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.
> doFilterInternal(OpenSessionInViewFilter.java:151)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.web.filter.CharacterEncodingFilter.
> doFilterInternal(CharacterEncodingFilter.java:121)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(
> ServletHandler.java:585)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:143)
> at org.eclipse.jetty.security.SecurityHandler.handle(
> SecurityHandler.java:577)
> at org.eclipse.jetty.server.session.SessionHandler.
> doHandle(SessionHandler.java:223)
> at org.eclipse.jetty.server.handler.ContextHandler.
> doHandle(ContextHandler.java:1127)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(
> ServletHandler.java:515)
> at org.eclipse.jetty.server.session.SessionHandler.
> doScope(SessionHandler.java:185)
> at org.eclipse.jetty.server.handler.ContextHandler.
> doScope(ContextHandler.java:1061)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:141)
> at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(
> ContextHandlerCollection.java:215)
> at org.eclipse.jetty.server.handler.HandlerCollection.
> handle(HandlerCollection.java:110)
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:97)
> at org.eclipse.jetty.server.Server.handle(Server.java:497)
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
> at org.eclipse.jetty.server.HttpConnection.onFillable(
> HttpConnection.java:245)
> at org.eclipse.jetty.io.AbstractConnection$2.run(
> AbstractConnection.java:540)
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
> QueuedThreadPool.java:635)
> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(
> QueuedThreadPool.java:555)
> at java.lang.Thread.run(Thread.java:745)
> Caused by:
> org.hibernate.exception.ConstraintViolationException: could not execute
> statement
> at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(
> SQLStateConversionDelegate.java:129)
> at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(
> StandardSQLExceptionConverter.java:49)
> at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(
> SqlExceptionHelper.java:124)
> at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(
> SqlExceptionHelper.java:109)
> at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(
> ResultSetReturnImpl.java:189)
> at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(
> NonBatchingBatch.java:59)
> at org.hibernate.persister.entity.AbstractEntityPersister.insert(
> AbstractEntityPersister.java:3079)
> at org.hibernate.persister.entity.AbstractEntityPersister.insert(
> AbstractEntityPersister.java:3521)
> at org.hibernate.action.internal.EntityInsertAction.execute(
> EntityInsertAction.java:88)
> at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:395)
> at org.hibernate.engine.spi.ActionQueue.executeActions(
> ActionQueue.java:387)
> at org.hibernate.engine.spi.ActionQueue.executeActions(
> ActionQueue.java:303)
> at org.hibernate.event.internal.AbstractFlushingEventListener.
> performExecutions(AbstractFlushingEventListener.java:349)
> at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(
> DefaultFlushEventListener.java:56)
> at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1195)
> at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
> at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.
> beforeTransactionCommit(JdbcTransaction.java:101)
> at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(
> AbstractTransactionImpl.java:175)
> at org.springframework.orm.hibernate4.HibernateTransactionManager.
> doCommit(HibernateTransactionManager.java:584)
> at org.springframework.transaction.support.AbstractPlatformTransactionMan
> ager.processCommit(AbstractPlatformTransactionManager.java:761)
> at org.springframework.transaction.support.AbstractPlatformTransactionMan
> ager.commit(AbstractPlatformTransactionManager.java:730)
> at org.springframework.transaction.interceptor.TransactionAspectSupport.
> commitTransactionAfterReturning(TransactionAspectSupport.java:485)
> at org.springframework.transaction.interceptor.TransactionAspectSupport.
> invokeWithinTransaction(TransactionAspectSupport.java:291)
> at org.springframework.transaction.interceptor.
> TransactionInterceptor.invoke(TransactionInterceptor.java:96)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(
> ExposeInvocationInterceptor.java:92)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> at org.springframework.aop.framework.JdkDynamicAopProxy.
> invoke(JdkDynamicAopProxy.java:208)
> at com.sun.proxy.$Proxy55.getOrAddProgramDataElement(Unknown Source)
> at org.hisp.dhis.dimension.DefaultDimensionService.
> getOrAddDataDimensionalItemObject(DefaultDimensionService.java:355)
> at org.hisp.dhis.analytics.data.DefaultDataQueryService.getDimension(
> DefaultDataQueryService.java:256)
> at org.hisp.dhis.analytics.data.DefaultDataQueryService.
> getDimensionalObjects(DefaultDataQueryService.java:209)
> at org.hisp.dhis.analytics.data.DefaultDataQueryService.getFromUrl(
> DefaultDataQueryService.java:130)
> at org.hisp.dhis.webapi.controller.AnalyticsController.getJson(
> AnalyticsController.java:108)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(
> InvocableHandlerMethod.java:221)
> at org.springframework.web.method.support.InvocableHandlerMethod.
> invokeForRequest(InvocableHandlerMethod.java:136)
> at org.springframework.web.servlet.mvc.method.annotation.
> ServletInvocableHandlerMethod.invokeAndHandle(
> ServletInvocableHandlerMethod.java:110)
> at org.springframework.web.servlet.mvc.method.annotation.
> RequestMappingHandlerAdapter.invokeHandlerMethod(
> RequestMappingHandlerAdapter.java:817)
> at org.springframework.web.servlet.mvc.method.annotation.
> RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.
> java:731)
> at org.springframework.web.servlet.mvc.method.
> AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
> at org.springframework.web.servlet.DispatcherServlet.
> doDispatch(DispatcherServlet.java:959)
> at org.springframework.web.servlet.DispatcherServlet.
> doService(DispatcherServlet.java:893)
> at org.springframework.web.servlet.FrameworkServlet.processRequest(
> FrameworkServlet.java:968)
> at org.springframework.web.servlet.FrameworkServlet.
> doGet(FrameworkServlet.java:859)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
> at org.springframework.web.servlet.FrameworkServlet.
> service(FrameworkServlet.java:844)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:800)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1669)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> at org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
> at org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.access.ExceptionTranslationFilter.
> doFilter(ExceptionTranslationFilter.java:113)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.session.SessionManagementFilter.
> doFilter(SessionManagementFilter.java:103)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.
> java:113)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.servletapi.
> SecurityContextHolderAwareRequestFilter.doFilter(
> SecurityContextHolderAwareRequestFilter.java:154)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.
> doFilter(RequestCacheAwareFilter.java:45)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.www.
> BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:90)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AbstractAuthenticationProcessingFilter.doFilter(
> AbstractAuthenticationProcessingFilter.java:199)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AbstractAuthenticationProcessingFilter.doFilter(
> AbstractAuthenticationProcessingFilter.java:199)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.CustomAuthenticationFilter.doFilter(
> CustomAuthenticationFilter.java:64)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.oauth2.provider.authentication.
> OAuth2AuthenticationProcessingFilter.doFilter(
> OAuth2AuthenticationProcessingFilter.java:140)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.logout.
> LogoutFilter.doFilter(LogoutFilter.java:110)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(
> AutomaticAccessFilter.java:115)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.header.HeaderWriterFilter.
> doFilterInternal(HeaderWriterFilter.java:57)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.context.request.async.
> WebAsyncManagerIntegrationFilter.doFilterInternal(
> WebAsyncManagerIntegrationFilter.java:50)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.context.SecurityContextPersistenceFilt
> er.doFilter(SecurityContextPersistenceFilter.java:87)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.FilterChainProxy.doFilterInternal(
> FilterChainProxy.java:192)
> at org.springframework.security.web.FilterChainProxy.doFilter(
> FilterChainProxy.java:160)
> at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(
> DelegatingFilterProxy.java:346)
> at org.springframework.web.filter.DelegatingFilterProxy.doFilter(
> DelegatingFilterProxy.java:262)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.web.filter.ShallowEtagHeaderFilter.
> doFilterInternal(ShallowEtagHeaderFilter.java:87)
> at org.hisp.dhis.servlet.filter.ExcludableShallowEtagHeaderFil
> ter.doFilterInternal(ExcludableShallowEtagHeaderFilter.java:102)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.
> doFilterInternal(OpenSessionInViewFilter.java:151)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.web.filter.CharacterEncodingFilter.
> doFilterInternal(CharacterEncodingFilter.java:121)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(
> ServletHandler.java:585)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:143)
> at org.eclipse.jetty.security.SecurityHandler.handle(
> SecurityHandler.java:577)
> at org.eclipse.jetty.server.session.SessionHandler.
> doHandle(SessionHandler.java:223)
> at org.eclipse.jetty.server.handler.ContextHandler.
> doHandle(ContextHandler.java:1127)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(
> ServletHandler.java:515)
> at org.eclipse.jetty.server.session.SessionHandler.
> doScope(SessionHandler.java:185)
> at org.eclipse.jetty.server.handler.ContextHandler.
> doScope(ContextHandler.java:1061)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:141)
> at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(
> ContextHandlerCollection.java:215)
> at org.eclipse.jetty.server.handler.HandlerCollection.
> handle(HandlerCollection.java:110)
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:97)
> at org.eclipse.jetty.server.Server.handle(Server.java:497)
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
> at org.eclipse.jetty.server.HttpConnection.onFillable(
> HttpConnection.java:245)
> at org.eclipse.jetty.io.AbstractConnection$2.run(
> AbstractConnection.java:540)
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
> QueuedThreadPool.java:635)
> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(
> QueuedThreadPool.java:555)
> at java.lang.Thread.run(Thread.java:745)
> Caused by:
> org.postgresql.util.PSQLException: ERROR: duplicate key value violates
> unique constraint "programdataelement_unique_key"| Detail: Key
> (programid, dataelementid)=(12372, 13027) already exists.
> at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(
> QueryExecutorImpl.java:2284)
> at org.postgresql.core.v3.QueryExecutorImpl.processResults(
> QueryExecutorImpl.java:2003)
> at org.postgresql.core.v3.QueryExecutorImpl.execute(
> QueryExecutorImpl.java:200)
> at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:424)
> at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(
> PgPreparedStatement.java:161)
> at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(
> PgPreparedStatement.java:133)
> at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(
> NewProxyPreparedStatement.java:105)
> at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(
> ResultSetReturnImpl.java:186)
> at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(
> NonBatchingBatch.java:59)
> at org.hibernate.persister.entity.AbstractEntityPersister.insert(
> AbstractEntityPersister.java:3079)
> at org.hibernate.persister.entity.AbstractEntityPersister.insert(
> AbstractEntityPersister.java:3521)
> at org.hibernate.action.internal.EntityInsertAction.execute(
> EntityInsertAction.java:88)
> at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:395)
> at org.hibernate.engine.spi.ActionQueue.executeActions(
> ActionQueue.java:387)
> at org.hibernate.engine.spi.ActionQueue.executeActions(
> ActionQueue.java:303)
> at org.hibernate.event.internal.AbstractFlushingEventListener.
> performExecutions(AbstractFlushingEventListener.java:349)
> at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(
> DefaultFlushEventListener.java:56)
> at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1195)
> at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
> at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.
> beforeTransactionCommit(JdbcTransaction.java:101)
> at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(
> AbstractTransactionImpl.java:175)
> at org.springframework.orm.hibernate4.HibernateTransactionManager.
> doCommit(HibernateTransactionManager.java:584)
> at org.springframework.transaction.support.AbstractPlatformTransactionMan
> ager.processCommit(AbstractPlatformTransactionManager.java:761)
> at org.springframework.transaction.support.AbstractPlatformTransactionMan
> ager.commit(AbstractPlatformTransactionManager.java:730)
> at org.springframework.transaction.interceptor.TransactionAspectSupport.
> commitTransactionAfterReturning(TransactionAspectSupport.java:485)
> at org.springframework.transaction.interceptor.TransactionAspectSupport.
> invokeWithinTransaction(TransactionAspectSupport.java:291)
> at org.springframework.transaction.interceptor.
> TransactionInterceptor.invoke(TransactionInterceptor.java:96)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(
> ExposeInvocationInterceptor.java:92)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> at org.springframework.aop.framework.JdkDynamicAopProxy.
> invoke(JdkDynamicAopProxy.java:208)
> at com.sun.proxy.$Proxy55.getOrAddProgramDataElement(Unknown Source)
> at org.hisp.dhis.dimension.DefaultDimensionService.
> getOrAddDataDimensionalItemObject(DefaultDimensionService.java:355)
> at org.hisp.dhis.analytics.data.DefaultDataQueryService.getDimension(
> DefaultDataQueryService.java:256)
> at org.hisp.dhis.analytics.data.DefaultDataQueryService.
> getDimensionalObjects(DefaultDataQueryService.java:209)
> at org.hisp.dhis.analytics.data.DefaultDataQueryService.getFromUrl(
> DefaultDataQueryService.java:130)
> at org.hisp.dhis.webapi.controller.AnalyticsController.getJson(
> AnalyticsController.java:108)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(
> InvocableHandlerMethod.java:221)
> at org.springframework.web.method.support.InvocableHandlerMethod.
> invokeForRequest(InvocableHandlerMethod.java:136)
> at org.springframework.web.servlet.mvc.method.annotation.
> ServletInvocableHandlerMethod.invokeAndHandle(
> ServletInvocableHandlerMethod.java:110)
> at org.springframework.web.servlet.mvc.method.annotation.
> RequestMappingHandlerAdapter.invokeHandlerMethod(
> RequestMappingHandlerAdapter.java:817)
> at org.springframework.web.servlet.mvc.method.annotation.
> RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.
> java:731)
> at org.springframework.web.servlet.mvc.method.
> AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
> at org.springframework.web.servlet.DispatcherServlet.
> doDispatch(DispatcherServlet.java:959)
> at org.springframework.web.servlet.DispatcherServlet.
> doService(DispatcherServlet.java:893)
> at org.springframework.web.servlet.FrameworkServlet.processRequest(
> FrameworkServlet.java:968)
> at org.springframework.web.servlet.FrameworkServlet.
> doGet(FrameworkServlet.java:859)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
> at org.springframework.web.servlet.FrameworkServlet.
> service(FrameworkServlet.java:844)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:800)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1669)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> at org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
> at org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.access.ExceptionTranslationFilter.
> doFilter(ExceptionTranslationFilter.java:113)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.session.SessionManagementFilter.
> doFilter(SessionManagementFilter.java:103)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.
> java:113)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.servletapi.
> SecurityContextHolderAwareRequestFilter.doFilter(
> SecurityContextHolderAwareRequestFilter.java:154)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.
> doFilter(RequestCacheAwareFilter.java:45)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.www.
> BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:90)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AbstractAuthenticationProcessingFilter.doFilter(
> AbstractAuthenticationProcessingFilter.java:199)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AbstractAuthenticationProcessingFilter.doFilter(
> AbstractAuthenticationProcessingFilter.java:199)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.CustomAuthenticationFilter.doFilter(
> CustomAuthenticationFilter.java:64)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.oauth2.provider.authentication.
> OAuth2AuthenticationProcessingFilter.doFilter(
> OAuth2AuthenticationProcessingFilter.java:140)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.logout.
> LogoutFilter.doFilter(LogoutFilter.java:110)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(
> AutomaticAccessFilter.java:115)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.header.HeaderWriterFilter.
> doFilterInternal(HeaderWriterFilter.java:57)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.context.request.async.
> WebAsyncManagerIntegrationFilter.doFilterInternal(
> WebAsyncManagerIntegrationFilter.java:50)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.context.SecurityContextPersistenceFilt
> er.doFilter(SecurityContextPersistenceFilter.java:87)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.FilterChainProxy.doFilterInternal(
> FilterChainProxy.java:192)
> at org.springframework.security.web.FilterChainProxy.doFilter(
> FilterChainProxy.java:160)
> at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(
> DelegatingFilterProxy.java:346)
> at org.springframework.web.filter.DelegatingFilterProxy.doFilter(
> DelegatingFilterProxy.java:262)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.web.filter.ShallowEtagHeaderFilter.
> doFilterInternal(ShallowEtagHeaderFilter.java:87)
> at org.hisp.dhis.servlet.filter.ExcludableShallowEtagHeaderFil
> ter.doFilterInternal(ExcludableShallowEtagHeaderFilter.java:102)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.
> doFilterInternal(OpenSessionInViewFilter.java:151)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.springframework.web.filter.CharacterEncodingFilter.
> doFilterInternal(CharacterEncodingFilter.java:121)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(
> ServletHandler.java:585)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:143)
> at org.eclipse.jetty.security.SecurityHandler.handle(
> SecurityHandler.java:577)
> at org.eclipse.jetty.server.session.SessionHandler.
> doHandle(SessionHandler.java:223)
> at org.eclipse.jetty.server.handler.ContextHandler.
> doHandle(ContextHandler.java:1127)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(
> ServletHandler.java:515)
> at org.eclipse.jetty.server.session.SessionHandler.
> doScope(SessionHandler.java:185)
> at org.eclipse.jetty.server.handler.ContextHandler.
> doScope(ContextHandler.java:1061)
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:141)
> at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(
> ContextHandlerCollection.java:215)
> at org.eclipse.jetty.server.handler.HandlerCollection.
> handle(HandlerCollection.java:110)
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:97)
> at org.eclipse.jetty.server.Server.handle(Server.java:497)
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
> at org.eclipse.jetty.server.HttpConnection.onFillable(
> HttpConnection.java:245)
> at org.eclipse.jetty.io.AbstractConnection$2.run(
> AbstractConnection.java:540)
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
> QueuedThreadPool.java:635)
> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(
> QueuedThreadPool.java:555)
> at java.lang.Thread.run(Thread.java:745)
> * INFO 2016-09-21 11:46:46,850 'admin' create org.hisp.dhis.program.ProgramDataElement,
> name: MALAWI 2010 (6) MALAWI 2010 (6) BR - ORT+continued feeding for
> children with diarrhoea, uid: yXCUtPy8MJG (AuditLogUtil.java
> [qtp219396780-15])
>
>
>
> Looking at the browser network log, we see there are two ajax requests for
> /api/analytics.json as follows:
>
> http://localhost:8000/api/analytics.json?dimension=dx:
> WvTS1pZHEvr.zIwKzp5LQV0;WvTS1pZHEvr.SviPULMrs4E;WvTS1pZHEvr.xb4Scf1XL3B;
> WvTS1pZHEvr.bbAal3sU9uJ;WvTS1pZHEvr.s5kx3g5oR4u;WvTS1pZHEvr.HkgJlbo1n6p;
> WvTS1pZHEvr.g6NTDWVPQI8;WvTS1pZHEvr.vXL4CX0ujZX;WvTS1pZHEvr.gioZNrOZ04H;
> WvTS1pZHEvr.yJrk0zHLsB0;WvTS1pZHEvr.zY0gPCR38ku;WvTS1pZHEvr.i5hq21hYR6G;
> WvTS1pZHEvr.CEZJXSW0hDP;WvTS1pZHEvr.wfCiwQf1elE;WvTS1pZHEvr.gMRNoTcKZYN;
> WvTS1pZHEvr.FQW9ajexB53;WvTS1pZHEvr.eF1VS0TiQGG;WvTS1pZHEvr.SUFqHSoQdDa;
> WvTS1pZHEvr.ZCqMRpSNhaH;WvTS1pZHEvr.GDwijNGCOys;WvTS1pZHEvr.GJN8bS0yyyu;
> WvTS1pZHEvr.kThIEffeLXh;WvTS1pZHEvr.LRMDGUvZCjq;WvTS1pZHEvr.bdPKepL4QAq;
> WvTS1pZHEvr.LjvbeDRROq5;WvTS1pZHEvr.aeLSS03oFeo;WvTS1pZHEvr.mE9CNZ8O46K;
> WvTS1pZHEvr.zk0VgK6RMB4;WvTS1pZHEvr.sC5uLjqtq7S;WvTS1pZHEvr.cUGx8npcjdS;
> WvTS1pZHEvr.k2q7tB4UD0Q;WvTS1pZHEvr.RZvuDt45TCs;WvTS1pZHEvr.TWEoa4CA6x1;
> WvTS1pZHEvr.askaj3EXGAS;WvTS1pZHEvr.NiarpgrGqEN;WvTS1pZHEvr.JIKoSgdvN0d;
> WvTS1pZHEvr.gHNXd6CrSmu;WvTS1pZHEvr.RM7v6p586cG;WvTS1pZHEvr.CVIColbCxLn;
> WvTS1pZHEvr.auypAWfynRG;WvTS1pZHEvr.DYa1dHrl1NY;WvTS1pZHEvr.vG0JSrNgm90;
> WvTS1pZHEvr.qhHw0gauNaM;WvTS1pZHEvr.HxlI1v7bCQW;WvTS1pZHEvr.icZteKbcw7Y;
> WvTS1pZHEvr.h50CTgVuexo;WvTS1pZHEvr.Qwq1AvawCYl;WvTS1pZHEvr.wFed4C7ar5P;
> WvTS1pZHEvr.kzZ9oIeMgel;WvTS1pZHEvr.xEob1uQt76Z;WvTS1pZHEvr.JjiN1YUka1B;
> WvTS1pZHEvr.EPqY3FZWf1u;WvTS1pZHEvr.UGdzBbcZzuP;WvTS1pZHEvr.PD43OsmHvQ7;
> WvTS1pZHEvr.JQnV8Igl9Y2;WvTS1pZHEvr.YSwgI5eoUmN;WvTS1pZHEvr.DVyyBsRCqvB;
> WvTS1pZHEvr.DuJhKqaYJdd;WvTS1pZHEvr.ralReEpyEOe;WvTS1pZHEvr.oxytTaKbXdr;
> WvTS1pZHEvr.CgVbvheNI9F;WvTS1pZHEvr.i92NgHBBayK;WvTS1pZHEvr.FNFf6ZCBUlu;
> WvTS1pZHEvr.o6hlcAXsmcO;WvTS1pZHEvr.CXSi4VFBTgN;WvTS1pZHEvr.zuAuBrBOC08;
> WvTS1pZHEvr.ACofzzCVyRE;WvTS1pZHEvr.aMTDtWdh1eL;WvTS1pZHEvr.XmVHyzllpZu;
> WvTS1pZHEvr.k026jJnkLdF;WvTS1pZHEvr.OHy0DfqgF6R;WvTS1pZHEvr.I9r5tLiE4iY;
> WvTS1pZHEvr.Luuza9H7c9T;WvTS1pZHEvr.R9SOR3F4oPR;WvTS1pZHEvr.XZK9sKOgJXW;
> WvTS1pZHEvr.EaHaOGUKYiY;WvTS1pZHEvr.Ve5ITHpYImx;WvTS1pZHEvr.jnFwoNrUZrc;
> WvTS1pZHEvr.qyy21hq6wS8;WvTS1pZHEvr.H6i6QlKKtie;WvTS1pZHEvr.revSEAkcYUj;
> WvTS1pZHEvr.SVEyybEx6Bd;WvTS1pZHEvr.SSJQY2uO9wZ;WvTS1pZHEvr.cSmCgk0mFUP;
> WvTS1pZHEvr.IHQQAbSPnMs;WvTS1pZHEvr.tT9PsamWJeT;WvTS1pZHEvr.p34Oqa7e2GH;
> WvTS1pZHEvr.lvzVQLXKH2j;WvTS1pZHEvr.hglOq5AkgZz;WvTS1pZHEvr.HtNEpZmyfdR;
> WvTS1pZHEvr.A4xz8sepBfd;WvTS1pZHEvr.EkLnrreKbZs;WvTS1pZHEvr.Mh9UUR7onUr;
> WvTS1pZHEvr.y5l79vR8mTv;WvTS1pZHEvr.aBdEFW3Qvi0;WvTS1pZHEvr.sOKaR98BW36;
> WvTS1pZHEvr.QN21IC6jsi5;WvTS1pZHEvr.k8kiTVpaYpN;WvTS1pZHEvr.YgS8E77Q0nm;
> WvTS1pZHEvr.Vl97EGYsKSV;WvTS1pZHEvr.SMCsB4ji244;WvTS1pZHEvr.vfgh4QHq9sP;
> WvTS1pZHEvr.P59z5cX0FoT;WvTS1pZHEvr.ahmNkbcR9Cx;WvTS1pZHEvr.hkEp8GwO6ac;
> WvTS1pZHEvr.c7A4nrxbAJc;WvTS1pZHEvr.aaJf8JpWIVf;WvTS1pZHEvr.VCM00WyJ00l;
> WvTS1pZHEvr.mP3Tk9DvaZ4;WvTS1pZHEvr.Zkn1GwLxZ4A;WvTS1pZHEvr.gBf7ZsZvvJP;
> WvTS1pZHEvr.o1Ts64b0LQJ;WvTS1pZHEvr.cqjDuTSk1e5;WvTS1pZHEvr.DXZrRiBoWUr;
> WvTS1pZHEvr.nkVASME5c3h;WvTS1pZHEvr.jGucVsQFt16;WvTS1pZHEvr.xHcdhNCbBry;
> WvTS1pZHEvr.pmduIBoLp5Q;WvTS1pZHEvr.Es38aJefHnz;WvTS1pZHEvr.HD5QgLYBlO9;
> WvTS1pZHEvr.mi8rLVO3Q7O;WvTS1pZHEvr.JeAIwr0pY6p;WvTS1pZHEvr.jZV0G5I6CUJ;
> WvTS1pZHEvr.oY1fh0DkrDm;WvTS1pZHEvr.PoTDA1Wytcf;WvTS1pZHEvr.rmaz2VHKb9L;
> WvTS1pZHEvr.MdOLbChOFYx;WvTS1pZHEvr.onZa8wSH4NL;WvTS1pZHEvr.uRSJEKk0wES;
> WvTS1pZHEvr.f6uO84MZREF;WvTS1pZHEvr.jyhYtJV0Wl6;WvTS1pZHEvr.zYWaX6JaaBq;
> WvTS1pZHEvr.EASGO5UXh26;WvTS1pZHEvr.P9rGEyWCecM;WvTS1pZHEvr.in8V8ZIJ0bC;
> WvTS1pZHEvr.udNxvGw7CpD&dimension=pe:2010&filter=ou:
> yeGIr7J6nX7&displayProperty=NAME&skipData=true
>
>
> http://localhost:8000/api/analytics.json?dimension=dx:
> WvTS1pZHEvr.XmVHyzllpZu;WvTS1pZHEvr.udNxvGw7CpD;WvTS1pZHEvr.in8V8ZIJ0bC;
> WvTS1pZHEvr.bbAal3sU9uJ;WvTS1pZHEvr.s5kx3g5oR4u;WvTS1pZHEvr.HkgJlbo1n6p;
> WvTS1pZHEvr.g6NTDWVPQI8;WvTS1pZHEvr.P9rGEyWCecM;WvTS1pZHEvr.gioZNrOZ04H;
> WvTS1pZHEvr.EASGO5UXh26;WvTS1pZHEvr.jyhYtJV0Wl6;WvTS1pZHEvr.i5hq21hYR6G;
> WvTS1pZHEvr.CEZJXSW0hDP;WvTS1pZHEvr.f6uO84MZREF;WvTS1pZHEvr.gMRNoTcKZYN;
> WvTS1pZHEvr.FQW9ajexB53;WvTS1pZHEvr.eF1VS0TiQGG;WvTS1pZHEvr.SUFqHSoQdDa;
> WvTS1pZHEvr.ZCqMRpSNhaH;WvTS1pZHEvr.GDwijNGCOys;WvTS1pZHEvr.GJN8bS0yyyu;
> WvTS1pZHEvr.kThIEffeLXh;WvTS1pZHEvr.LRMDGUvZCjq;WvTS1pZHEvr.bdPKepL4QAq;
> WvTS1pZHEvr.LjvbeDRROq5;WvTS1pZHEvr.aeLSS03oFeo;WvTS1pZHEvr.mE9CNZ8O46K;
> WvTS1pZHEvr.uRSJEKk0wES;WvTS1pZHEvr.sC5uLjqtq7S;WvTS1pZHEvr.cUGx8npcjdS;
> WvTS1pZHEvr.k2q7tB4UD0Q;WvTS1pZHEvr.RZvuDt45TCs;WvTS1pZHEvr.TWEoa4CA6x1;
> WvTS1pZHEvr.askaj3EXGAS;WvTS1pZHEvr.NiarpgrGqEN;WvTS1pZHEvr.JIKoSgdvN0d;
> WvTS1pZHEvr.gHNXd6CrSmu;WvTS1pZHEvr.RM7v6p586cG;WvTS1pZHEvr.CVIColbCxLn;
> WvTS1pZHEvr.auypAWfynRG;WvTS1pZHEvr.DYa1dHrl1NY;WvTS1pZHEvr.onZa8wSH4NL;
> WvTS1pZHEvr.qhHw0gauNaM;WvTS1pZHEvr.HxlI1v7bCQW;WvTS1pZHEvr.icZteKbcw7Y;
> WvTS1pZHEvr.h50CTgVuexo;WvTS1pZHEvr.Qwq1AvawCYl;WvTS1pZHEvr.MdOLbChOFYx;
> WvTS1pZHEvr.kzZ9oIeMgel;WvTS1pZHEvr.rmaz2VHKb9L;WvTS1pZHEvr.JjiN1YUka1B;
> WvTS1pZHEvr.EPqY3FZWf1u;WvTS1pZHEvr.UGdzBbcZzuP;WvTS1pZHEvr.PD43OsmHvQ7;
> WvTS1pZHEvr.JQnV8Igl9Y2;WvTS1pZHEvr.YSwgI5eoUmN;WvTS1pZHEvr.DVyyBsRCqvB;
> WvTS1pZHEvr.DuJhKqaYJdd;WvTS1pZHEvr.ralReEpyEOe;WvTS1pZHEvr.oxytTaKbXdr;
> WvTS1pZHEvr.CgVbvheNI9F;WvTS1pZHEvr.i92NgHBBayK;WvTS1pZHEvr.FNFf6ZCBUlu;
> WvTS1pZHEvr.o6hlcAXsmcO;WvTS1pZHEvr.CXSi4VFBTgN;WvTS1pZHEvr.PoTDA1Wytcf;
> WvTS1pZHEvr.ACofzzCVyRE;WvTS1pZHEvr.aMTDtWdh1eL;WvTS1pZHEvr.SviPULMrs4E;
> WvTS1pZHEvr.k026jJnkLdF;WvTS1pZHEvr.OHy0DfqgF6R;WvTS1pZHEvr.I9r5tLiE4iY;
> WvTS1pZHEvr.Luuza9H7c9T;WvTS1pZHEvr.R9SOR3F4oPR;WvTS1pZHEvr.XZK9sKOgJXW;
> WvTS1pZHEvr.EaHaOGUKYiY;WvTS1pZHEvr.Ve5ITHpYImx;WvTS1pZHEvr.jnFwoNrUZrc;
> WvTS1pZHEvr.qyy21hq6wS8;WvTS1pZHEvr.H6i6QlKKtie;WvTS1pZHEvr.revSEAkcYUj;
> WvTS1pZHEvr.SVEyybEx6Bd;WvTS1pZHEvr.SSJQY2uO9wZ;WvTS1pZHEvr.cSmCgk0mFUP;
> WvTS1pZHEvr.IHQQAbSPnMs;WvTS1pZHEvr.tT9PsamWJeT;WvTS1pZHEvr.p34Oqa7e2GH;
> WvTS1pZHEvr.lvzVQLXKH2j;WvTS1pZHEvr.hglOq5AkgZz;WvTS1pZHEvr.HtNEpZmyfdR;
> WvTS1pZHEvr.A4xz8sepBfd;WvTS1pZHEvr.EkLnrreKbZs;WvTS1pZHEvr.Mh9UUR7onUr;
> WvTS1pZHEvr.oY1fh0DkrDm;WvTS1pZHEvr.aBdEFW3Qvi0;WvTS1pZHEvr.sOKaR98BW36;
> WvTS1pZHEvr.QN21IC6jsi5;WvTS1pZHEvr.k8kiTVpaYpN;WvTS1pZHEvr.YgS8E77Q0nm;
> WvTS1pZHEvr.Vl97EGYsKSV;WvTS1pZHEvr.SMCsB4ji244;WvTS1pZHEvr.jZV0G5I6CUJ;
> WvTS1pZHEvr.P59z5cX0FoT;WvTS1pZHEvr.ahmNkbcR9Cx;WvTS1pZHEvr.hkEp8GwO6ac;
> WvTS1pZHEvr.c7A4nrxbAJc;WvTS1pZHEvr.aaJf8JpWIVf;WvTS1pZHEvr.VCM00WyJ00l;
> WvTS1pZHEvr.mP3Tk9DvaZ4;WvTS1pZHEvr.Zkn1GwLxZ4A;WvTS1pZHEvr.gBf7ZsZvvJP;
> WvTS1pZHEvr.o1Ts64b0LQJ;WvTS1pZHEvr.cqjDuTSk1e5;WvTS1pZHEvr.DXZrRiBoWUr;
> WvTS1pZHEvr.nkVASME5c3h;WvTS1pZHEvr.jGucVsQFt16;WvTS1pZHEvr.JeAIwr0pY6p;
> WvTS1pZHEvr.pmduIBoLp5Q;WvTS1pZHEvr.Es38aJefHnz;WvTS1pZHEvr.HD5QgLYBlO9;
> WvTS1pZHEvr.mi8rLVO3Q7O;WvTS1pZHEvr.zk0VgK6RMB4;WvTS1pZHEvr.xHcdhNCbBry;
> WvTS1pZHEvr.vXL4CX0ujZX;WvTS1pZHEvr.wfCiwQf1elE;WvTS1pZHEvr.xEob1uQt76Z;
> WvTS1pZHEvr.wFed4C7ar5P;WvTS1pZHEvr.vG0JSrNgm90;WvTS1pZHEvr.vfgh4QHq9sP;
> WvTS1pZHEvr.xb4Scf1XL3B;WvTS1pZHEvr.y5l79vR8mTv;WvTS1pZHEvr.yJrk0zHLsB0;
> WvTS1pZHEvr.zIwKzp5LQV0;WvTS1pZHEvr.zY0gPCR38ku;WvTS1pZHEvr.zYWaX6JaaBq;
> WvTS1pZHEvr.zuAuBrBOC08&dimension=pe:2010&filter=ou:
> yeGIr7J6nX7&displayProperty=NAME&skipMeta=true
>
>
> The second of these returns a 500 error and this corresponds to the error
> in the Tomcat logs.
>
> It looks to me like the second request fires before the first has finished
> and we then have two concurrent requests attempting to create the
> ProgramDataElement entries. The data element that fails is not consistent.
>
> I think that the second request checks for the existence of the
> ProgramDataElement and finds that it does not exist but when it attempts to
> create, it has already been created by the first request.
>
> Should the second request wait for the first to finish?
>
> Note: Clicking 'Update' again does not hang.
>
> Many thanks
>
> Alan
>
>
>
Follow ups
References