public class SqlSegmentsMetadataManager extends Object implements SegmentsMetadataManager
| Constructor and Description |
|---|
SqlSegmentsMetadataManager(com.fasterxml.jackson.databind.ObjectMapper jsonMapper,
com.google.common.base.Supplier<SegmentsMetadataManagerConfig> config,
com.google.common.base.Supplier<MetadataStorageTablesConfig> dbTables,
SQLMetadataConnector connector) |
| Modifier and Type | Method and Description |
|---|---|
Collection<ImmutableDruidDataSource> |
getImmutableDataSourcesWithAllUsedSegments()
Returns a set of
ImmutableDruidDataSource objects containing information about all used segments. |
ImmutableDruidDataSource |
getImmutableDataSourceWithUsedSegments(String dataSourceName)
If there are used segments belonging to the given data source this method returns them as an
ImmutableDruidDataSource object. |
DataSourcesSnapshot |
getSnapshotOfDataSourcesWithAllUsedSegments()
Returns a snapshot of DruidDataSources and overshadowed segments
|
List<org.joda.time.Interval> |
getUnusedSegmentIntervals(String dataSource,
org.joda.time.DateTime maxEndTime,
int limit)
Returns top N unused segment intervals with the end time no later than the specified maxEndTime when ordered by
segment start time, end time.
|
boolean |
isPollingDatabasePeriodically() |
com.google.common.base.Optional<Iterable<DataSegment>> |
iterateAllUsedNonOvershadowedSegmentsForDatasourceInterval(String datasource,
org.joda.time.Interval interval,
boolean requiresLatest)
Returns an iterable to go over all used and non-overshadowed segments of given data sources over given interval.
|
Iterable<DataSegment> |
iterateAllUsedSegments()
Returns an iterable to go over all segments in all data sources.
|
int |
markAsUnusedAllSegmentsInDataSource(String dataSource)
Returns the number of segment entries in the database whose state was changed as the result of this call (that is,
the segments were marked as unused).
|
int |
markAsUnusedSegmentsInInterval(String dataSourceName,
org.joda.time.Interval interval) |
int |
markAsUsedAllNonOvershadowedSegmentsInDataSource(String dataSource)
Returns the number of segment entries in the database whose state was changed as the result of this call (that is,
the segments were marked as used).
|
int |
markAsUsedNonOvershadowedSegments(String dataSource,
Set<String> segmentIds) |
int |
markAsUsedNonOvershadowedSegmentsInInterval(String dataSource,
org.joda.time.Interval interval) |
boolean |
markSegmentAsUnused(SegmentId segmentId)
This method does not update
dataSourcesSnapshot, see the comments in doPoll() about
snapshot update. |
boolean |
markSegmentAsUsed(String segmentId)
Returns true if the state of the segment entry is changed in the database as the result of this call (that is, the
segment was marked as used), false otherwise.
|
int |
markSegmentsAsUnused(Set<SegmentId> segmentIds) |
void |
poll() |
Set<String> |
retrieveAllDataSourceNames()
Retrieves all data source names for which there are segment in the database, regardless of whether those segments
are used or not.
|
void |
start()
Don't confuse this method with
startPollingDatabasePeriodically(). |
void |
startPollingDatabasePeriodically() |
void |
stop()
Don't confuse this method with
stopPollingDatabasePeriodically(). |
void |
stopPollingDatabasePeriodically() |
@Inject
public SqlSegmentsMetadataManager(com.fasterxml.jackson.databind.ObjectMapper jsonMapper,
com.google.common.base.Supplier<SegmentsMetadataManagerConfig> config,
com.google.common.base.Supplier<MetadataStorageTablesConfig> dbTables,
SQLMetadataConnector connector)
public void start()
startPollingDatabasePeriodically(). This is a lifecycle starting method to
be executed just once for an instance of SqlSegmentsMetadataManager.public void stop()
stopPollingDatabasePeriodically(). This is a lifecycle stopping method to
be executed just once for an instance of SqlSegmentsMetadataManager.public void startPollingDatabasePeriodically()
startPollingDatabasePeriodically in interface SegmentsMetadataManagerpublic boolean isPollingDatabasePeriodically()
isPollingDatabasePeriodically in interface SegmentsMetadataManagerpublic void stopPollingDatabasePeriodically()
stopPollingDatabasePeriodically in interface SegmentsMetadataManagerpublic boolean markSegmentAsUsed(String segmentId)
SegmentsMetadataManagermarkSegmentAsUsed in interface SegmentsMetadataManagerpublic int markAsUsedAllNonOvershadowedSegmentsInDataSource(String dataSource)
SegmentsMetadataManagermarkAsUsedAllNonOvershadowedSegmentsInDataSource in interface SegmentsMetadataManagerpublic int markAsUsedNonOvershadowedSegmentsInInterval(String dataSource, org.joda.time.Interval interval)
markAsUsedNonOvershadowedSegmentsInInterval in interface SegmentsMetadataManagerpublic int markAsUsedNonOvershadowedSegments(String dataSource, Set<String> segmentIds) throws UnknownSegmentIdsException
markAsUsedNonOvershadowedSegments in interface SegmentsMetadataManagerUnknownSegmentIdsExceptionpublic int markAsUnusedAllSegmentsInDataSource(String dataSource)
SegmentsMetadataManagermarkAsUnusedAllSegmentsInDataSource in interface SegmentsMetadataManagerpublic boolean markSegmentAsUnused(SegmentId segmentId)
dataSourcesSnapshot, see the comments in doPoll() about
snapshot update. The update of the segment's state will be reflected after the next DatabasePoll.markSegmentAsUnused in interface SegmentsMetadataManagerpublic int markSegmentsAsUnused(Set<SegmentId> segmentIds)
markSegmentsAsUnused in interface SegmentsMetadataManagerpublic int markAsUnusedSegmentsInInterval(String dataSourceName, org.joda.time.Interval interval)
markAsUnusedSegmentsInInterval in interface SegmentsMetadataManager@Nullable public ImmutableDruidDataSource getImmutableDataSourceWithUsedSegments(String dataSourceName)
SegmentsMetadataManagerImmutableDruidDataSource object. If there are no used segments belonging to the given data source this method
returns null.getImmutableDataSourceWithUsedSegments in interface SegmentsMetadataManagerpublic Collection<ImmutableDruidDataSource> getImmutableDataSourcesWithAllUsedSegments()
SegmentsMetadataManagerImmutableDruidDataSource objects containing information about all used segments. ImmutableDruidDataSource objects in the returned collection are unique. If there are no used segments, this method
returns an empty collection.getImmutableDataSourcesWithAllUsedSegments in interface SegmentsMetadataManagerpublic DataSourcesSnapshot getSnapshotOfDataSourcesWithAllUsedSegments()
SegmentsMetadataManagergetSnapshotOfDataSourcesWithAllUsedSegments in interface SegmentsMetadataManagerpublic Iterable<DataSegment> iterateAllUsedSegments()
SegmentsMetadataManageriterateAllUsedSegments in interface SegmentsMetadataManagerpublic com.google.common.base.Optional<Iterable<DataSegment>> iterateAllUsedNonOvershadowedSegmentsForDatasourceInterval(String datasource, org.joda.time.Interval interval, boolean requiresLatest)
SegmentsMetadataManagerperiodicPollDelay will be used.iterateAllUsedNonOvershadowedSegmentsForDatasourceInterval in interface SegmentsMetadataManagerpublic Set<String> retrieveAllDataSourceNames()
SegmentsMetadataManagerSegmentsMetadataManager.getImmutableDataSourcesWithAllUsedSegments() method. This method will include a data source name even if there
are no used segments belonging to it, while SegmentsMetadataManager.getImmutableDataSourcesWithAllUsedSegments() won't return
such a data source.retrieveAllDataSourceNames in interface SegmentsMetadataManagerpublic void poll()
poll in interface SegmentsMetadataManagerpublic List<org.joda.time.Interval> getUnusedSegmentIntervals(String dataSource, org.joda.time.DateTime maxEndTime, int limit)
SegmentsMetadataManagergetUnusedSegmentIntervals in interface SegmentsMetadataManagerCopyright © 2011–2023 The Apache Software Foundation. All rights reserved.