reduce memory usage for end points

do not copy entire segments when not needed,
reduces memory pressure on the coordinator when no. of segments is
large enough.
This commit is contained in:
nishantmonu51 2014-06-05 23:14:51 +05:30
parent 46ef5c4560
commit 03e1fb6f3f
2 changed files with 19 additions and 2 deletions

View File

@ -422,7 +422,7 @@ public class DruidCoordinator
} }
} }
public Set<DataSegment> getAvailableDataSegments() public Set<DataSegment> getOrderedAvailableDataSegments()
{ {
Set<DataSegment> availableSegments = Sets.newTreeSet(Comparators.inverse(DataSegment.bucketMonthComparator())); Set<DataSegment> availableSegments = Sets.newTreeSet(Comparators.inverse(DataSegment.bucketMonthComparator()));
@ -452,6 +452,23 @@ public class DruidCoordinator
return availableSegments; return availableSegments;
} }
public Iterable<DataSegment> getAvailableDataSegments()
{
return Iterables.concat(
Iterables.transform(
databaseSegmentManager.getInventory(),
new Function<DruidDataSource, Iterable<DataSegment>>()
{
@Override
public Iterable<DataSegment> apply(DruidDataSource input)
{
return input.getSegments();
}
}
)
);
}
@LifecycleStart @LifecycleStart
public void start() public void start()
{ {

View File

@ -41,7 +41,7 @@ public class DruidCoordinatorSegmentInfoLoader implements DruidCoordinatorHelper
public DruidCoordinatorRuntimeParams run(DruidCoordinatorRuntimeParams params) public DruidCoordinatorRuntimeParams run(DruidCoordinatorRuntimeParams params)
{ {
// Display info about all available segments // Display info about all available segments
final Set<DataSegment> availableSegments = coordinator.getAvailableDataSegments(); final Set<DataSegment> availableSegments = coordinator.getOrderedAvailableDataSegments();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Available DataSegments"); log.debug("Available DataSegments");
for (DataSegment dataSegment : availableSegments) { for (DataSegment dataSegment : availableSegments) {