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"