make sure CliCoordinator initializes and starts DerbyMetadataStorage first if configured (#3700)

* make sure CliCoordinator initializes and starts DerbyMetadataStorage first if configured

* Revert "make sure CliCoordinator initializes and starts DerbyMetadataStorage first if configured"

This reverts commit 54f5644054626d4a9e2448bb4bd5e6ce9a9fca1d.

* make sure CliCoordinator initializes and starts DerbyMetadataStorage first if configured
This commit is contained in:
Himanshu 2016-12-06 12:22:04 -06:00 committed by Fangjin Yang
parent 45da7e48f1
commit 5440a06b2d
7 changed files with 32 additions and 20 deletions

View File

@ -50,7 +50,7 @@ public class LifecycleScope implements Scope
synchronized (instances) {
this.lifecycle = lifecycle;
for (Object instance : instances) {
lifecycle.addManagedInstance(instance);
lifecycle.addManagedInstance(instance, stage);
}
}
}

View File

@ -33,6 +33,7 @@ import io.druid.metadata.MetadataSegmentManager;
import io.druid.metadata.MetadataSegmentManagerProvider;
import io.druid.metadata.MetadataSegmentPublisher;
import io.druid.metadata.MetadataSegmentPublisherProvider;
import io.druid.metadata.MetadataStorage;
import io.druid.metadata.MetadataStorageActionHandlerFactory;
import io.druid.metadata.MetadataStorageConnector;
import io.druid.metadata.MetadataStorageProvider;
@ -170,6 +171,8 @@ public class SQLMetadataStorageDruidModule implements Module
@Override
public void configure(Binder binder)
{
binder.bind(MetadataStorage.class).toProvider(NoopMetadataStorageProvider.class);
PolyBind.optionBinder(binder, Key.get(MetadataSegmentManager.class))
.addBinding(type)
.to(SQLMetadataSegmentManager.class)

View File

@ -19,18 +19,13 @@
package io.druid.metadata;
import io.druid.java.util.common.lifecycle.LifecycleStart;
import io.druid.java.util.common.lifecycle.LifecycleStop;
public abstract class MetadataStorage
{
@LifecycleStart
public void start()
{
// do nothing
}
@LifecycleStop
public void stop()
{
// do nothing

View File

@ -21,8 +21,11 @@ package io.druid.metadata.storage.derby;
import com.google.common.base.Supplier;
import com.google.inject.Inject;
import io.druid.guice.ManageLifecycle;
import io.druid.java.util.common.lifecycle.LifecycleStart;
import io.druid.java.util.common.lifecycle.LifecycleStop;
import io.druid.java.util.common.logger.Logger;
import io.druid.metadata.MetadataStorage;
import io.druid.metadata.MetadataStorageConnectorConfig;
import io.druid.metadata.MetadataStorageTablesConfig;
import io.druid.metadata.SQLMetadataConnector;
@ -30,14 +33,20 @@ import org.apache.commons.dbcp2.BasicDataSource;
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.Handle;
@ManageLifecycle
public class DerbyConnector extends SQLMetadataConnector
{
private static final Logger log = new Logger(DerbyConnector.class);
private static final String SERIAL_TYPE = "BIGINT GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)";
private final DBI dbi;
private final MetadataStorage storage;
@Inject
public DerbyConnector(Supplier<MetadataStorageConnectorConfig> config, Supplier<MetadataStorageTablesConfig> dbTables)
public DerbyConnector(
MetadataStorage storage,
Supplier<MetadataStorageConnectorConfig> config,
Supplier<MetadataStorageTablesConfig> dbTables
)
{
super(config, dbTables);
@ -46,11 +55,12 @@ public class DerbyConnector extends SQLMetadataConnector
datasource.setDriverClassName("org.apache.derby.jdbc.ClientDriver");
this.dbi = new DBI(datasource);
this.storage = storage;
log.info("Configured Derby as metadata storage");
}
public DerbyConnector(
MetadataStorage storage,
Supplier<MetadataStorageConnectorConfig> config,
Supplier<MetadataStorageTablesConfig> dbTables,
DBI dbi
@ -58,6 +68,7 @@ public class DerbyConnector extends SQLMetadataConnector
{
super(config, dbTables);
this.dbi = dbi;
this.storage = storage;
}
@Override
@ -87,4 +98,16 @@ public class DerbyConnector extends SQLMetadataConnector
@Override
public String getValidationQuery() { return "VALUES 1"; }
@LifecycleStart
public void start()
{
storage.start();
}
@LifecycleStop
public void stop()
{
storage.stop();
}
}

View File

@ -21,10 +21,6 @@ package io.druid.metadata.storage.derby;
import com.google.common.base.Throwables;
import com.google.inject.Inject;
import io.druid.guice.ManageLifecycle;
import io.druid.java.util.common.lifecycle.LifecycleStart;
import io.druid.java.util.common.lifecycle.LifecycleStop;
import io.druid.java.util.common.logger.Logger;
import io.druid.metadata.MetadataStorage;
import io.druid.metadata.MetadataStorageConnectorConfig;
@ -32,8 +28,6 @@ import org.apache.derby.drda.NetworkServerControl;
import java.net.InetAddress;
@ManageLifecycle
public class DerbyMetadataStorage extends MetadataStorage
{
private static final Logger log = new Logger(DerbyMetadataStorage.class);
@ -53,7 +47,6 @@ public class DerbyMetadataStorage extends MetadataStorage
}
@Override
@LifecycleStart
public void start()
{
try {
@ -66,7 +59,6 @@ public class DerbyMetadataStorage extends MetadataStorage
}
@Override
@LifecycleStop
public void stop()
{
try {

View File

@ -48,7 +48,7 @@ public class TestDerbyConnector extends DerbyConnector
String jdbcUri
)
{
super(config, dbTables, new DBI(jdbcUri + ";create=true"));
super(new NoopMetadataStorageProvider().get(), config, dbTables, new DBI(jdbcUri + ";create=true"));
this.jdbcUri = jdbcUri;
}

View File

@ -123,8 +123,7 @@ public class CliCoordinator extends ServerRunnable
ConfigProvider.bind(binder, DruidCoordinatorConfig.class);
binder.bind(MetadataStorage.class)
.toProvider(MetadataStorageProvider.class)
.in(ManageLifecycle.class);
.toProvider(MetadataStorageProvider.class);
JsonConfigProvider.bind(binder, "druid.manager.segments", MetadataSegmentManagerConfig.class);
JsonConfigProvider.bind(binder, "druid.manager.rules", MetadataRuleManagerConfig.class);