diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ReservationDefinition.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ReservationDefinition.java index 10f592a..875cae1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ReservationDefinition.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ReservationDefinition.java @@ -37,13 +37,23 @@ @Public @Unstable public static ReservationDefinition newInstance(long arrival, long deadline, - ReservationRequests reservationRequests, String name) { + ReservationRequests reservationRequests, String name, long period) { ReservationDefinition rDefinition = Records.newRecord(ReservationDefinition.class); rDefinition.setArrival(arrival); rDefinition.setDeadline(deadline); rDefinition.setReservationRequests(reservationRequests); rDefinition.setReservationName(name); + rDefinition.setPeriodicity(period); + return rDefinition; + } + + @Public + @Unstable + public static ReservationDefinition newInstance(long arrival, long deadline, + ReservationRequests reservationRequests, String name) { + ReservationDefinition rDefinition = + newInstance(arrival, deadline, reservationRequests, name, 0); return rDefinition; } @@ -134,4 +144,24 @@ public abstract void setReservationRequests( @Evolving public abstract void setReservationName(String name); + /** + * Get the periodicity of this reservation representing the time period of + * the periodic job. + * + * @return periodicity of this reservation + */ + @Public + @Evolving + public abstract long getPeriodicity(); + + /** + * Set the periodicity of this reservation representing the time period of + * the periodic job. + * + * @param period periodicity of this reservation + */ + @Public + @Evolving + public abstract void setPeriodicity(long period); + } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto index 6c337cf..d4b4b03 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto @@ -477,6 +477,7 @@ message ReservationDefinitionProto { optional int64 arrival = 2; optional int64 deadline = 3; optional string reservation_name = 4; + optional int64 period = 5; } message ResourceAllocationRequestProto { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationDefinitionPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationDefinitionPBImpl.java index cbe7ccd..3438ab9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationDefinitionPBImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/ReservationDefinitionPBImpl.java @@ -181,4 +181,20 @@ public boolean equals(Object other) { return false; } + @Override + public long getPeriodicity() { + ReservationDefinitionProtoOrBuilder p = viaProto ? proto : builder; + if (p.hasPeriod()) { + long period = p.getPeriod(); + return period; + } else { + return 0L; + } + } + + @Override + public void setPeriodicity(long period) { + builder.setPeriod(period); + } + }