mirror of https://github.com/apache/druid.git
fix redirection issues with master and overlord
This commit is contained in:
parent
36756e611b
commit
0998d835b0
|
@ -32,10 +32,10 @@ import javax.ws.rs.Path;
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
@Path("/static/info")
|
@Path("/static/info")
|
||||||
public class BackwardsCompatiableInfoResource extends InfoResource
|
public class BackwardsCompatibleInfoResource extends InfoResource
|
||||||
{
|
{
|
||||||
@Inject
|
@Inject
|
||||||
public BackwardsCompatiableInfoResource(
|
public BackwardsCompatibleInfoResource(
|
||||||
DruidCoordinator coordinator,
|
DruidCoordinator coordinator,
|
||||||
InventoryView serverInventoryView,
|
InventoryView serverInventoryView,
|
||||||
DatabaseSegmentManager databaseSegmentManager,
|
DatabaseSegmentManager databaseSegmentManager,
|
|
@ -32,9 +32,6 @@
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div>
|
|
||||||
<h2>Druid Version: ${pom.version} Druid API Version: ${druid.api.version}</h2>
|
|
||||||
</div>
|
|
||||||
<div>
|
<div>
|
||||||
<a href="view.html">View Information about the Cluster</a>
|
<a href="view.html">View Information about the Cluster</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -45,14 +45,13 @@ import io.druid.guice.annotations.Self;
|
||||||
import io.druid.server.coordinator.DruidCoordinator;
|
import io.druid.server.coordinator.DruidCoordinator;
|
||||||
import io.druid.server.coordinator.DruidCoordinatorConfig;
|
import io.druid.server.coordinator.DruidCoordinatorConfig;
|
||||||
import io.druid.server.coordinator.LoadQueueTaskMaster;
|
import io.druid.server.coordinator.LoadQueueTaskMaster;
|
||||||
import io.druid.server.http.BackwardsCompatiableInfoResource;
|
import io.druid.server.http.BackwardsCompatibleInfoResource;
|
||||||
import io.druid.server.http.CoordinatorDynamicConfigsResource;
|
import io.druid.server.http.CoordinatorDynamicConfigsResource;
|
||||||
import io.druid.server.http.CoordinatorRedirectInfo;
|
import io.druid.server.http.CoordinatorRedirectInfo;
|
||||||
import io.druid.server.http.CoordinatorResource;
|
import io.druid.server.http.CoordinatorResource;
|
||||||
import io.druid.server.http.InfoResource;
|
import io.druid.server.http.InfoResource;
|
||||||
import io.druid.server.http.RedirectFilter;
|
import io.druid.server.http.RedirectFilter;
|
||||||
import io.druid.server.http.RedirectInfo;
|
import io.druid.server.http.RedirectInfo;
|
||||||
import io.druid.server.http.RedirectServlet;
|
|
||||||
import io.druid.server.initialization.JettyServerInitializer;
|
import io.druid.server.initialization.JettyServerInitializer;
|
||||||
import org.apache.curator.framework.CuratorFramework;
|
import org.apache.curator.framework.CuratorFramework;
|
||||||
import org.eclipse.jetty.server.Server;
|
import org.eclipse.jetty.server.Server;
|
||||||
|
@ -88,8 +87,8 @@ public class CliCoordinator extends ServerRunnable
|
||||||
JsonConfigProvider.bind(binder, "druid.manager.segments", DatabaseSegmentManagerConfig.class);
|
JsonConfigProvider.bind(binder, "druid.manager.segments", DatabaseSegmentManagerConfig.class);
|
||||||
JsonConfigProvider.bind(binder, "druid.manager.rules", DatabaseRuleManagerConfig.class);
|
JsonConfigProvider.bind(binder, "druid.manager.rules", DatabaseRuleManagerConfig.class);
|
||||||
|
|
||||||
binder.bind(RedirectServlet.class).in(LazySingleton.class);
|
|
||||||
binder.bind(RedirectFilter.class).in(LazySingleton.class);
|
binder.bind(RedirectFilter.class).in(LazySingleton.class);
|
||||||
|
binder.bind(RedirectInfo.class).to(CoordinatorRedirectInfo.class).in(LazySingleton.class);
|
||||||
|
|
||||||
binder.bind(DatabaseSegmentManager.class)
|
binder.bind(DatabaseSegmentManager.class)
|
||||||
.toProvider(DatabaseSegmentManagerProvider.class)
|
.toProvider(DatabaseSegmentManagerProvider.class)
|
||||||
|
@ -101,15 +100,13 @@ public class CliCoordinator extends ServerRunnable
|
||||||
|
|
||||||
binder.bind(IndexingServiceClient.class).in(LazySingleton.class);
|
binder.bind(IndexingServiceClient.class).in(LazySingleton.class);
|
||||||
|
|
||||||
binder.bind(RedirectInfo.class).to(CoordinatorRedirectInfo.class).in(LazySingleton.class);
|
|
||||||
|
|
||||||
binder.bind(DruidCoordinator.class);
|
binder.bind(DruidCoordinator.class);
|
||||||
|
|
||||||
LifecycleModule.register(binder, DruidCoordinator.class);
|
LifecycleModule.register(binder, DruidCoordinator.class);
|
||||||
DiscoveryModule.register(binder, Self.class);
|
DiscoveryModule.register(binder, Self.class);
|
||||||
|
|
||||||
binder.bind(JettyServerInitializer.class).toInstance(new CoordinatorJettyServerInitializer());
|
binder.bind(JettyServerInitializer.class).toInstance(new CoordinatorJettyServerInitializer());
|
||||||
Jerseys.addResource(binder, BackwardsCompatiableInfoResource.class);
|
Jerseys.addResource(binder, BackwardsCompatibleInfoResource.class);
|
||||||
Jerseys.addResource(binder, InfoResource.class);
|
Jerseys.addResource(binder, InfoResource.class);
|
||||||
Jerseys.addResource(binder, CoordinatorResource.class);
|
Jerseys.addResource(binder, CoordinatorResource.class);
|
||||||
Jerseys.addResource(binder, CoordinatorDynamicConfigsResource.class);
|
Jerseys.addResource(binder, CoordinatorDynamicConfigsResource.class);
|
||||||
|
|
|
@ -120,7 +120,11 @@ public class CliOverlord extends ServerRunnable
|
||||||
binder.bind(TaskMaster.class).in(ManageLifecycle.class);
|
binder.bind(TaskMaster.class).in(ManageLifecycle.class);
|
||||||
|
|
||||||
binder.bind(TaskLogStreamer.class).to(SwitchingTaskLogStreamer.class).in(LazySingleton.class);
|
binder.bind(TaskLogStreamer.class).to(SwitchingTaskLogStreamer.class).in(LazySingleton.class);
|
||||||
binder.bind(new TypeLiteral<List<TaskLogStreamer>>(){})
|
binder.bind(
|
||||||
|
new TypeLiteral<List<TaskLogStreamer>>()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
)
|
||||||
.toProvider(
|
.toProvider(
|
||||||
new ListProvider<TaskLogStreamer>()
|
new ListProvider<TaskLogStreamer>()
|
||||||
.add(TaskRunnerTaskLogStreamer.class)
|
.add(TaskRunnerTaskLogStreamer.class)
|
||||||
|
@ -159,7 +163,10 @@ public class CliOverlord extends ServerRunnable
|
||||||
PolyBind.createChoice(
|
PolyBind.createChoice(
|
||||||
binder, "druid.indexer.storage.type", Key.get(TaskStorage.class), Key.get(HeapMemoryTaskStorage.class)
|
binder, "druid.indexer.storage.type", Key.get(TaskStorage.class), Key.get(HeapMemoryTaskStorage.class)
|
||||||
);
|
);
|
||||||
final MapBinder<String, TaskStorage> storageBinder = PolyBind.optionBinder(binder, Key.get(TaskStorage.class));
|
final MapBinder<String, TaskStorage> storageBinder = PolyBind.optionBinder(
|
||||||
|
binder,
|
||||||
|
Key.get(TaskStorage.class)
|
||||||
|
);
|
||||||
|
|
||||||
storageBinder.addBinding("local").to(HeapMemoryTaskStorage.class);
|
storageBinder.addBinding("local").to(HeapMemoryTaskStorage.class);
|
||||||
binder.bind(HeapMemoryTaskStorage.class).in(LazySingleton.class);
|
binder.bind(HeapMemoryTaskStorage.class).in(LazySingleton.class);
|
||||||
|
@ -178,7 +185,10 @@ public class CliOverlord extends ServerRunnable
|
||||||
Key.get(TaskRunnerFactory.class),
|
Key.get(TaskRunnerFactory.class),
|
||||||
Key.get(ForkingTaskRunnerFactory.class)
|
Key.get(ForkingTaskRunnerFactory.class)
|
||||||
);
|
);
|
||||||
final MapBinder<String, TaskRunnerFactory> biddy = PolyBind.optionBinder(binder, Key.get(TaskRunnerFactory.class));
|
final MapBinder<String, TaskRunnerFactory> biddy = PolyBind.optionBinder(
|
||||||
|
binder,
|
||||||
|
Key.get(TaskRunnerFactory.class)
|
||||||
|
);
|
||||||
|
|
||||||
IndexingServiceModuleHelper.configureTaskRunnerConfigs(binder);
|
IndexingServiceModuleHelper.configureTaskRunnerConfigs(binder);
|
||||||
biddy.addBinding("local").to(ForkingTaskRunnerFactory.class);
|
biddy.addBinding("local").to(ForkingTaskRunnerFactory.class);
|
||||||
|
@ -191,7 +201,9 @@ public class CliOverlord extends ServerRunnable
|
||||||
private void configureAutoscale(Binder binder)
|
private void configureAutoscale(Binder binder)
|
||||||
{
|
{
|
||||||
JsonConfigProvider.bind(binder, "druid.indexer.autoscale", ResourceManagementSchedulerConfig.class);
|
JsonConfigProvider.bind(binder, "druid.indexer.autoscale", ResourceManagementSchedulerConfig.class);
|
||||||
binder.bind(ResourceManagementStrategy.class).to(SimpleResourceManagementStrategy.class).in(LazySingleton.class);
|
binder.bind(ResourceManagementStrategy.class)
|
||||||
|
.to(SimpleResourceManagementStrategy.class)
|
||||||
|
.in(LazySingleton.class);
|
||||||
|
|
||||||
JacksonConfigProvider.bind(binder, WorkerSetupData.CONFIG_KEY, WorkerSetupData.class, null);
|
JacksonConfigProvider.bind(binder, WorkerSetupData.CONFIG_KEY, WorkerSetupData.class, null);
|
||||||
|
|
||||||
|
@ -220,13 +232,17 @@ public class CliOverlord extends ServerRunnable
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
private static class OverlordJettyServerInitializer implements JettyServerInitializer
|
private static class OverlordJettyServerInitializer implements JettyServerInitializer
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void initialize(Server server, Injector injector)
|
public void initialize(Server server, Injector injector)
|
||||||
{
|
{
|
||||||
ResourceHandler resourceHandler = new ResourceHandler();
|
final ServletContextHandler redirect = new ServletContextHandler(ServletContextHandler.SESSIONS);
|
||||||
|
redirect.setContextPath("/");
|
||||||
|
redirect.addFilter(new FilterHolder(injector.getInstance(RedirectFilter.class)), "/*", null);
|
||||||
|
|
||||||
|
final ResourceHandler resourceHandler = new ResourceHandler();
|
||||||
resourceHandler.setBaseResource(
|
resourceHandler.setBaseResource(
|
||||||
new ResourceCollection(
|
new ResourceCollection(
|
||||||
new String[]{
|
new String[]{
|
||||||
|
@ -240,12 +256,11 @@ public class CliOverlord extends ServerRunnable
|
||||||
root.setContextPath("/");
|
root.setContextPath("/");
|
||||||
|
|
||||||
HandlerList handlerList = new HandlerList();
|
HandlerList handlerList = new HandlerList();
|
||||||
handlerList.setHandlers(new Handler[]{resourceHandler, root, new DefaultHandler()});
|
handlerList.setHandlers(new Handler[]{redirect, resourceHandler, root, new DefaultHandler()});
|
||||||
server.setHandler(handlerList);
|
server.setHandler(handlerList);
|
||||||
|
|
||||||
root.addServlet(new ServletHolder(new DefaultServlet()), "/*");
|
root.addServlet(new ServletHolder(new DefaultServlet()), "/*");
|
||||||
root.addFilter(GzipFilter.class, "/*", null);
|
root.addFilter(GzipFilter.class, "/*", null);
|
||||||
root.addFilter(new FilterHolder(injector.getInstance(RedirectFilter.class)), "/*", null);
|
|
||||||
root.addFilter(GuiceFilter.class, "/*", null);
|
root.addFilter(GuiceFilter.class, "/*", null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,25 +36,28 @@ import org.eclipse.jetty.servlet.ServletHolder;
|
||||||
import org.eclipse.jetty.servlets.GzipFilter;
|
import org.eclipse.jetty.servlets.GzipFilter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
class CoordinatorJettyServerInitializer implements JettyServerInitializer
|
class CoordinatorJettyServerInitializer implements JettyServerInitializer
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void initialize(Server server, Injector injector)
|
public void initialize(Server server, Injector injector)
|
||||||
{
|
{
|
||||||
ResourceHandler resourceHandler = new ResourceHandler();
|
final ServletContextHandler redirect = new ServletContextHandler(ServletContextHandler.SESSIONS);
|
||||||
|
redirect.setContextPath("/");
|
||||||
|
redirect.addFilter(new FilterHolder(injector.getInstance(RedirectFilter.class)), "/*", null);
|
||||||
|
|
||||||
|
final ResourceHandler resourceHandler = new ResourceHandler();
|
||||||
resourceHandler.setResourceBase(DruidCoordinator.class.getClassLoader().getResource("static").toExternalForm());
|
resourceHandler.setResourceBase(DruidCoordinator.class.getClassLoader().getResource("static").toExternalForm());
|
||||||
|
|
||||||
final ServletContextHandler root = new ServletContextHandler(ServletContextHandler.SESSIONS);
|
final ServletContextHandler root = new ServletContextHandler(ServletContextHandler.SESSIONS);
|
||||||
root.setContextPath("/");
|
root.setContextPath("/");
|
||||||
|
|
||||||
HandlerList handlerList = new HandlerList();
|
HandlerList handlerList = new HandlerList();
|
||||||
handlerList.setHandlers(new Handler[]{resourceHandler, root, new DefaultHandler()});
|
handlerList.setHandlers(new Handler[]{redirect, resourceHandler, root, new DefaultHandler()});
|
||||||
server.setHandler(handlerList);
|
server.setHandler(handlerList);
|
||||||
|
|
||||||
root.addServlet(new ServletHolder(new DefaultServlet()), "/*");
|
root.addServlet(new ServletHolder(new DefaultServlet()), "/*");
|
||||||
root.addFilter(GzipFilter.class, "/*", null);
|
root.addFilter(GzipFilter.class, "/*", null);
|
||||||
root.addFilter(new FilterHolder(injector.getInstance(RedirectFilter.class)), "/*", null);
|
|
||||||
root.addFilter(GuiceFilter.class, "/*", null);
|
root.addFilter(GuiceFilter.class, "/*", null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue