[ https://issues.apache.org/jira/browse/AMBARI-5871?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tom Beerbower updated AMBARI-5871: ---------------------------------- Fix Version/s: 1.6.1 > Views: Can't install new instance after deploying view instance > --------------------------------------------------------------- > > Key: AMBARI-5871 > URL: https://issues.apache.org/jira/browse/AMBARI-5871 > Project: Ambari > Issue Type: Bug > Affects Versions: 1.6.0 > Reporter: Tom Beerbower > Assignee: Tom Beerbower > Fix For: 1.6.1 > > > After setting up sevaral instances and restart ambari after every creating > instance, I'm starting to get this error: > {noformat} > The attribute [view] of class > [org.apache.ambari.server.orm.entities.ViewInstanceEntity] is mapped to a > primary key column in the database. Updates are not allowed. > {noformat} > In logs after restarting server > Setting up one view, e.g. FILES (put jar to resources, restart ambari, create > instance through API, again restart) is ok. > Then, if I want to install one another ambari view (e.g. PIG) I'm getting > error on creating instance (POST request to > /api/v1/views/PIG/versions/0.1.0/instances/PIG_1 returns 500). In logs I see > this > {noformat} > javax.persistence.RollbackException: java.lang.IllegalStateException: During > synchronization a new object was found through a relationship that was not > marked cascade PERSIST: > org.apache.ambari.server.orm.entities.ViewEntity@2260898b. > at > org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:102) > at > org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:63) > at > org.apache.ambari.server.orm.AmbariJpaLocalTxnInterceptor.invoke(AmbariJpaLocalTxnInterceptor.java:91) > at > org.apache.ambari.server.view.ViewRegistry.installViewInstance(ViewRegistry.java:351) > at > org.apache.ambari.server.controller.internal.ViewInstanceResourceProvider$1.invoke(ViewInstanceResourceProvider.java:289) > at > org.apache.ambari.server.controller.internal.ViewInstanceResourceProvider$1.invoke(ViewInstanceResourceProvider.java:286) > at > org.apache.ambari.server.controller.internal.AbstractResourceProvider.createResources(AbstractResourceProvider.java:237) > at > org.apache.ambari.server.controller.internal.ViewInstanceResourceProvider.createResources(ViewInstanceResourceProvider.java:107) > at > org.apache.ambari.server.controller.internal.ClusterControllerImpl.createResources(ClusterControllerImpl.java:218) > at > org.apache.ambari.server.api.services.persistence.PersistenceManagerImpl.create(PersistenceManagerImpl.java:75) > ... > {noformat} > I'm not getting error if I install FILES and PIG in one shot (create both > instances without restarting ambari after each one) > Steps to reproduce ... > 1) download files.jar > 2) restart ambari > 3) create instance for FILES > 4) restart ambari (and ensure that all works) > 5) download pig.jar > 6) restart ambari > 7) create instance for PIG (got error here) > The problem is that deployment of the views are not isolated from each other. > So the code reads the archives and builds up the registry for all of the > views, then it persists any views that aren't already persisted, then it > deploys them all to the Jetty container. There is a situation where all the > view archives get read followed by a failure trying to persist one of the > views view. The failure causes the whole process of view deployment to stop > so none of the views get deployed to Jetty. > Inn this scenario, even though a view doesn't get persisted, it is in the > view registry which means that it shows up in the API. This means that the > user can invoke the API to create an instance but it fails because the view > is only partially deployed (not in the DB). -- This message was sent by Atlassian JIRA (v6.2#6252)