in client-tez/src/main/java/org/apache/tez/common/ShuffleAssignmentsInfoWritable.java [104:159]
public void readFields(DataInput dataInput) throws IOException {
if (dataInput.readInt() == -1) {
LOG.warn("shuffleAssignmentsInfo is null, no need read");
return;
}
Map<Integer, List<ShuffleServerInfo>> partitionToServers = new HashMap<>();
int partitionToServersSize = dataInput.readInt();
if (partitionToServersSize != -1) {
Integer partitionId;
for (int i = 0; i < partitionToServersSize; i++) {
partitionId = dataInput.readInt();
List<ShuffleServerInfo> shuffleServerInfoList = new ArrayList<>();
int shuffleServerInfoListSize = dataInput.readInt();
if (shuffleServerInfoListSize != -1) {
for (int i1 = 0; i1 < shuffleServerInfoListSize; i1++) {
String id = dataInput.readUTF();
String host = dataInput.readUTF();
int port = dataInput.readInt();
ShuffleServerInfo shuffleServerInfo = new ShuffleServerInfo(id, host, port);
shuffleServerInfoList.add(shuffleServerInfo);
}
}
partitionToServers.put(partitionId, shuffleServerInfoList);
}
}
Map<ShuffleServerInfo, List<PartitionRange>> serverToPartitionRanges = new HashMap<>();
int serverToPartitionRangesSize = dataInput.readInt();
if (serverToPartitionRangesSize != -1) {
for (int i = 0; i < serverToPartitionRangesSize; i++) {
ShuffleServerInfo shuffleServerInfo;
List<PartitionRange> partitionRangeList = new ArrayList<>();
String id = dataInput.readUTF();
String host = dataInput.readUTF();
int port = dataInput.readInt();
shuffleServerInfo = new ShuffleServerInfo(id, host, port);
int partitionRangeListSize = dataInput.readInt();
if (partitionRangeListSize != -1) {
for (int i1 = 0; i1 < partitionRangeListSize; i1++) {
int start = dataInput.readInt();
int end = dataInput.readInt();
PartitionRange partitionRange = new PartitionRange(start, end);
partitionRangeList.add(partitionRange);
}
}
serverToPartitionRanges.put(shuffleServerInfo, partitionRangeList);
}
}
shuffleAssignmentsInfo =
new ShuffleAssignmentsInfo(partitionToServers, serverToPartitionRanges);
}