You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2019/07/02 04:38:32 UTC

[mesos] 03/03: Added constructors with a list of suppressed roles to Java V0 bindings.

This is an automated email from the ASF dual-hosted git repository.

bmahler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git

commit 5d2732692541ec9aecba20c501fb5e35a19ab49f
Author: Andrei Sekretenko <as...@mesosphere.io>
AuthorDate: Tue Jul 2 00:26:37 2019 -0400

    Added constructors with a list of suppressed roles to Java V0 bindings.
    
    Review: https://reviews.apache.org/r/70945/
---
 .../jni/org_apache_mesos_MesosSchedulerDriver.cpp  |  23 +++++
 .../src/org/apache/mesos/MesosSchedulerDriver.java | 106 +++++++++++++++++++++
 2 files changed, 129 insertions(+)

diff --git a/src/java/jni/org_apache_mesos_MesosSchedulerDriver.cpp b/src/java/jni/org_apache_mesos_MesosSchedulerDriver.cpp
index 5ac9a64..f81a69a 100644
--- a/src/java/jni/org_apache_mesos_MesosSchedulerDriver.cpp
+++ b/src/java/jni/org_apache_mesos_MesosSchedulerDriver.cpp
@@ -548,12 +548,34 @@ JNIEXPORT void JNICALL Java_org_apache_mesos_MesosSchedulerDriver_initialize
     jcredential = env->GetObjectField(thiz, credential.get());
   }
 
+  // Get out the suppressedRoles passed into the constructor.
+  //
+  // NOTE: Older versions (< 1.9.0) of MesosSchedulerDriver do not set the
+  // 'suppressedRoles' field. To be backwards compatible, we should use an empty
+  // list of suppressed roles if the field is not set.
+
+  Result<jfieldID> suppressedRolesFieldID = getFieldID(
+      env, clazz, "suppressedRoles", "Ljava/util/Collection;");
+  if (suppressedRolesFieldID.isError()) {
+    return; // Exception has been thrown.
+  }
+
+  vector<string> suppressedRoles;
+  if (suppressedRolesFieldID.isSome()) {
+    jobject jsuppressedRoles =
+      env->GetObjectField(thiz, suppressedRolesFieldID.get());
+    if (jsuppressedRoles != nullptr) {
+      suppressedRoles = constructFromIterable<string>(env, jsuppressedRoles);
+    }
+  }
+
   // Create the C++ driver.
   MesosSchedulerDriver* driver = nullptr;
   if (jcredential != nullptr) {
      driver = new MesosSchedulerDriver(
         scheduler,
         construct<FrameworkInfo>(env, jframework),
+        suppressedRoles,
         construct<string>(env, jmaster),
         construct(env, jimplicitAcknowledgements),
         construct<Credential>(env, jcredential));
@@ -561,6 +583,7 @@ JNIEXPORT void JNICALL Java_org_apache_mesos_MesosSchedulerDriver_initialize
     driver = new MesosSchedulerDriver(
        scheduler,
        construct<FrameworkInfo>(env, jframework),
+       suppressedRoles,
        construct<string>(env, jmaster),
        construct(env, jimplicitAcknowledgements));
   }
diff --git a/src/java/src/org/apache/mesos/MesosSchedulerDriver.java b/src/java/src/org/apache/mesos/MesosSchedulerDriver.java
index fb16b67..772a738 100644
--- a/src/java/src/org/apache/mesos/MesosSchedulerDriver.java
+++ b/src/java/src/org/apache/mesos/MesosSchedulerDriver.java
@@ -105,6 +105,7 @@ public class MesosSchedulerDriver implements SchedulerDriver {
 
     this.scheduler = scheduler;
     this.framework = framework;
+    this.suppressedRoles = null;
     this.master = master;
     this.implicitAcknowledgements = true;
     this.credential = null;
@@ -146,6 +147,7 @@ public class MesosSchedulerDriver implements SchedulerDriver {
 
     this.scheduler = scheduler;
     this.framework = framework;
+    this.suppressedRoles = null;
     this.master = master;
     this.implicitAcknowledgements = true;
     this.credential = credential;
@@ -185,6 +187,7 @@ public class MesosSchedulerDriver implements SchedulerDriver {
 
     this.scheduler = scheduler;
     this.framework = framework;
+    this.suppressedRoles = null;
     this.master = master;
     this.implicitAcknowledgements = implicitAcknowledgements;
     this.credential = null;
@@ -231,6 +234,7 @@ public class MesosSchedulerDriver implements SchedulerDriver {
 
     this.scheduler = scheduler;
     this.framework = framework;
+    this.suppressedRoles = null;
     this.master = master;
     this.implicitAcknowledgements = implicitAcknowledgements;
     this.credential = credential;
@@ -238,6 +242,107 @@ public class MesosSchedulerDriver implements SchedulerDriver {
     initialize();
   }
 
+  /**
+   * Same as the other constructors, except that it accepts the newly
+   * introduced 'suppressedRoles' parameter.
+   *
+   * @param scheduler   The scheduler implementation which callbacks are invoked
+   *                    upon scheduler events.
+   * @param framework   The frameworkInfo describing the current framework.
+   * @param suppressedRoles  The collection of initially suppressed roles.
+   * @param master      The address to the currently active Mesos master.
+   * @param implicitAcknowledgements  Whether the driver should send
+   *            acknowledgements on behalf of the scheduler. Setting this to
+   *            false allows schedulers to perform their own acknowledgements,
+   *            which enables asynchronous / batch processing of status updates.
+   */
+  public MesosSchedulerDriver(Scheduler scheduler,
+                              FrameworkInfo framework,
+                              Collection<String> suppressedRoles,
+                              String master,
+                              boolean implicitAcknowledgements) {
+
+    if (scheduler == null) {
+      throw new NullPointerException("Not expecting a null Scheduler");
+    }
+
+    if (framework == null) {
+      throw new NullPointerException("Not expecting a null FrameworkInfo");
+    }
+
+    if (suppressedRoles == null) {
+      throw new NullPointerException("Not expecting a null suppressedRoles");
+    }
+
+    if (master == null) {
+      throw new NullPointerException("Not expecting a null master");
+    }
+
+    this.scheduler = scheduler;
+    this.framework = framework;
+    this.suppressedRoles = suppressedRoles;
+    this.master = master;
+    this.implicitAcknowledgements = implicitAcknowledgements;
+    this.credential = null;
+
+    initialize();
+  }
+
+
+  /**
+   * Same as the other constructors, except that it accepts the newly
+   * introduced 'suppressedRoles' parameter.
+   *
+   * @param scheduler   The scheduler implementation which callbacks are invoked
+   *                    upon scheduler events.
+   * @param framework   The frameworkInfo describing the current framework.
+   * @param suppressedRoles  The collection of initially suppressed roles.
+   * @param master      The address to the currently active Mesos master.
+   * @param implicitAcknowledgements  Whether the driver should send
+   *            acknowledgements on behalf of the scheduler. Setting this to
+   *            false allows schedulers to perform their own acknowledgements,
+   *            which enables asynchronous / batch processing of status updates.
+   * @param credential  The credentials that will be used used to authenticate
+   *                    calls from this scheduler.
+   */
+  public MesosSchedulerDriver(Scheduler scheduler,
+                              FrameworkInfo framework,
+                              Collection<String> suppressedRoles,
+                              String master,
+                              boolean implicitAcknowledgements,
+                              Credential credential) {
+
+    if (scheduler == null) {
+      throw new NullPointerException("Not expecting a null Scheduler");
+    }
+
+    if (framework == null) {
+      throw new NullPointerException("Not expecting a null FrameworkInfo");
+    }
+
+    if (suppressedRoles == null) {
+      throw new NullPointerException("Not expecting a null suppressedRoles");
+    }
+
+    if (master == null) {
+      throw new NullPointerException("Not expecting a null master");
+    }
+
+    if (credential == null) {
+      throw new NullPointerException("Not expecting a null credential");
+    }
+
+    this.scheduler = scheduler;
+    this.framework = framework;
+    this.suppressedRoles = suppressedRoles;
+    this.master = master;
+    this.implicitAcknowledgements = implicitAcknowledgements;
+    this.credential = credential;
+
+    initialize();
+  }
+
+
   public native Status start();
 
   public native Status stop(boolean failover);
@@ -306,6 +411,7 @@ public class MesosSchedulerDriver implements SchedulerDriver {
 
   private final Scheduler scheduler;
   private final FrameworkInfo framework;
+  private final Collection<String> suppressedRoles;
   private final String master;
   private final boolean implicitAcknowledgements;
   private final Credential credential;