private ArrayList<StoreRequest> createAppendDataRequests(
Collection<String> segmentNames, HashMap<String, ByteArrayOutputStream> segmentContents, HashMap<String, Long> lengths,
int attributeUpdatesPerSegment, int appendsPerSegment) {
val result = new ArrayList<StoreRequest>();
val halfAttributeCount = attributeUpdatesPerSegment / 2;
for (String segmentName : segmentNames) {
if (isEmptySegment(segmentName)) {
continue;
}
for (int i = 0; i < halfAttributeCount; i++) {
result.add(store -> store.updateAttributes(segmentName, createAttributeUpdates(), TIMEOUT));
}
for (int i = 0; i < appendsPerSegment; i++) {
byte[] appendData = getAppendData(segmentName, i);
lengths.put(segmentName, lengths.getOrDefault(segmentName, 0L) + appendData.length);
recordAppend(segmentName, appendData, segmentContents);
result.add(store -> store.append(segmentName, appendData, createAttributeUpdates(), TIMEOUT));
}
for (int i = 0; i < halfAttributeCount; i++) {
result.add(store -> store.updateAttributes(segmentName, createAttributeUpdates(), TIMEOUT));
}
}
return result;
}