2.4 and 2.6:

public long getRemaining(StorageType t) {
  long remaining = 0;
  for(DatanodeStorageInfo s : getStorageInfos()) {
    if (s.getStorageType() == t) {
      remaining += s.getRemaining();
    }
  }
  return remaining;
}


On Mon, Jan 29, 2018 at 6:12 PM, Vinayakumar B <vinayakum...@apache.org>
wrote:

> in which version of Hadoop you are seeing this?
>
> -Vinay
>
> On 29 Jan 2018 3:26 pm, "Xie Gang" <xiegang...@gmail.com> wrote:
>
> Hello,
>
> We recently hit a issue that almost all the disk of the datanode got full
> even we configured the du .reserved.
>
> After tracking down the code, found that when we choose a target datanode
> and check if it's good candidate for block allocation (isGoodTarget()), it
> only checks if the total left space of all the volumes(the same type), not
> each volume. This logic makes the reservation of each volume useless.
> Is this a problem or do I have any misunderstanding?
>
> final long remaining = node.getRemaining(storage.getStorageType());
> if (requiredSize > remaining - scheduledSize) {
>   logNodeIsNotChosen(storage, "the node does not have enough "
>           + storage.getStorageType() + " space"
>           + " (required=" + requiredSize
>           + ", scheduled=" + scheduledSize
>           + ", remaining=" + remaining + ")");
>   stats.incrOverScheduled();
>   return false;
> }
>
>
>
> --
> Xie Gang
>



-- 
Xie Gang

Reply via email to