Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[QTL] Query time lookup cluster wide config #1576

Merged
merged 1 commit into from
Mar 18, 2016

Conversation

drcrallen
Copy link
Contributor

This is the next PR for QTL where cluster wide configuration is possible.

This approach uses POSTs from the coordinator to populate QTL information in all interested nodes. Interested nodes "register" via the Announcer (currently ZK based). But all communication occurs through HTTP directly between the coordinator and the node.

The PR lists over 4k lines, but a LOT of that is tests.

TODO: Ready to merge

  • Proposal for coordinator and node endpoints
  • Squash (Leaving change log while reviews are occurring)
  • Docs Punted until extensions are updated
  • Migrate coordinator code to a module.
  • Figure out a better way to handle the listening handling. (see Add listening-announcer extension #2286 ) added in this PR in core
  • Migrate lookup config to auditable config type.
  • Rebase on Promoting LookupExtractor state and LookupExtractorFactory to be a first class druid state object. #2291
  • Move core stuff and extension stuff to its own commit
  • Make sure put functions as expected. (I don't think deleting actually works in this version)
  • Make sure initialization behaves as expected
  • Actually run the thing locally
  • Reconcile need for static config vs dynamic config. Ex: what happens if someone requests a delete or get of a lookup defined in runtime.properties? No static config
  • More unit tests for delete funciton
  • Make timeouts configurable done
  • Document historical node endpoints as advanced feature
  • Document experimental update aspect Added javadoc for replaces addition to LookupExtractorFactory

KNOWN ISSUES:

Currently if someone manually goes in and modifies lookups on a lookup node, the cluster wide config will attempt to re-populate that node. The way to get around this behavior is to add the lookups to the node independent of cluster-wide config.

The lookup coordinator does try to delete lookups that were removed from the config.

THERE IS A MAJOR CAVEAT HERE: If a node's network is disconnected during this delete (or it is otherwise temporarily unavailable) there is no good way for the coordinator to know that, when it can communicate with the node again, if the some_lookup is has is supposed to be there as a custom config, or if some_lookup is there from a failed delete.

Such an occurrence should be RARE in the current IMPL though.

@@ -46,4 +46,6 @@ public Void insertOrUpdate(
public void createTaskTables();

public void createAuditTable();

public void createNamespacesTable();
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm considering moving this to a module, so don't get caught up on it being in mainline druid

@@ -234,17 +238,17 @@
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>4.0-beta</version>
<version>4.0</version>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will remove these version changes shortly.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@drcrallen drcrallen force-pushed the queryTimeLookup_announce branch 3 times, most recently from 5e1ed09 to ab97768 Compare August 10, 2015 22:58
@drcrallen drcrallen closed this Aug 17, 2015
@drcrallen drcrallen reopened this Aug 17, 2015
@drcrallen drcrallen added this to the 0.8.2 milestone Aug 17, 2015
@drcrallen drcrallen closed this Sep 4, 2015
@drcrallen drcrallen reopened this Sep 4, 2015
@drcrallen drcrallen closed this Sep 8, 2015
@drcrallen drcrallen reopened this Sep 8, 2015
@drcrallen drcrallen modified the milestones: 0.9.0, 0.8.2 Sep 22, 2015
@drcrallen drcrallen removed this from the 0.9.0 milestone Oct 20, 2015
@drcrallen
Copy link
Contributor Author

Closing for now

@drcrallen drcrallen closed this Dec 18, 2015


# Lookups Dynamic Config (EXPERIMENTAL)
Thse configuration options control the behavior of the Lookup dynamic configuration described in the [lookups page](../querying/lookups.html)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/Thse/These/g

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@nishantmonu51
Copy link
Member

have finished reviewing this PR -
two comments -

  1. there are places where namespace and lookup are used interchangeably, minor places like variable names, package names needs to be changed
  2. In the initialization the user is required to manually init with an empty lookup, which can be avoided, but not a blocker for PR and can be added in a github issue and done in a separate PR.

I am 👍 on this and think this can be merged once 1 is taken care of unless @b-slim has any more comments.

@drcrallen
Copy link
Contributor Author

Squashed

@@ -26,7 +26,7 @@
<parent>
<groupId>io.druid</groupId>
<artifactId>druid</artifactId>
<version>0.9.1-SNAPSHOT</version>
<version>0.9.0-SNAPSHOT</version>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll undo these, give me a sec

@drcrallen drcrallen force-pushed the queryTimeLookup_announce branch 4 times, most recently from 0211eef to 2f36d73 Compare March 18, 2016 01:29
LifecycleModule.register(binder, LookupReferencesManager.class);
JsonConfigProvider.bind(binder, PROPERTY_BASE, LookupListeningAnnouncerConfig.class);
Jerseys.addResource(binder, LookupListeningResource.class);
LifecycleModule.register(binder, LookupReferencesManager.class);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

duplicated LifecycleModule.register(binder, LookupReferencesManager.class)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good call, artifact of merging module definitions. Fixed

@b-slim
Copy link
Contributor

b-slim commented Mar 18, 2016

👍 please make sure to have the issue linked to the future improvement especially about initialization.

@b-slim b-slim closed this Mar 18, 2016
@b-slim b-slim reopened this Mar 18, 2016
nishantmonu51 added a commit that referenced this pull request Mar 18, 2016
[QTL] Query time lookup cluster wide config
@nishantmonu51 nishantmonu51 merged commit 52522eb into apache:master Mar 18, 2016
@drcrallen drcrallen deleted the queryTimeLookup_announce branch March 18, 2016 19:15
seoeun25 pushed a commit to seoeun25/incubator-druid that referenced this pull request Jan 10, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants