Uploaded image for project: 'Virtual Infrastructure Deployment'
  1. Virtual Infrastructure Deployment
  2. VID-430

Stackoverflow on category_parameter_option load

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: High High
    • Dublin Release
    • Dublin Release
    • Core

      On loading of the create service page in VID with aLaCarte when a ownIngEntity is defined as follows

      MariaDB [vid_openecomp_epsdk]> select * from vid_category_parameter_option;
      ---------------------------------------------------------------------------------------------+

      CATEGORY_OPT_DB_ID CATEGORY_OPT_APP_ID NAME CATEGORY_ID CREATED_DATE MODIFIED_DATE

      ---------------------------------------------------------------------------------------------+

      25 ECOMP ECOMP 6 2019-03-04 09:52:22 2019-03-04 09:52:22
      26 DEV DEV 6 2019-03-04 09:52:22 2019-03-04 09:52:22
      27 TEST TEST 6 2019-03-04 09:52:22 2019-03-04 09:52:22
      28 VNF VNF 5 2019-03-04 09:52:22 2019-03-04 09:52:22
      37 oe1 oe2 4 2019-03-04 13:54:36 2019-03-04 13:54:36

      ---------------------------------------------------------------------------------------------+
      5 rows in set (0.00 sec)

      then the vid window looks like attached screenshot and the network message contains the stack trace 

      <!doctype html><html lang="en"><head><title>HTTP Status 500 – Internal Server Error</title><style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style></head><body><h1>HTTP Status 500 – Internal Server Error</h1><hr class="line" /><p><b>Type</b> Exception Report</p><p><b>Message</b> Handler processing failed; nested exception is java.lang.StackOverflowError</p><p><b>Description</b> The server encountered an unexpected condition that prevented it from fulfilling the request.</p><p><b>Exception</b></p><pre>org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.StackOverflowError<!doctype html><html lang="en"><head><title>HTTP Status 500 – Internal Server Error</title><style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style></head><body><h1>HTTP Status 500 – Internal Server Error</h1><hr class="line" /><p><b>Type</b> Exception Report</p><p><b>Message</b> Handler processing failed; nested exception is java.lang.StackOverflowError</p><p><b>Description</b> The server encountered an unexpected condition that prevented it from fulfilling the request.</p><p><b>Exception</b></p><pre>org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.StackOverflowError org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1305) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:979) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.onap.vid.controller.filter.TempFilterForCORS.doFilter(TempFilterForCORS.java:66) org.onap.vid.controller.filter.PromiseEcompRequestIdFilter.doFilter(PromiseEcompRequestIdFilter.java:62) org.onap.portalapp.filter.SecurityXssFilter.doFilterInternal(SecurityXssFilter.java:104) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)</pre><p><b>Root Cause</b></p><pre>java.lang.StackOverflowError org.hibernate.engine.jdbc.internal.StatementPreparerImpl$QueryStatementPreparationTemplate.<init>(StatementPreparerImpl.java:217) org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.<init>(StatementPreparerImpl.java:160) org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:160) org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.prepareQueryStatement(AbstractLoadPlanBasedLoader.java:257) org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:201) org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:137) org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102) org.hibernate.loader.collection.plan.AbstractLoadPlanBasedCollectionInitializer.initialize(AbstractLoadPlanBasedCollectionInitializer.java:100) org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:693) org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:92) org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1933) org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:559) org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:261) org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:555) org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:143) org.hibernate.collection.internal.PersistentSet.hashCode(PersistentSet.java:447) java.util.Arrays.hashCode(Arrays.java:4146) java.util.Objects.hash(Objects.java:128) org.onap.vid.model.CategoryParameter.hashCode(CategoryParameter.java:118) org.onap.vid.model.CategoryParameterOption.hashCode(CategoryParameterOption.java:141) java.util.HashMap.hash(HashMap.java:339) java.util.HashMap.put(HashMap.java:612) java.util.HashSet.add(HashSet.java:220) java.util.AbstractCollection.addAll(AbstractCollection.java:344) ...  repeated many many times .... java.util.AbstractCollection.addAll(AbstractCollection.java:344) org.hibernate.collection.internal.PersistentSet.endRead(PersistentSet.java:344) org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollection(CollectionLoadContext.java:251) org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:238) org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:211) org.hibernate.loader.plan.exec.process.internal.CollectionReferenceInitializerImpl.endLoading(CollectionReferenceInitializerImpl.java:168) org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishLoadingCollections(AbstractRowReader.java:255) org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishUp(AbstractRowReader.java:218) org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:140) org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:138) org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102) org.hibernate.loader.collection.plan.AbstractLoadPlanBasedCollectionInitializer.initialize(AbstractLoadPlanBasedCollectionInitializer.java:100) org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:693) org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:92) org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1933) org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:559) org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:261) org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:555) org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:143) org.hibernate.collection.internal.PersistentSet.hashCode(PersistentSet.java:447) java.util.Arrays.hashCode(Arrays.java:4146) java.util.Objects.hash(Objects.java:128) org.onap.vid.model.CategoryParameter.hashCode(CategoryParameter.java:118) org.onap.vid.model.CategoryParameterOption.hashCode(CategoryParameterOption.java:141) java.util.HashMap.hash(HashMap.java:339) java.util.HashMap.put(HashMap.java:612) java.util.HashSet.add(HashSet.java:220) java.util.AbstractCollection.addAll(AbstractCollection.java:344) org.hibernate.collection.internal.PersistentSet.endRead(PersistentSet.java:344)</pre><p><b>Note</b> The full stack trace of the root cause is available in the server logs.</p><hr class="line" /><h3>Apache Tomcat/8.0.53</h3></body></html>

       

      I think the problem lies in a circular hashCode generation between 

      org.onap.vid.model.CategoryParameter.hashCode(CategoryParameter.java:118)org.onap.vid.model.CategoryParameter.hashCode(CategoryParameter.java:118) org.onap.vid.model.CategoryParameterOption.hashCode(CategoryParameterOption.java:141)

       

      @Override
      public int hashCode()

      { return Objects.hash(this.name, this.idSupported, this.family, this.options); }

      &

      @Override
      public int hashCode()

      { int result = getAppId() != null ? getAppId().hashCode() : 0; result = 31 * result + (getName() != null ? getName().hashCode() : 0); result = 31 * result + (getCategoryParameter() != null ? getCategoryParameter().hashCode() : 0); return result; }

       

       

       

            afenner afenner
            afenner afenner
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: