Sushanth Sowmyan created HIVE-9550:
--------------------------------------

             Summary: ObjectStore.getNextNotification() can return events 
inside NotificationEventResponse as null which conflicts with its thrift 
"required" tag
                 Key: HIVE-9550
                 URL: https://issues.apache.org/jira/browse/HIVE-9550
             Project: Hive
          Issue Type: Bug
            Reporter: Sushanth Sowmyan


Per hive_metastore.thrift, the "events" list inside NotificationEventResponse 
is a required field that cannot be null.

{code}
struct NotificationEventResponse {
    1: required list<NotificationEvent> events,
}
{code}

However, per ObjectStore.java, this events field can be uninitialized if the 
events retrieved from the metastore is empty instead of null:

{code}
      NotificationEventResponse result = new NotificationEventResponse();
      int maxEvents = rqst.getMaxEvents() > 0 ? rqst.getMaxEvents() : 
Integer.MAX_VALUE;
      int numEvents = 0; 
      while (i.hasNext() && numEvents++ < maxEvents) {
        result.addToEvents(translateDbToThrift(i.next()));
      }    
      return result;
{code}

The fix is simple enough - we need to call result.setEvents(new 
ArrayList<NotificationEvent>()) before we begin the iteration to do 
result.addToEvents(...).



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

Reply via email to