Decouple ClusterStateTaskListener & ClusterApplier#30809
Merged
DaveCTurner merged 7 commits intoelastic:masterfrom May 24, 2018
Merged
Decouple ClusterStateTaskListener & ClusterApplier#30809DaveCTurner merged 7 commits intoelastic:masterfrom
DaveCTurner merged 7 commits intoelastic:masterfrom
Conversation
Today, the `ClusterApplier` and `MasterService` both use the `ClusterStateTaskListener` interface to notify their callers when asynchronous activities have completed. However, this is not wholly appropriate: none of the callers into the `ClusterApplier` care about the `ClusterState` arguments that they receive. This change introduces a dedicated ClusterApplyListener interface for callers into the `ClusterApplier`, to distinguish these listeners from the real `ClusterStateTaskListener`s that are waiting for responses from the `MasterService`.
Collaborator
|
Pinging @elastic/es-distributed |
DaveCTurner
commented
May 23, 2018
| logger.error(new ParameterizedMessage( | ||
| "exception thrown by listener while notifying of cluster state processed from [{}], old cluster state:\n" + | ||
| "{}\nnew cluster state:\n{}", | ||
| source, oldState, newState), e); |
Member
Author
There was a problem hiding this comment.
The only place where oldState and newState are used is in this log message.
DaveCTurner
commented
May 23, 2018
| // TODO: give discovery module control over GatewayService | ||
| clusterState = ClusterState.builder(clusterState).build(); | ||
| clusterApplier.onNewClusterState("single-node-start-initial-join", () -> clusterState, (source, e) -> {}); | ||
| clusterApplier.onNewClusterState("single-node-start-initial-join", () -> clusterState, new ClusterApplyListener() { |
Member
Author
There was a problem hiding this comment.
Possible improvement here: have a default (empty) onSuccess implementation so this can be a lambda.
DaveCTurner
commented
May 23, 2018
| new ClusterApplyListener() { | ||
| @Override | ||
| public void onSuccess(String source) { | ||
| logger.trace("{} successfully deleted unallocated shard", shardId); |
Member
Author
There was a problem hiding this comment.
Added this log message.
ywelsch
approved these changes
May 23, 2018
Contributor
ywelsch
left a comment
There was a problem hiding this comment.
+1 on having a default implementation for onSuccess so that it can be used as lambda
| package org.elasticsearch.discovery.single; | ||
|
|
||
| import org.apache.logging.log4j.message.ParameterizedMessage; | ||
| import org.elasticsearch.action.ActionListener; |
Contributor
There was a problem hiding this comment.
I don't see this being used
Member
Author
|
Ok, I've added the default empty implementation, tidied up imports, and generally put things back to how they were a bit. Ready for another look. |
DaveCTurner
added a commit
that referenced
this pull request
May 24, 2018
Today, the `ClusterApplier` and `MasterService` both use the `ClusterStateTaskListener` interface to notify their callers when asynchronous activities have completed. However, this is not wholly appropriate: none of the callers into the `ClusterApplier` care about the `ClusterState` arguments that they receive. This change introduces a dedicated ClusterApplyListener interface for callers into the `ClusterApplier`, to distinguish these listeners from the real `ClusterStateTaskListener`s that are waiting for responses from the `MasterService`.
jasontedor
added a commit
to jasontedor/elasticsearch
that referenced
this pull request
May 24, 2018
* master: Update the version checks around ip_range bucket keys, now that the change was backported. Mute IndexMasterFailoverIT.testMasterFailoverDuringIndexingWithMappingChanges Use geohash cell instead of just a corner in geo_bounding_box (elastic#30698) Limit user to single concurrent auth per realm (elastic#30794) [Tests] Move templated _rank_eval tests (elastic#30679) Security: fix dynamic mapping updates with aliases (elastic#30787) Ensure that ip_range aggregations always return bucket keys. (elastic#30701) Use remote client in TransportFieldCapsAction (elastic#30838) Move Watcher versioning setting to meta field (elastic#30832) [Docs] Explain incomplete dates in range queries (elastic#30689) Move persistent task registrations to core (elastic#30755) Decouple ClusterStateTaskListener & ClusterApplier (elastic#30809) Send client headers from TransportClient (elastic#30803) Packaging: Ensure upgrade_is_oss flag file is always deleted (elastic#30732) Force stable file modes for built packages (elastic#30823) [DOCS] Fixes typos in security settings Fix GeoShapeQueryBuilder serialization after backport
martijnvg
added a commit
that referenced
this pull request
May 25, 2018
* es/master: Move score script context from SearchScript to its own class (#30816) Fix bad version check writing Repository nodes (#30846) [docs] explainer for java packaging tests (#30825) Remove Throwable usage from transport modules (#30845) REST high-level client: add put ingest pipeline API (#30793) Update the version checks around ip_range bucket keys, now that the change was backported. Mute IndexMasterFailoverIT.testMasterFailoverDuringIndexingWithMappingChanges Use geohash cell instead of just a corner in geo_bounding_box (#30698) Limit user to single concurrent auth per realm (#30794) [Tests] Move templated _rank_eval tests (#30679) Security: fix dynamic mapping updates with aliases (#30787) Ensure that ip_range aggregations always return bucket keys. (#30701) Use remote client in TransportFieldCapsAction (#30838) Move Watcher versioning setting to meta field (#30832) [Docs] Explain incomplete dates in range queries (#30689) Move persistent task registrations to core (#30755) Decouple ClusterStateTaskListener & ClusterApplier (#30809) Send client headers from TransportClient (#30803) Packaging: Ensure upgrade_is_oss flag file is always deleted (#30732) Force stable file modes for built packages (#30823)
martijnvg
added a commit
that referenced
this pull request
May 25, 2018
* es/6.x: Move score script context from SearchScript to its own class (#30816) Fix bad version check writing Repository nodes (#30846) Modify state of VerifyRepositoryResponse for bwc (#30762) QA: Fix tribe tests when running default zip Use remote client in TransportFieldCapsAction (#30838) Mute IndexMasterFailoverIT.testMasterFailoverDuringIndexingWithMappingChanges Ensure that ip_range aggregations always return bucket keys. (#30701) Limit user to single concurrent auth per realm (#30794) Security: fix dynamic mapping updates with aliases (#30787) [Tests] Move templated _rank_eval tests (#30679) Move Watcher versioning setting to meta field (#30832) Restore "Add more yaml tests for get alias API " (#30814) Send client headers from TransportClient (#30803) [Docs] Explain incomplete dates in range queries (#30689) Move persistent task registrations to core (#30755) Decouple ClusterStateTaskListener & ClusterApplier (#30809) Packaging: Ensure upgrade_is_oss flag file is always deleted (#30732) Force stable file modes for built packages (#30823)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Today, the
ClusterApplierandMasterServiceboth use theClusterStateTaskListenerinterface to notify their callers when asynchronousactivities have completed. However, this is not wholly appropriate: none of the
callers into the
ClusterAppliercare about theClusterStatearguments thatthey receive. This change introduces a dedicated ClusterApplyListener
interface for callers into the
ClusterApplier, to distinguish these listenersfrom the real
ClusterStateTaskListeners that are waiting for responses fromthe
MasterService.