| 126 | } |
| 127 | |
| 128 | public static void main(String[] args) throws Exception { |
| 129 | if (args.length < 3) { |
| 130 | usage(); |
| 131 | exit(1); |
| 132 | } |
| 133 | |
| 134 | // Get command line parameters. |
| 135 | String zkurl = args[0]; |
| 136 | int quorum = Integer.parseInt(args[1]); |
| 137 | String logdir = args[2]; |
| 138 | String loadfile = args.length > 3 ? args[3] : null; |
| 139 | |
| 140 | String servers = null; |
| 141 | String znode = null; |
| 142 | int local_replicas = 0; |
| 143 | if (zkurl.equals("local")) { |
| 144 | LOG.info("Starting a local ZooKeeper server"); |
| 145 | |
| 146 | zkserver = new ZooKeeperTestServer(logdir); |
| 147 | InetSocketAddress address = zkserver.start(); |
| 148 | servers = address.getHostName() + ":" + address.getPort(); |
| 149 | znode = "/log"; |
| 150 | local_replicas = (2*quorum) - 1; // Start all replicas locally. |
| 151 | } else { |
| 152 | servers = zkurl.substring(0, zkurl.indexOf("/")); |
| 153 | znode = zkurl.substring(zkurl.indexOf("/"), zkurl.length()); |
| 154 | local_replicas = 1; |
| 155 | |
| 156 | LOG.info("Connecting to ZooKeeper server " + servers + znode); |
| 157 | } |
| 158 | |
| 159 | long timeout = 3; |
| 160 | List<Log> logs = new ArrayList<Log>(); |
| 161 | for (int replica = 1; replica <= local_replicas; replica++) { |
| 162 | String log = logdir + "/log" + replica; |
| 163 | |
| 164 | String logtool = System.getenv("MESOS_LOG_TOOL"); |
| 165 | if (logtool != null) { |
| 166 | // Initialize the log. |
| 167 | // TODO(vinod): Do this via Java API once log tool has one. |
| 168 | LOG.info("Initializing log " + log + " with " + logtool); |
| 169 | int status = system(logtool + " initialize --path=" + log); |
| 170 | if (status != 0) { |
| 171 | LOG.severe("Error initializing log '" + log + "': " + status); |
| 172 | exit(1); |
| 173 | } |
| 174 | } else { |
| 175 | // TODO(vinod): Kill this once we don't care about log |
| 176 | // version < 0.17.0. |
| 177 | LOG.warning("Not initializing log file"); |
| 178 | } |
| 179 | |
| 180 | logs.add(new Log(quorum, log, servers, timeout, TimeUnit.SECONDS, znode)); |
| 181 | } |
| 182 | |
| 183 | // Write some data. |
| 184 | if (loadfile != null) { |
| 185 | LOG.info("Initializing writer"); |