Uploaded image for project: 'Mesos'
  1. Mesos
  2. MESOS-8865

Suspicious enum value comparisons in scheduler Java bindings

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 1.6.0
    • java api
    • None
    • Mesosphere Sprint 79
    • 1

    Description

      Clang reports suspicious comparisons of enum values in the scheduler Java bindings,

      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:563:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::SUBSCRIBE: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:576:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::TEARDOWN: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:581:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::ACCEPT: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:601:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::ACCEPT_INVERSE_OFFERS:
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:602:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::DECLINE_INVERSE_OFFERS:
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:603:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::SHUTDOWN: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:609:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::DECLINE: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:621:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::REVIVE: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:626:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::KILL: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:631:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::ACKNOWLEDGE: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:642:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::ACKNOWLEDGE_OPERATION_STATUS:
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:645:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::RECONCILE: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:660:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::RECONCILE_OPERATIONS:
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:663:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::MESSAGE: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:671:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::REQUEST: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:682:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::SUPPRESS: {
               ^
      /home/bbannier/src/mesos/src/java/jni/org_apache_mesos_v1_scheduler_V0Mesos.cpp:687:10: warning: comparison of two values with different enumeration types in switch statement ('::mesos::scheduler::Call_Type' and 'const mesos::v1::scheduler::Call::Type' (aka 'const mesos::v1::scheduler::Call_Type')) [clang-diagnostic-enum-compare-switch]
          case Call::UNKNOWN: {
               ^
      

      While the current implementation might just work since the different enum values might by accident map onto the same integer values (needs to be confirmed), this seems brittle and against the type safety the languages offers. We should fix this code.

      Attachments

        Activity

          People

            bbannier Benjamin Bannier
            bbannier Benjamin Bannier
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: