Return-Path: X-Original-To: apmail-ambari-dev-archive@www.apache.org Delivered-To: apmail-ambari-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0FA7E18CEB for ; Wed, 16 Dec 2015 21:41:50 +0000 (UTC) Received: (qmail 11488 invoked by uid 500); 16 Dec 2015 21:41:49 -0000 Delivered-To: apmail-ambari-dev-archive@ambari.apache.org Received: (qmail 11456 invoked by uid 500); 16 Dec 2015 21:41:49 -0000 Mailing-List: contact dev-help@ambari.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ambari.apache.org Delivered-To: mailing list dev@ambari.apache.org Received: (qmail 11442 invoked by uid 99); 16 Dec 2015 21:41:49 -0000 Received: from reviews-vm.apache.org (HELO reviews.apache.org) (140.211.11.40) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 16 Dec 2015 21:41:49 +0000 Received: from reviews.apache.org (localhost [127.0.0.1]) by reviews.apache.org (Postfix) with ESMTP id DF0F62AEB15; Wed, 16 Dec 2015 21:41:48 +0000 (UTC) Content-Type: multipart/alternative; boundary="===============1578417526649052180==" MIME-Version: 1.0 Subject: Re: Review Request 41465: RU: Finalize Downgrade failed From: "Nate Cole" To: "Alejandro Fernandez" , "Jonathan Hurley" Cc: "Nate Cole" , "Ambari" Date: Wed, 16 Dec 2015 21:41:48 -0000 Message-ID: <20151216214148.31807.54073@reviews.apache.org> X-ReviewBoard-URL: https://reviews.apache.org/ Auto-Submitted: auto-generated Sender: "Nate Cole" X-ReviewGroup: Ambari X-Auto-Response-Suppress: DR, RN, OOF, AutoReply X-ReviewRequest-URL: https://reviews.apache.org/r/41465/ X-Sender: "Nate Cole" References: <20151216212721.31807.63099@reviews.apache.org> In-Reply-To: <20151216212721.31807.63099@reviews.apache.org> Reply-To: "Nate Cole" X-ReviewRequest-Repository: ambari --===============1578417526649052180== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit > On Dec. 16, 2015, 4:27 p.m., Alejandro Fernandez wrote: > > Ship It! > > Alejandro Fernandez wrote: > Just re-examined based on what Sid told me. > Bug is in removeAllConfigsForStack(stackId), which gets the cached clusterEntity object instead of an updated one via ClusterImpl's getClusterEntity() method > > Nate Cole wrote: > No code calls that method. Again, we shouldn't be using the clusterEntity field at all, but that's more than we can reliably change right now. Also keep in mind - we have yet to reliably reproduce this issue - I'm not going onto crazy changes yet just because of that. - Nate ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/41465/#review110754 ----------------------------------------------------------- On Dec. 16, 2015, 3:58 p.m., Nate Cole wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/41465/ > ----------------------------------------------------------- > > (Updated Dec. 16, 2015, 3:58 p.m.) > > > Review request for Ambari, Alejandro Fernandez and Jonathan Hurley. > > > Repository: ambari > > > Description > ------- > > Following exception occurs on occasion when downgrading. > > Not 100% sure of the fix, but it appears as though using a clusterEntity outside the UnitOfWork for which it was originally loaded may confuse JPA when trying to merge. It's not certain if the change will actually fix the issue. > > Exception [EclipseLink-6004] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.QueryException > Exception Description: The object [org.apache.ambari.server.orm.entities.ClusterConfigEntity@3646b3a8], of class [class org.apache.ambari.server.orm.entities.ClusterConfigEntity], with identity hashcode (System.identityHashCode()) [364,075,546], > is not from this UnitOfWork object space, but the parent session's. The object was never registered in this UnitOfWork, > but read from the parent session and related to an object registered in the UnitOfWork. Ensure that you are correctly > registering your objects. If you are still having problems, you can use the UnitOfWork.validateObjectSpace() method to > help debug where the error occurred. For more information, see the manual or FAQ. > at org.eclipse.persistence.exceptions.QueryException.backupCloneIsOriginalFromParent(QueryException.java:298) > at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.getBackupClone(UnitOfWorkImpl.java:1995) > at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerExistingObject(UnitOfWorkImpl.java:3976) > at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerExistingObject(UnitOfWorkImpl.java:3894) > at org.eclipse.persistence.mappings.CollectionMapping.buildElementUnitOfWorkClone(CollectionMapping.java:308) > at org.eclipse.persistence.mappings.CollectionMapping.buildElementClone(CollectionMapping.java:321) > at org.eclipse.persistence.internal.queries.ContainerPolicy.addNextValueFromIteratorInto(ContainerPolicy.java:217) > at org.eclipse.persistence.mappings.CollectionMapping.buildCloneForPartObject(CollectionMapping.java:223) > at org.eclipse.persistence.internal.indirection.UnitOfWorkQueryValueHolder.buildCloneFor(UnitOfWorkQueryValueHolder.java:60) > at org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder.instantiateImpl(UnitOfWorkValueHolder.java:173) > at org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder.instantiate(UnitOfWorkValueHolder.java:234) > at org.eclipse.persistence.internal.indirection.DatabaseValueHolder.getValue(DatabaseValueHolder.java:89) > at org.eclipse.persistence.indirection.IndirectList.buildDelegate(IndirectList.java:252) > at org.eclipse.persistence.indirection.IndirectList.getDelegate(IndirectList.java:423) > at org.eclipse.persistence.indirection.IndirectList.size(IndirectList.java:761) > at org.eclipse.persistence.internal.queries.CollectionContainerPolicy.sizeFor(CollectionContainerPolicy.java:177) > at org.eclipse.persistence.mappings.CollectionMapping.mergeIntoObject(CollectionMapping.java:1566) > at org.eclipse.persistence.internal.descriptors.ObjectBuilder.mergeIntoObject(ObjectBuilder.java:4132) > at org.eclipse.persistence.internal.sessions.MergeManager.mergeChangesOfCloneIntoWorkingCopy(MergeManager.java:594) > at org.eclipse.persistence.internal.sessions.MergeManager.mergeChanges(MergeManager.java:313) > at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3521) > at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeCloneWithReferences(RepeatableWriteUnitOfWork.java:384) > at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3481) > at org.eclipse.persistence.internal.jpa.EntityManagerImpl.mergeInternal(EntityManagerImpl.java:542) > at org.eclipse.persistence.internal.jpa.EntityManagerImpl.merge(EntityManagerImpl.java:519) > at org.apache.ambari.server.orm.dao.ClusterDAO.merge(ClusterDAO.java:338) > at org.apache.ambari.server.orm.AmbariJpaLocalTxnInterceptor.invoke(AmbariJpaLocalTxnInterceptor.java:60) > at org.apache.ambari.server.orm.dao.ClusterDAO.merge(ClusterDAO.java:320) > at org.apache.ambari.server.state.cluster.ClusterImpl.removeAllConfigsForStack(ClusterImpl.java:3088) > at org.apache.ambari.server.orm.AmbariJpaLocalTxnInterceptor.invoke(AmbariJpaLocalTxnInterceptor.java:68) > at org.apache.ambari.server.state.cluster.ClusterImpl.removeConfigurations(ClusterImpl.java:3121) > at org.apache.ambari.server.serveraction.upgrades.FinalizeUpgradeAction.finalizeDowngrade(FinalizeUpgradeAction.java:314) > at org.apache.ambari.server.serveraction.upgrades.FinalizeUpgradeAction.execute(FinalizeUpgradeAction.java:116) > at org.apache.ambari.server.serveraction.ServerActionExecutor$Worker.execute(ServerActionExecutor.java:537) > at org.apache.ambari.server.serveraction.ServerActionExecutor$Worker.run(ServerActionExecutor.java:474) > at java.lang.Thread.run(Thread.java:745) > > > Diffs > ----- > > ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterConfigEntity.java ceefa60 > ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java b2a8485 > > Diff: https://reviews.apache.org/r/41465/diff/ > > > Testing > ------- > > Pending > > > Thanks, > > Nate Cole > > --===============1578417526649052180==--