bug fix for using configurable default for datasource
diff --git a/server/src/main/java/com/metamx/druid/db/DatabaseRuleManager.java b/server/src/main/java/com/metamx/druid/db/DatabaseRuleManager.java
index 0ecc9a2..a9955d8 100644
--- a/server/src/main/java/com/metamx/druid/db/DatabaseRuleManager.java
+++ b/server/src/main/java/com/metamx/druid/db/DatabaseRuleManager.java
@@ -53,7 +53,12 @@
*/
public class DatabaseRuleManager
{
- public static void createDefaultRule(final DBI dbi, final String ruleTable, final ObjectMapper jsonMapper)
+ public static void createDefaultRule(
+ final DBI dbi,
+ final String ruleTable,
+ final String defaultDatasource,
+ final ObjectMapper jsonMapper
+ )
{
try {
dbi.withHandle(
@@ -64,8 +69,9 @@
{
List<Map<String, Object>> existing = handle.select(
String.format(
- "SELECT id from %s where datasource='_default';",
- ruleTable
+ "SELECT id from %s where datasource=%s;",
+ ruleTable,
+ defaultDatasource
)
);
@@ -80,7 +86,6 @@
"_default_tier"
)
);
- final String dataSource = "_default";
final String version = new DateTime().toString();
handle.createStatement(
String.format(
@@ -88,8 +93,8 @@
ruleTable
)
)
- .bind("id", String.format("%s_%s", dataSource, version))
- .bind("dataSource", dataSource)
+ .bind("id", String.format("%s_%s", defaultDatasource, version))
+ .bind("dataSource", defaultDatasource)
.bind("version", version)
.bind("payload", jsonMapper.writeValueAsString(defaultRules))
.execute();
diff --git a/server/src/main/java/com/metamx/druid/db/DatabaseRuleManagerConfig.java b/server/src/main/java/com/metamx/druid/db/DatabaseRuleManagerConfig.java
index 33b35ad..41e21a0 100644
--- a/server/src/main/java/com/metamx/druid/db/DatabaseRuleManagerConfig.java
+++ b/server/src/main/java/com/metamx/druid/db/DatabaseRuleManagerConfig.java
@@ -31,6 +31,7 @@
public abstract String getRuleTable();
@Config("druid.database.defaultDatasource")
+ @Default("_default")
public abstract String getDefaultDatasource();
@Config("druid.database.rules.poll.duration")
diff --git a/server/src/main/java/com/metamx/druid/http/MasterMain.java b/server/src/main/java/com/metamx/druid/http/MasterMain.java
index 6bb6d50..51df502 100644
--- a/server/src/main/java/com/metamx/druid/http/MasterMain.java
+++ b/server/src/main/java/com/metamx/druid/http/MasterMain.java
@@ -132,7 +132,12 @@
databaseRuleManagerConfig,
dbi
);
- DatabaseRuleManager.createDefaultRule(dbi, databaseRuleManagerConfig.getRuleTable(), jsonMapper);
+ DatabaseRuleManager.createDefaultRule(
+ dbi,
+ databaseRuleManagerConfig.getRuleTable(),
+ databaseRuleManagerConfig.getDefaultDatasource(),
+ jsonMapper
+ );
final ScheduledExecutorService globalScheduledExec = scheduledExecutorFactory.create(1, "Global--%d");
final MonitorScheduler healthMonitor = new MonitorScheduler(
diff --git a/server/src/main/java/com/metamx/druid/utils/DruidSetup.java b/server/src/main/java/com/metamx/druid/utils/DruidSetup.java
index 6b7c9e1..8df47ba 100644
--- a/server/src/main/java/com/metamx/druid/utils/DruidSetup.java
+++ b/server/src/main/java/com/metamx/druid/utils/DruidSetup.java
@@ -128,22 +128,26 @@
InputStream is = null;
try {
is = new FileInputStream(pfile);
- } catch (FileNotFoundException e) {
+ }
+ catch (FileNotFoundException e) {
System.err.println("File not found: " + pfile);
System.err.println("No changes made.");
System.exit(4);
- } catch (IOException ioe) {
+ }
+ catch (IOException ioe) {
reportErrorAndExit(pfile, ioe);
}
try {
props.load(is);
- } catch (IOException e) {
+ }
+ catch (IOException e) {
reportErrorAndExit(pfile, e);
- } finally {
+ }
+ finally {
Closeables.closeQuietly(is);
}
- if (! Initialization.validateResolveProps(props)) { // bail, errors have been emitted
+ if (!Initialization.validateResolveProps(props)) { // bail, errors have been emitted
System.exit(9);
}
@@ -152,14 +156,16 @@
for (String pname : Initialization.SUB_PATH_PROPS) {
System.out.println(" " + pname + "=" + props.getProperty(pname));
}
- System.out.println(" " + "druid.zk.paths.propertiesPath" + "=" +
- props.getProperty("druid.zk.paths.propertiesPath"));
+ System.out.println(
+ " " + "druid.zk.paths.propertiesPath" + "=" +
+ props.getProperty("druid.zk.paths.propertiesPath")
+ );
}
/**
* @param zkClient zookeeper client.
- * @param zpathBase znode base path.
+ * @param zpathBase znode base path.
* @param zkConnect ZK coordinates in the form host1:port1[,host2:port2[, ...]]
* @param out
*/
@@ -172,7 +178,8 @@
out.println("# Begin Properties Listing for zkConnect=" + zkConnect + " zpath=" + propPath);
try {
currProps.store(out, "Druid");
- } catch (IOException ignored) {
+ }
+ catch (IOException ignored) {
}
out.println("# End Properties Listing for zkConnect=" + zkConnect + " zpath=" + propPath);
out.println("# NOTE: properties like druid.zk.paths.*Path are always stored in zookeeper in absolute form.");
@@ -205,10 +212,10 @@
}
/**
- * @param zkClient zookeeper client.
- * @param zpathBase znode base path.
- * @param props the properties to store.
- * @param out the PrintStream for human readable update summary (usually System.out).
+ * @param zkClient zookeeper client.
+ * @param zpathBase znode base path.
+ * @param props the properties to store.
+ * @param out the PrintStream for human readable update summary (usually System.out).
*/
private static void updatePropertiesZK(ZkClient zkClient, String zpathBase, Properties props, PrintStream out)
{
@@ -231,7 +238,9 @@
String currMetaPropVal = "";
StringBuilder changes = new StringBuilder(1024);
for (String pname : props.stringPropertyNames()) {
- if (pname.equals(PropertiesZkSerializer.META_PROP)) continue; // ignore meta prop datestamp, if any
+ if (pname.equals(PropertiesZkSerializer.META_PROP)) {
+ continue; // ignore meta prop datestamp, if any
+ }
final String pvalue = props.getProperty(pname);
final String pvalueCurr = currProps.getProperty(pname);
if (pvalueCurr == null) {
@@ -242,7 +251,7 @@
} else {
countDiffer++;
changes.append("CHANGED: ").append(pname).append("= PREV=").append(pvalueCurr)
- .append(" NOW=").append(pvalue).append("\n");
+ .append(" NOW=").append(pvalue).append("\n");
}
}
}
@@ -257,7 +266,8 @@
}
}
if (countNew + countRemoved + countDiffer > 0) {
- out.println("Current properties differ: "
+ out.println(
+ "Current properties differ: "
+ countNew + " new, "
+ countDiffer + " different values, "
+ countRemoved + " removed, "
@@ -281,9 +291,9 @@
}
/**
- * @param zkClient zookeeper client.
- * @param zpathBase znode base path.
- * @param out the PrintStream for human readable update summary.
+ * @param zkClient zookeeper client.
+ * @param zpathBase znode base path.
+ * @param out the PrintStream for human readable update summary.
*/
private static void createZNodes(ZkClient zkClient, String zpathBase, PrintStream out)
{
@@ -332,6 +342,7 @@
final String dbConnectionUrl = tmp_props.getProperty("druid.database.connectURI");
final String username = tmp_props.getProperty("druid.database.user");
final String password = tmp_props.getProperty("druid.database.password");
+ final String defaultDatasource = tmp_props.getProperty("druid.database.defaultDatasource", "_default");
//
// validation
@@ -383,7 +394,12 @@
DbConnector.createSegmentTable(dbConnector.getDBI(), tableName);
DbConnector.createRuleTable(dbConnector.getDBI(), ruleTableName);
- DatabaseRuleManager.createDefaultRule(dbConnector.getDBI(), ruleTableName, new DefaultObjectMapper());
+ DatabaseRuleManager.createDefaultRule(
+ dbConnector.getDBI(),
+ ruleTableName,
+ defaultDatasource,
+ new DefaultObjectMapper()
+ );
}
/**
@@ -391,7 +407,8 @@
*/
private static void printUsage()
{
- System.out.println("Usage: <java invocation> CMD [args]\n"
+ System.out.println(
+ "Usage: <java invocation> CMD [args]\n"
+ " Where CMD is a particular command:\n"
+ " CMD choices:\n"
+ " dump zkConnect baseZkPath # dump info from zk at given coordinates\n"