Jonathan Hurley created AMBARI-18057:
----------------------------------------

             Summary: NullPointerException When Retrieving Cluster via API Due 
To Database Inconsistency
                 Key: AMBARI-18057
                 URL: https://issues.apache.org/jira/browse/AMBARI-18057
             Project: Ambari
          Issue Type: Bug
          Components: ambari-upgrade
    Affects Versions: 2.0.0
            Reporter: Jonathan Hurley
            Assignee: Jonathan Hurley
            Priority: Blocker
             Fix For: 2.4.0


Noticed the following on an upgraded cluster:
This is not related to EU it seems:

{code}
java.lang.NullPointerException
        at 
org.apache.ambari.server.controller.internal.AlertResourceProvider.toResource(AlertResourceProvider.java:277)
        at 
org.apache.ambari.server.controller.internal.AlertResourceProvider.getResources(AlertResourceProvider.java:234)
        at 
org.apache.ambari.server.controller.internal.AlertResourceProvider.queryForResources(AlertResourceProvider.java:160)
        at 
org.apache.ambari.server.controller.internal.ClusterControllerImpl$ExtendedResourceProviderWrapper.queryForResources(ClusterControllerImpl.java:966)
        at 
org.apache.ambari.server.controller.internal.ClusterControllerImpl.getResources(ClusterControllerImpl.java:141)
        at 
org.apache.ambari.server.api.query.QueryImpl.doQuery(QueryImpl.java:529)
        at 
org.apache.ambari.server.api.query.QueryImpl.queryForResources(QueryImpl.java:398)
        at 
org.apache.ambari.server.api.query.QueryImpl.execute(QueryImpl.java:222)
{code}

It looks like this is a problem with database consistency, namely that our 
upgrade logic does NOT properly enforce non-null and default values!

{code:title="Not good..."}
      //TODO workaround for default values, possibly we will have full support 
later
      if (columnInfo.getDefaultValue() != null) {
        columnInfo.setNullable(true);
      }
{code}

Turns out we're doing at least 2 things very wrong here when changing the DB on 
Ambari upgrade:
- Not enforcing non-NULL constraint on columns
- Not enforcing a default constraint on column

This is most likely due to limitations in EclipseLink's {{TableDefinition}} and 
{{FieldDefinition}} classes which we rely on for our upgrade logic.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to