@@ -32,6 +32,7 @@ public final class DatanodeStorageReport {
3232 private long remaining ;
3333 private long committed ;
3434 private long minimumFreeSpace ;
35+ private long reserved ;
3536
3637 public DatanodeStorageReport () {
3738 }
@@ -44,6 +45,8 @@ private DatanodeStorageReport(Builder builder) {
4445 this .remaining = builder .remaining ;
4546 this .committed = builder .committed ;
4647 this .minimumFreeSpace = builder .minimumFreeSpace ;
48+ this .reserved = builder .reserved ;
49+ builder .validate ();
4750 }
4851
4952 public String getDatanodeUuid () {
@@ -74,6 +77,10 @@ public long getMinimumFreeSpace() {
7477 return minimumFreeSpace ;
7578 }
7679
80+ public long getReserved () {
81+ return reserved ;
82+ }
83+
7784 public static Builder newBuilder () {
7885 return new Builder ();
7986 }
@@ -89,6 +96,7 @@ public static final class Builder {
8996 private long remaining = 0 ;
9097 private long committed = 0 ;
9198 private long minimumFreeSpace = 0 ;
99+ private long reserved = 0 ;
92100
93101 private static final Logger LOG =
94102 LoggerFactory .getLogger (Builder .class );
@@ -131,6 +139,11 @@ public Builder setMinimumFreeSpace(long minimumFreeSpace) {
131139 return this ;
132140 }
133141
142+ public Builder setReserved (long reserved ) {
143+ this .reserved = reserved ;
144+ return this ;
145+ }
146+
134147 public void validate () {
135148 Objects .requireNonNull (hostName , "hostName cannot be null" );
136149
@@ -146,6 +159,15 @@ public void validate() {
146159 if (committed < 0 ) {
147160 throw new IllegalArgumentException ("committed cannot be negative" );
148161 }
162+
163+ if (minimumFreeSpace < 0 ) {
164+ throw new IllegalArgumentException ("minimumFreeSpace cannot be negative" );
165+ }
166+
167+ if (reserved < 0 ) {
168+ throw new IllegalArgumentException ("reserved cannot be negative" );
169+ }
170+
149171 // Logical consistency checks
150172 if (used + remaining > capacity ) {
151173 LOG .warn ("Inconsistent storage report for {}: used({}) + remaining({}) > capacity({})" ,
0 commit comments