Yan Xu created MESOS-2567:
-----------------------------

             Summary: Python binding method 'declineOffer(offerid, 
filters=None)' raises exception when 'filters=None' is assigned explicitly
                 Key: MESOS-2567
                 URL: https://issues.apache.org/jira/browse/MESOS-2567
             Project: Mesos
          Issue Type: Bug
          Components: python api
            Reporter: Yan Xu


The error is printed from here

https://github.com/apache/mesos/blob/04f8302c0cf81196e33ac538710dc5f48cd809d9/src/python/native/src/mesos/native/module.hpp#L66
{code}
if (obj == Py_None) {
    std::cerr << "None object given where protobuf expected" << std::endl;
    return false;
 }
{code}

And I think it's because when parsing the arguments the missing optional 
argument is interpreted as NULL and an explicit 'None' as Py_None and we didn't 
check the result properly here: 
https://github.com/apache/mesos/blob/04f8302c0cf81196e33ac538710dc5f48cd809d9/src/python/native/src/mesos/native/mesos_scheduler_driver_impl.cpp#L632

{code}
  if (filtersObj != NULL) {
    if (!readPythonProtobuf(filtersObj, &filters)) {
      PyErr_Format(PyExc_Exception,
                   "Could not deserialize Python Filters");
      return NULL;
    }
  }
{code}



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

Reply via email to