[Core] Added support for submission-time task names. (#10449)

* Added support for submission-time task names.

* Suggestions from code review: add missing consts

Co-authored-by: SangBin Cho <rkooo567@gmail.com>

* Add num_returns arg to actor method options docstring example.

* Add process name line and proctitle assertion to submission-time task name section of advanced docs.

* Add submission-time task name --> proctitle test for Python worker.

* Added Python actor options tests for num_returns and name.

* Added Java test for submission-time task names.

* Add dashboard image to task name docs section.

* Move to fstrings.

Co-authored-by: SangBin Cho <rkooo567@gmail.com>
This commit is contained in:
Clark Zinzow
2020-09-03 12:45:24 -06:00
committed by GitHub
parent 71274954d1
commit 0c0b0d0a73
37 changed files with 361 additions and 135 deletions
@@ -12,9 +12,20 @@ public class BaseTaskCaller<T extends BaseTaskCaller<T>> {
private CallOptions.Builder builder = new CallOptions.Builder();
/**
* Set a custom resource requirement for resource {@code name}.
* This method can be called multiple times. If the same resource is set multiple times,
* the latest quantity will be used.
* Set a name for this task.
*
* @param name task name
* @return self
* @see CallOptions.Builder#setName(java.lang.String)
*/
public T setName(String name) {
builder.setName(name);
return self();
}
/**
* Set a custom resource requirement for resource {@code name}. This method can be called multiple
* times. If the same resource is set multiple times, the latest quantity will be used.
*
* @param name resource name
* @param value resource capacity
@@ -27,9 +38,8 @@ public class BaseTaskCaller<T extends BaseTaskCaller<T>> {
}
/**
* Set custom requirements for multiple resources.
* This method can be called multiple times. If the same resource is set multiple times,
* the latest quantity will be used.
* Set custom requirements for multiple resources. This method can be called multiple times. If
* the same resource is set multiple times, the latest quantity will be used.
*
* @param resources requirements for multiple resources.
* @return self
@@ -48,5 +58,4 @@ public class BaseTaskCaller<T extends BaseTaskCaller<T>> {
protected CallOptions buildOptions() {
return builder.build();
}
}
@@ -3,26 +3,36 @@ package io.ray.api.options;
import java.util.HashMap;
import java.util.Map;
/**
* The options for RayCall.
*/
/** The options for RayCall. */
public class CallOptions extends BaseTaskOptions {
private CallOptions(Map<String, Double> resources) {
public final String name;
private CallOptions(String name, Map<String, Double> resources) {
super(resources);
this.name = name;
}
/**
* This inner class for building CallOptions.
*/
/** This inner class for building CallOptions. */
public static class Builder {
private String name;
private Map<String, Double> resources = new HashMap<>();
/**
* Set a custom resource requirement for resource {@code name}.
* This method can be called multiple times. If the same resource is set multiple times,
* the latest quantity will be used.
* Set a name for this task.
*
* @param name task name
* @return self
*/
public Builder setName(String name) {
this.name = name;
return this;
}
/**
* Set a custom resource requirement for resource {@code name}. This method can be called
* multiple times. If the same resource is set multiple times, the latest quantity will be used.
*
* @param name resource name
* @param value resource capacity
@@ -34,9 +44,8 @@ public class CallOptions extends BaseTaskOptions {
}
/**
* Set custom requirements for multiple resources.
* This method can be called multiple times. If the same resource is set multiple times,
* the latest quantity will be used.
* Set custom requirements for multiple resources. This method can be called multiple times. If
* the same resource is set multiple times, the latest quantity will be used.
*
* @param resources requirements for multiple resources.
* @return self
@@ -47,7 +56,7 @@ public class CallOptions extends BaseTaskOptions {
}
public CallOptions build() {
return new CallOptions(resources);
return new CallOptions(name, resources);
}
}
}
@@ -0,0 +1,19 @@
package io.ray.test;
import io.ray.api.Ray;
import org.testng.Assert;
import org.testng.annotations.Test;
/** Task Name Test. */
public class TaskNameTest extends BaseTest {
private static int testFoo() {
return 0;
}
/** Test setting task name at task submission time. */
@Test
public void testSetName() {
Assert.assertEquals(0, (int) Ray.task(TaskNameTest::testFoo).setName("foo").remote().get());
}
}