Package org.elasticsearch.cluster
Interface ClusterState.FeatureAware
- All Known Subinterfaces:
ClusterState.Custom
,Metadata.Custom
,Metadata.NonRestorableCustom
,PersistentTaskParams
- All Known Implementing Classes:
ComponentTemplateMetadata
,ComposableIndexTemplateMetadata
,DataStreamMetadata
,ElasticsearchNodeCommand.UnknownMetadataCustom
,IndexGraveyard
,IngestMetadata
,NodesShutdownMetadata
,PersistentTasksCustomMetadata
,RepositoriesMetadata
,RepositoryCleanupInProgress
,RestoreInProgress
,ScriptMetadata
,SnapshotDeletionsInProgress
,SnapshotsInProgress
- Enclosing class:
- ClusterState
public static interface ClusterState.FeatureAware
An interface that implementors use when a class requires a client to maybe have a feature.
-
Method Summary
Modifier and TypeMethodDescriptionAn optional feature that is required for the client to have.static <T extends VersionedNamedWriteable & ClusterState.FeatureAware>
booleanshouldSerialize(StreamOutput out, T custom)
Tests whether or not the custom should be serialized.
-
Method Details
-
getRequiredFeature
An optional feature that is required for the client to have.- Returns:
- an empty optional if no feature is required otherwise a string representing the required feature
-
shouldSerialize
static <T extends VersionedNamedWriteable & ClusterState.FeatureAware> boolean shouldSerialize(StreamOutput out, T custom)Tests whether or not the custom should be serialized. The criteria are:- the output stream must be at least the minimum supported version of the custom
- the output stream must have the feature required by the custom (if any) or not be a transport client
That is, we only serialize customs to clients than can understand the custom based on the version of the client and the features that the client has. For transport clients we can be lenient in requiring a feature in which case we do not send the custom but for connected nodes we always require that the node has the required feature.
- Type Parameters:
T
- the type of the custom- Parameters:
out
- the output streamcustom
- the custom to serialize- Returns:
- true if the custom should be serialized and false otherwise
-