[ 
https://issues.apache.org/jira/browse/AMBARI-22110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nate Cole updated AMBARI-22110:
-------------------------------
    Description: 
While investigating an issue with VDFs which don't contain any OS's which match 
the cluster, it was observed that, even after throwing an Exception inside of a 
Transaction, the entities created inside that transaction were being committed. 

Eventual investigation led to a problem between Guice/AOP and our 
ResourceProviders. The Guice documentations says that {{@Transactional}} 
methods can only be intercepted on objects created by Guice:

https://github.com/google/guice/wiki/AOP:
{quote}
Instances must be created by Guice by an @Inject-annotated or no-argument 
constructor It is not possible to use method interception on instances that 
aren't constructed by Guice.
{quote}

However, some of the ResourceProviders which use {{@Transactional}} are not 
constructed by Guice.

  was:A handful of {{ResourceProvider}}s have transactional methods that are 
not loaded by Guice, and are therefore not transactional at all.


> ResourceProviders Are Not Transactional
> ---------------------------------------
>
>                 Key: AMBARI-22110
>                 URL: https://issues.apache.org/jira/browse/AMBARI-22110
>             Project: Ambari
>          Issue Type: Bug
>          Components: ambari-server
>            Reporter: Nate Cole
>            Assignee: Nate Cole
>            Priority: Critical
>             Fix For: 2.6.0
>
>
> While investigating an issue with VDFs which don't contain any OS's which 
> match the cluster, it was observed that, even after throwing an Exception 
> inside of a Transaction, the entities created inside that transaction were 
> being committed. 
> Eventual investigation led to a problem between Guice/AOP and our 
> ResourceProviders. The Guice documentations says that {{@Transactional}} 
> methods can only be intercepted on objects created by Guice:
> https://github.com/google/guice/wiki/AOP:
> {quote}
> Instances must be created by Guice by an @Inject-annotated or no-argument 
> constructor It is not possible to use method interception on instances that 
> aren't constructed by Guice.
> {quote}
> However, some of the ResourceProviders which use {{@Transactional}} are not 
> constructed by Guice.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to