private List<DataSegment> getAvailableDataSegments() { return metadataSegmentManager.getInventory() .stream() .flatMap(source -> source.getSegments().stream()) .collect(Collectors.toList()); }
@GET @Path("/segments") @Produces(MediaType.APPLICATION_JSON) public Response getDatabaseSegments(@Context final HttpServletRequest req) { final Collection<ImmutableDruidDataSource> druidDataSources = metadataSegmentManager.getInventory(); final Stream<DataSegment> metadataSegments = druidDataSources .stream() .flatMap(t -> t.getSegments().stream()); Function<DataSegment, Iterable<ResourceAction>> raGenerator = segment -> Collections.singletonList( AuthorizationUtils.DATASOURCE_READ_RA_GENERATOR.apply(segment.getDataSource())); final Iterable<DataSegment> authorizedSegments = AuthorizationUtils.filterAuthorizedResources( req, metadataSegments::iterator, raGenerator, authorizerMapper); final StreamingOutput stream = outputStream -> { final JsonFactory jsonFactory = jsonMapper.getFactory(); try (final JsonGenerator jsonGenerator = jsonFactory.createGenerator(outputStream)) { jsonGenerator.writeStartArray(); for (DataSegment ds : authorizedSegments) { jsonGenerator.writeObject(ds); jsonGenerator.flush(); } jsonGenerator.writeEndArray(); } }; Response.ResponseBuilder builder = Response.status(Response.Status.OK); return builder.entity(stream).build(); }
final Collection<ImmutableDruidDataSource> druidDataSources = metadataSegmentManager.getInventory(); final Set<String> dataSourceNamesPreAuth; if (includeDisabled != null) {
public Map<String, Double> getLoadStatus() { Map<String, Double> loadStatus = Maps.newHashMap(); for (ImmutableDruidDataSource dataSource : metadataSegmentManager.getInventory()) { final Set<DataSegment> segments = Sets.newHashSet(dataSource.getSegments()); final int availableSegmentSize = segments.size(); // remove loaded segments for (DruidServer druidServer : serverInventoryView.getInventory()) { final DruidDataSource loadedView = druidServer.getDataSource(dataSource.getName()); if (loadedView != null) { // This does not use segments.removeAll(loadedView.getSegments()) for performance reasons. // Please see https://github.com/apache/incubator-druid/pull/5632 and LoadStatusBenchmark for more info. for (DataSegment serverSegment : loadedView.getSegments()) { segments.remove(serverSegment); } } } final int unloadedSegmentSize = segments.size(); loadStatus.put( dataSource.getName(), 100 * ((double) (availableSegmentSize - unloadedSegmentSize) / (double) availableSegmentSize) ); } return loadStatus; }
DruidCoordinatorRuntimeParams.newBuilder() .withStartTime(startTime) .withDataSources(metadataSegmentManager.getInventory()) .withDynamicConfigs(getDynamicConfigs()) .withCompactionConfig(getCompactionConfig())