You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by pt...@apache.org on 2015/11/05 21:41:29 UTC
[50/60] [abbrv] [partial] storm git commit: Release 2.0.4-SNAPSHOT
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
old mode 100644
new mode 100755
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
old mode 100644
new mode 100755
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/bin/check_jstorm_Supervisor.sh
----------------------------------------------------------------------
diff --git a/bin/check_jstorm_Supervisor.sh b/bin/check_jstorm_Supervisor.sh
new file mode 100644
index 0000000..1ec4394
--- /dev/null
+++ b/bin/check_jstorm_Supervisor.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+JAVA_HOME=/opt/taobao/java
+export PATH=$PATH:$JAVA_HOME/bin
+
+LOG=/home/admin/logs/check.log
+SP=`ps -ef |grep com.alibaba.jstorm.daemon.supervisor.Supervisor |grep -v grep |wc -l`
+if [ $SP -lt 1 ];then
+ mkdir -p /home/admin/logs
+ echo -e "`date` [ERROR] no process and restart Jstorm Suppervisor" >>$LOG
+ cd /home/admin/bin; nohup /home/admin/jstorm/bin/jstorm supervisor >/dev/null 2>&1 &
+else
+ echo -e "`date` [INFO:] return $SP Jstorm Supervisor ok " >>$LOG
+fi
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/bin/jstorm.py
----------------------------------------------------------------------
diff --git a/bin/jstorm.py b/bin/jstorm.py
new file mode 100755
index 0000000..c4b3fe7
--- /dev/null
+++ b/bin/jstorm.py
@@ -0,0 +1,459 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#!/usr/bin/python
+
+import os
+import sys
+import random
+import subprocess as sub
+import getopt
+
+def identity(x):
+ return x
+
+def cygpath(x):
+ command = ["cygpath", "-wp", x]
+ p = sub.Popen(command,stdout=sub.PIPE)
+ output, errors = p.communicate()
+ lines = output.split("\n")
+ return lines[0]
+
+if sys.platform == "cygwin":
+ normclasspath = cygpath
+else:
+ normclasspath = identity
+
+CLIENT_CONF_FILE = ""
+JSTORM_DIR = "/".join(os.path.realpath( __file__ ).split("/")[:-2])
+JSTORM_CONF_DIR = os.getenv("JSTORM_CONF_DIR", JSTORM_DIR + "/conf" )
+LOGBACK_CONF = JSTORM_CONF_DIR + "/jstorm.logback.xml"
+CONFIG_OPTS = []
+EXCLUDE_JARS = []
+INCLUDE_JARS = []
+STATUS = 0
+
+
+def check_java():
+ check_java_cmd = 'which java'
+ ret = os.system(check_java_cmd)
+ if ret != 0:
+ print("Failed to find java, please add java to PATH")
+ sys.exit(-1)
+
+def get_config_opts():
+ global CONFIG_OPTS
+ return "-Dstorm.options=" + (','.join(CONFIG_OPTS)).replace(' ', "%%%%")
+
+def get_client_childopts():
+ ret = (" -Dstorm.root.logger=INFO,stdout -Dlogback.configurationFile=" + JSTORM_DIR +
+ "/conf/client_logback.xml -Dlog4j.configuration=File:" + JSTORM_DIR +
+ "/conf/client_log4j.properties")
+ if CLIENT_CONF_FILE != "":
+ ret += (" -Dstorm.conf.file=" + CLIENT_CONF_FILE)
+ return ret
+
+def get_server_childopts(log_name):
+ ret = (" -Dlogfile.name=%s -Dlogback.configurationFile=%s" %(log_name, LOGBACK_CONF))
+ return ret
+
+if not os.path.exists(JSTORM_DIR + "/RELEASE"):
+ print "******************************************"
+ print "The jstorm client can only be run from within a release. You appear to be trying to run the client from a checkout of JStorm's source code."
+ print "\nYou can download a JStorm release "
+ print "******************************************"
+ sys.exit(1)
+
+def get_jars_full(adir):
+ files = os.listdir(adir)
+ ret = []
+ for f in files:
+ if f.endswith(".jar") == False:
+ continue
+ filter = False
+ for exclude_jar in EXCLUDE_JARS:
+ if f.find(exclude_jar) >= 0:
+ filter = True
+ break
+
+ if filter == True:
+ print "Don't add " + f + " to classpath"
+ else:
+ ret.append(adir + "/" + f)
+ return ret
+
+def get_classpath(extrajars):
+ ret = []
+ ret.extend(extrajars)
+ ret.extend(get_jars_full(JSTORM_DIR))
+ ret.extend(get_jars_full(JSTORM_DIR + "/lib"))
+ ret.extend(INCLUDE_JARS)
+
+ return normclasspath(":".join(ret))
+
+def confvalue(name, extrapaths):
+ command = [
+ "java", "-client", "-Xms256m", "-Xmx256m", get_config_opts(), "-cp", get_classpath(extrapaths), "backtype.storm.command.config_value", name
+ ]
+ p = sub.Popen(command, stdout=sub.PIPE)
+ output, errors = p.communicate()
+ lines = output.split("\n")
+ for line in lines:
+ tokens = line.split(" ")
+ if tokens[0] == "VALUE:":
+ return " ".join(tokens[1:])
+ print "Failed to get config " + name
+ print errors
+ print output
+
+def print_localconfvalue(name):
+ """Syntax: [jstorm localconfvalue conf-name]
+
+ Prints out the value for conf-name in the local JStorm configs.
+ The local JStorm configs are the ones in ~/.jstorm/storm.yaml merged
+ in with the configs in defaults.yaml.
+ """
+ print name + ": " + confvalue(name, [JSTORM_CONF_DIR])
+
+def print_remoteconfvalue(name):
+ """Syntax: [jstorm remoteconfvalue conf-name]
+
+ Prints out the value for conf-name in the cluster's JStorm configs.
+ The cluster's JStorm configs are the ones in $STORM-PATH/conf/storm.yaml
+ merged in with the configs in defaults.yaml.
+
+ This command must be run on a cluster machine.
+ """
+ print name + ": " + confvalue(name, [JSTORM_CONF_DIR])
+
+def exec_storm_class(klass, jvmtype="-server", childopts="", extrajars=[], args=[]):
+ nativepath = confvalue("java.library.path", extrajars)
+ args_str = " ".join(map(lambda s: "\"" + s + "\"", args))
+ command = "java " + jvmtype + " -Djstorm.home=" + JSTORM_DIR + " " + get_config_opts() + " -Djava.library.path=" + nativepath + " " + childopts + " -cp " + get_classpath(extrajars) + " " + klass + " " + args_str
+ print "Running: " + command
+ global STATUS
+ STATUS = os.system(command)
+
+def jar(jarfile, klass, *args):
+ """Syntax: [jstorm jar topology-jar-path class ...]
+
+ Runs the main method of class with the specified arguments.
+ The jstorm jars and configs in $JSTORM_CONF_DIR/storm.yaml are put on the classpath.
+ The process is configured so that StormSubmitter
+ (https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation)
+ will upload the jar at topology-jar-path when the topology is submitted.
+ """
+ childopts = "-Dstorm.jar=" + jarfile + get_client_childopts()
+ exec_storm_class(
+ klass,
+ jvmtype="-client -Xms256m -Xmx256m",
+ extrajars=[jarfile, JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+ args=args,
+ childopts=childopts)
+
+def zktool(*args):
+ """Syntax: [jstorm jar topology-jar-path class ...]
+
+ Runs the main method of class with the specified arguments.
+ The jstorm jars and configs in ~/.jstorm are put on the classpath.
+ The process is configured so that StormSubmitter
+ (https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation)
+ will upload the jar at topology-jar-path when the topology is submitted.
+ """
+ childopts = get_client_childopts()
+ exec_storm_class(
+ "com.alibaba.jstorm.zk.ZkTool",
+ jvmtype="-client -Xms256m -Xmx256m",
+ extrajars=[ JSTORM_CONF_DIR, CLIENT_CONF_FILE],
+ args=args,
+ childopts=childopts)
+
+def kill(*args):
+ """Syntax: [jstorm kill topology-name [wait-time-secs]]
+
+ Kills the topology with the name topology-name. JStorm will
+ first deactivate the topology's spouts for the duration of
+ the topology's message timeout to allow all messages currently
+ being processed to finish processing. JStorm will then shutdown
+ the workers and clean up their state. You can override the length
+ of time JStorm waits between deactivation and shutdown.
+ """
+ childopts = get_client_childopts()
+ exec_storm_class(
+ "backtype.storm.command.kill_topology",
+ args=args,
+ jvmtype="-client -Xms256m -Xmx256m",
+ extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+ childopts=childopts)
+
+def activate(*args):
+ """Syntax: [jstorm activate topology-name]
+
+ Activates the specified topology's spouts.
+ """
+ childopts = get_client_childopts()
+ exec_storm_class(
+ "backtype.storm.command.activate",
+ args=args,
+ jvmtype="-client -Xms256m -Xmx256m",
+ extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+ childopts=childopts)
+
+def deactivate(*args):
+ """Syntax: [jstorm deactivate topology-name]
+
+ Deactivates the specified topology's spouts.
+ """
+ childopts = get_client_childopts()
+ exec_storm_class(
+ "backtype.storm.command.deactivate",
+ args=args,
+ jvmtype="-client -Xms256m -Xmx256m",
+ extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+ childopts=childopts)
+
+def rebalance(*args):
+ """Syntax: [jstorm rebalance topology-name [-w wait-time-secs]]
+
+ Sometimes you may wish to spread out where the workers for a topology
+ are running. For example, let's say you have a 10 node cluster running
+ 4 workers per node, and then let's say you add another 10 nodes to
+ the cluster. You may wish to have JStorm spread out the workers for the
+ running topology so that each node runs 2 workers. One way to do this
+ is to kill the topology and resubmit it, but JStorm provides a "rebalance"
+ command that provides an easier way to do this.
+
+ Rebalance will first deactivate the topology for the duration of the
+ message timeout and then redistribute
+ the workers evenly around the cluster. The topology will then return to
+ its previous state of activation (so a deactivated topology will still
+ be deactivated and an activated topology will go back to being activated).
+ """
+ childopts = get_client_childopts()
+ exec_storm_class(
+ "backtype.storm.command.rebalance",
+ args=args,
+ jvmtype="-client -Xms256m -Xmx256m",
+ extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+ childopts=childopts)
+
+def restart(*args):
+ """Syntax: [jstorm restart topology-name [conf]]
+ """
+ childopts = get_client_childopts()
+ exec_storm_class(
+ "backtype.storm.command.restart",
+ args=args,
+ jvmtype="-client -Xms256m -Xmx256m",
+ extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+ childopts=childopts)
+
+def update_config(*args):
+ """Syntax: [jstorm restart topology-name [conf]]
+ """
+ childopts = get_client_childopts()
+ exec_storm_class(
+ "backtype.storm.command.update_config",
+ args=args,
+ jvmtype="-client -Xms256m -Xmx256m",
+ extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+ childopts=childopts)
+
+def nimbus():
+ """Syntax: [jstorm nimbus]
+
+ Launches the nimbus daemon. This command should be run under
+ supervision with a tool like daemontools or monit.
+
+ See Setting up a JStorm cluster for more information.
+ (https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation)
+ """
+ cppaths = [JSTORM_CONF_DIR]
+ nimbus_classpath = confvalue("nimbus.classpath", cppaths)
+ childopts = confvalue("nimbus.childopts", cppaths) + get_server_childopts("nimbus.log")
+ exec_storm_class(
+ "com.alibaba.jstorm.daemon.nimbus.NimbusServer",
+ jvmtype="-server",
+ extrajars=(cppaths+[nimbus_classpath]),
+ childopts=childopts)
+
+def supervisor():
+ """Syntax: [jstorm supervisor]
+
+ Launches the supervisor daemon. This command should be run
+ under supervision with a tool like daemontools or monit.
+
+ See Setting up a JStorm cluster for more information.
+ (https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation)
+ """
+ cppaths = [JSTORM_CONF_DIR]
+ childopts = confvalue("supervisor.childopts", cppaths) + get_server_childopts("supervisor.log")
+ exec_storm_class(
+ "com.alibaba.jstorm.daemon.supervisor.Supervisor",
+ jvmtype="-server",
+ extrajars=cppaths,
+ childopts=childopts)
+
+
+def drpc():
+ """Syntax: [jstorm drpc]
+
+ Launches a DRPC daemon. This command should be run under supervision
+ with a tool like daemontools or monit.
+
+ See Distributed RPC for more information.
+ (https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation)
+ """
+ cppaths = [JSTORM_CONF_DIR]
+ childopts = confvalue("drpc.childopts", cppaths) + get_server_childopts("drpc.log")
+ exec_storm_class(
+ "com.alibaba.jstorm.drpc.Drpc",
+ jvmtype="-server",
+ extrajars=cppaths,
+ childopts=childopts)
+
+def print_classpath():
+ """Syntax: [jstorm classpath]
+
+ Prints the classpath used by the jstorm client when running commands.
+ """
+ print get_classpath([])
+
+def print_commands():
+ """Print all client commands and link to documentation"""
+ print "jstorm command [--config client_storm.yaml] [--exclude-jars exclude1.jar,exclude2.jar] [-c key1=value1,key2=value2][command parameter]"
+ print "Commands:\n\t", "\n\t".join(sorted(COMMANDS.keys()))
+ print "\n\t[--config client_storm.yaml]\t\t\t optional, setting client's storm.yaml"
+ print "\n\t[--exclude-jars exclude1.jar,exclude2.jar]\t optional, exclude jars, avoid jar conflict"
+ print "\n\t[-c key1=value1,key2=value2]\t\t\t optional, add key=value pair to configuration"
+ print "\nHelp:", "\n\thelp", "\n\thelp <command>"
+ print "\nDocumentation for the jstorm client can be found at https://github.com/alibaba/jstorm/wiki/JStorm-Chinese-Documentation\n"
+
+def print_usage(command=None):
+ """Print one help message or list of available commands"""
+ if command != None:
+ if COMMANDS.has_key(command):
+ print (COMMANDS[command].__doc__ or
+ "No documentation provided for <%s>" % command)
+ else:
+ print "<%s> is not a valid command" % command
+ else:
+ print_commands()
+
+def unknown_command(*args):
+ print "Unknown command: [jstorm %s]" % ' '.join(sys.argv[1:])
+ print_usage()
+
+def metrics_Monitor(*args):
+ """Syntax: [jstorm metricsMonitor topologyname bool]
+ Enable or disable the metrics monitor of one topology.
+ """
+ childopts = get_client_childopts()
+ exec_storm_class(
+ "backtype.storm.command.metrics_monitor",
+ args=args,
+ jvmtype="-client -Xms256m -Xmx256m",
+ extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+ childopts=childopts)
+
+def list(*args):
+ """Syntax: [jstorm list]
+
+ List cluster information
+ """
+ childopts = get_client_childopts()
+ exec_storm_class(
+ "backtype.storm.command.list",
+ args=args,
+ jvmtype="-client -Xms256m -Xmx256m",
+ extrajars=[JSTORM_CONF_DIR, JSTORM_DIR + "/bin", CLIENT_CONF_FILE],
+ childopts=childopts)
+
+COMMANDS = {"jar": jar, "kill": kill, "nimbus": nimbus, "zktool": zktool,
+ "drpc": drpc, "supervisor": supervisor, "localconfvalue": print_localconfvalue,
+ "remoteconfvalue": print_remoteconfvalue, "classpath": print_classpath,
+ "activate": activate, "deactivate": deactivate, "rebalance": rebalance, "help": print_usage,
+ "metricsMonitor": metrics_Monitor, "list": list, "restart": restart, "update_config": update_config}
+
+def parse_config(config_list):
+ global CONFIG_OPTS
+ if len(config_list) > 0:
+ for config in config_list:
+ CONFIG_OPTS.append(config)
+
+def parse_exclude_jars(jars):
+ global EXCLUDE_JARS
+ EXCLUDE_JARS = jars.split(",")
+ print " Excludes jars:"
+ print EXCLUDE_JARS
+
+def parse_include_jars(jars):
+ global INCLUDE_JARS
+ INCLUDE_JARS = jars.split(",")
+ print " Include jars:"
+ print INCLUDE_JARS
+
+def parse_config_opts(args):
+ curr = args[:]
+ curr.reverse()
+ config_list = []
+ args_list = []
+
+ while len(curr) > 0:
+ token = curr.pop()
+ if token == "-c":
+ config_list.append(curr.pop())
+ elif token == "--config":
+ global CLIENT_CONF_FILE
+ CLIENT_CONF_FILE = curr.pop()
+ elif token == "--exclude-jars":
+ parse_exclude_jars(curr.pop())
+ elif token == "--include-jars":
+ parse_include_jars(curr.pop())
+ else:
+ args_list.append(token)
+
+ return config_list, args_list
+
+def main():
+ if len(sys.argv) <= 1:
+ print_usage()
+ sys.exit(-1)
+ global CONFIG_OPTS
+ config_list, args = parse_config_opts(sys.argv[1:])
+ parse_config(config_list)
+ COMMAND = args[0]
+ ARGS = args[1:]
+ if COMMANDS.get(COMMAND) == None:
+ unknown_command(COMMAND)
+ sys.exit(-1)
+ if len(ARGS) != 0 and ARGS[0] == "help":
+ print_usage(COMMAND)
+ sys.exit(0)
+ try:
+ (COMMANDS.get(COMMAND, "help"))(*ARGS)
+ except Exception, msg:
+ print(msg)
+ print_usage(COMMAND)
+ sys.exit(-1)
+ sys.exit(STATUS)
+
+if __name__ == "__main__":
+ check_java()
+ main()
+
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/bin/start.sh
----------------------------------------------------------------------
diff --git a/bin/start.sh b/bin/start.sh
new file mode 100644
index 0000000..01f81e0
--- /dev/null
+++ b/bin/start.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+if [ -e ~/.bashrc ]
+then
+ source ~/.bashrc
+fi
+
+if [ -e ~/.bash_profile ]
+then
+ source ~/.bash_profile
+fi
+
+if [ "x$JAVA_HOME" != "x" ]
+then
+ echo "JAVA_HOME has been set "
+else
+ export JAVA_HOME=/opt/taobao/java
+fi
+echo "JAVA_HOME =" $JAVA_HOME
+
+if [ "x$JSTORM_HOME" != "x" ]
+then
+ echo "JSTORM_HOME has been set "
+else
+ export JSTORM_HOME=/home/admin/jstorm
+fi
+echo "JSTORM_HOME =" $JSTORM_HOME
+
+if [ "x$JSTORM_CONF_DIR_PATH" != "x" ]
+then
+ echo "JSTORM_CONF_DIR_PATH has been set "
+else
+ export JSTORM_CONF_DIR_PATH=$JSTORM_HOME/conf
+fi
+echo "JSTORM_CONF_DIR_PATH =" $JSTORM_CONF_DIR_PATH
+
+
+
+export PATH=$JAVA_HOME/bin:$JSTORM_HOME/bin:$PATH
+
+
+which java
+
+if [ $? -eq 0 ]
+then
+ echo "Find java"
+else
+ echo "No java, please install java firstly !!!"
+ exit 1
+fi
+
+function startJStorm()
+{
+ PROCESS=$1
+ echo "start $PROCESS"
+ cd $JSTORM_HOME/bin; nohup $JSTORM_HOME/bin/jstorm $PROCESS >/dev/null 2>&1 &
+ sleep 4
+ rm -rf nohup
+ ps -ef|grep $2
+}
+
+
+
+HOSTNAME=`hostname -i`
+NIMBUS_HOST=`grep "nimbus.host:" $JSTORM_CONF_DIR_PATH/storm.yaml | grep -w $HOSTNAME`
+SUPERVISOR_HOST_START=`grep "supervisor.host.start:" $JSTORM_CONF_DIR_PATH/storm.yaml | grep -w "false"`
+
+if [ "X${NIMBUS_HOST}" != "X" ]
+then
+ startJStorm "nimbus" "NimbusServer"
+fi
+
+if [ "X${SUPERVISOR_HOST_START}" == "X" ]
+then
+ startJStorm "supervisor" "Supervisor"
+fi
+
+echo "Successfully start jstorm daemon...."
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/bin/stop.sh
----------------------------------------------------------------------
diff --git a/bin/stop.sh b/bin/stop.sh
new file mode 100755
index 0000000..aa7935a
--- /dev/null
+++ b/bin/stop.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+
+function killJStorm()
+{
+ ps -ef|grep $1|grep -v grep |awk '{print $2}' |xargs kill
+ sleep 1
+ ps -ef|grep $1
+
+ echo "kill "$1
+}
+
+killJStorm "Supervisor"
+killJStorm "NimbusServer"
+echo "Successfully stop jstorm"
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/cgconfig.conf
----------------------------------------------------------------------
diff --git a/conf/cgconfig.conf b/conf/cgconfig.conf
new file mode 100755
index 0000000..c21cd13
--- /dev/null
+++ b/conf/cgconfig.conf
@@ -0,0 +1,18 @@
+mount {
+ cpu = /cgroup/cpu;
+}
+
+group jstorm {
+ perm {
+ task {
+ uid = 500;
+ gid = 500;
+ }
+ admin {
+ uid = 500;
+ gid = 500;
+ }
+ }
+ cpu {
+ }
+}
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/client_log4j.properties
----------------------------------------------------------------------
diff --git a/conf/client_log4j.properties b/conf/client_log4j.properties
new file mode 100755
index 0000000..e80ce0b
--- /dev/null
+++ b/conf/client_log4j.properties
@@ -0,0 +1,19 @@
+#This file should be deleted when deployed to server (workaround to leiningen classpath putting dev resources on path)
+#This file is needed for tests
+
+
+storm.root.logger=INFO, D
+
+log4j.rootLogger=${storm.root.logger}
+#log4j.rootLogger=INFO,stdout, D
+
+
+
+### output to console ###
+log4j.appender.stdout = org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target = System.out
+log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern = [%p %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n
+
+log4j.category.org.apache.zookeeper=warn
+log4j.category.com.netflix.curator=warn
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/client_logback.xml
----------------------------------------------------------------------
diff --git a/conf/client_logback.xml b/conf/client_logback.xml
new file mode 100755
index 0000000..02ef72e
--- /dev/null
+++ b/conf/client_logback.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration scan="true" scanPeriod="30 seconds">
+ <appender name="A1" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>%-4r [%t] %-5p %c - %m%n</pattern>
+ </encoder>
+ </appender>
+ <logger name="org.apache.zookeeper" level="ERROR" />
+ <logger name="com.netflix.curator" level="ERROR" />
+ <logger name="com.alibaba.jstorm.common.metric" level="ERROR" />
+ <logger name="com.alibaba.jstorm.daemon.nimbus.TopologyMetricsRunnable" level="ERROR" />
+ <logger name="com.alibaba.jstorm.metric" level="ERROR" />
+
+ <root level="INFO">
+ <appender-ref ref="A1" />
+ </root>
+</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/jstorm.log4j.properties
----------------------------------------------------------------------
diff --git a/conf/jstorm.log4j.properties b/conf/jstorm.log4j.properties
new file mode 100755
index 0000000..ef31aed
--- /dev/null
+++ b/conf/jstorm.log4j.properties
@@ -0,0 +1,50 @@
+#This file should be deleted when deployed to server (workaround to leiningen classpath putting dev resources on path)
+#This file is needed for tests
+
+storm.root.logger=INFO, D
+
+log4j.rootLogger=${storm.root.logger}
+#log4j.rootLogger=INFO,stdout, D, jmonitor
+
+### output to console ###
+### In order to avoid dead lock, redirect supervisor out/err to /dev/null
+### Stdout logger can't be used until manually start worker
+log4j.appender.stdout = org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target = System.out
+log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern = [%p %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n
+
+### output to file ###
+log4j.appender.D = org.apache.log4j.RollingFileAppender
+log4j.appender.D.File = ${jstorm.home}/logs/${logfile.name}
+log4j.appender.D.Append = true
+log4j.appender.D.Threshold = INFO
+log4j.appender.D.MaxFileSize=1GB
+log4j.appender.D.MaxBackupIndex=5
+log4j.appender.D.layout = org.apache.log4j.PatternLayout
+log4j.appender.D.layout.ConversionPattern = [%p %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n
+
+log4j.logger.com.alibaba.jstorm=INFO
+
+### jstorm metrics ###
+log4j.logger.com.alibaba.jstorm.daemon.worker.metrics= INFO, M
+log4j.additivity.com.alibaba.jstorm.daemon.worker.metrics=false
+log4j.logger.com.alibaba.jstorm.task.heartbeat= INFO, M
+log4j.additivity.com.alibaba.jstorm.task.heartbeat=false
+log4j.logger.com.alibaba.jstorm.daemon.worker.hearbeat= INFO, M
+log4j.additivity.com.alibaba.jstorm.daemon.worker.hearbeat=false
+log4j.logger.com.alibaba.jstorm.metric= INFO, M
+log4j.additivity.com.alibaba.jstorm.metric=false
+
+log4j.appender.M = org.apache.log4j.RollingFileAppender
+log4j.appender.M.File = ${jstorm.home}/logs/${logfile.name}.metrics
+log4j.appender.M.Append = true
+log4j.appender.M.Threshold = INFO
+log4j.appender.M.MaxFileSize=100MB
+log4j.appender.M.MaxBackupIndex=5
+log4j.appender.M.layout = org.apache.log4j.PatternLayout
+log4j.appender.M.layout.ConversionPattern = [%p %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n
+
+
+##################jmonitor appender ##########################
+#log4j.appender.jmonitor=com.alibaba.alimonitor.jmonitor.plugin.log4j.JMonitorLog4jAppender
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/jstorm.logback.xml
----------------------------------------------------------------------
diff --git a/conf/jstorm.logback.xml b/conf/jstorm.logback.xml
new file mode 100755
index 0000000..bd097ea
--- /dev/null
+++ b/conf/jstorm.logback.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration scan="true" scanPeriod="60 seconds">
+ <appender name="A1"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${jstorm.home}/logs/${logfile.name}</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${jstorm.home}/logs/${logfile.name}.%i</fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>5</maxIndex>
+ </rollingPolicy>
+
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>1GB</maxFileSize>
+ </triggeringPolicy>
+
+ <encoder>
+ <pattern>[%p %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n</pattern>
+
+ </encoder>
+ </appender>
+
+ <appender name="METRICS"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${jstorm.home}/logs/${logfile.name}.metrics</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${jstorm.home}/logs/${logfile.name}.metrics.%i</fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>5</maxIndex>
+ </rollingPolicy>
+
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>100MB</maxFileSize>
+ </triggeringPolicy>
+
+ <encoder>
+ <pattern>[%p %d{yyyy-MM-dd HH:mm:ss} %c{1}:%L %t] %m%n</pattern>
+ </encoder>
+ </appender>
+
+ <root level="INFO">
+ <appender-ref ref="A1" />
+ </root>
+
+ <logger name="com.alibaba.jstorm"
+ additivity="false">
+ <level value="INFO" />
+ <appender-ref ref="A1" />
+ </logger>
+
+ <logger name="com.alibaba.jstorm.common.metric"
+ additivity="false">
+ <level value="INFO" />
+ <appender-ref ref="METRICS" />
+ </logger>
+
+ <logger name="com.alibaba.jstorm.task.heartbeat"
+ additivity="false">
+ <level value="INFO" />
+ <appender-ref ref="METRICS" />
+ </logger>
+
+ <logger name="com.alibaba.jstorm.daemon.worker.hearbeat"
+ additivity="false">
+ <level value="INFO" />
+ <appender-ref ref="METRICS" />
+ </logger>
+
+ <logger name="com.alibaba.jstorm.daemon.nimbus.TopologyMetricsRunnable"
+ additivity="false">
+ <level value="INFO" />
+ <appender-ref ref="METRICS" />
+ </logger>
+
+ <logger name="com.alibaba.jstorm.metric"
+ additivity="false">
+ <level value="INFO" />
+ <appender-ref ref="METRICS" />
+ </logger>
+
+</configuration>
+
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/conf/storm.yaml
----------------------------------------------------------------------
diff --git a/conf/storm.yaml b/conf/storm.yaml
new file mode 100755
index 0000000..99bc984
--- /dev/null
+++ b/conf/storm.yaml
@@ -0,0 +1,83 @@
+########### These MUST be filled in for a storm configuration
+ storm.zookeeper.servers:
+ - "localhost"
+
+ storm.zookeeper.root: "/jstorm"
+
+ #nimbus.host is being used by $JSTORM_HOME/bin/start.sh
+ #it only support IP, please don't set hostname
+ # For example
+ # nimbus.host: "10.132.168.10, 10.132.168.45"
+ #nimbus.host: "localhost"
+
+# %JSTORM_HOME% is the jstorm home directory
+ storm.local.dir: "%JSTORM_HOME%/data"
+
+ java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib"
+
+
+
+# if supervisor.slots.ports is null,
+# the port list will be generated by cpu cores and system memory size
+# for example, if there are 24 cpu cores and supervisor.slots.port.cpu.weight is 1.2
+# then there are 24/1.2 ports for cpu,
+# there are system_physical_memory_size/worker.memory.size ports for memory
+# The final port number is min(cpu_ports, memory_port)
+ supervisor.slots.ports.base: 6800
+ supervisor.slots.port.cpu.weight: 1
+ supervisor.slots.ports: null
+#supervisor.slots.ports:
+# - 6800
+# - 6801
+# - 6802
+# - 6803
+
+# Default disable user-define classloader
+# If there are jar conflict between jstorm and application,
+# please enable it
+ topology.enable.classloader: false
+
+# enable supervisor use cgroup to make resource isolation
+# Before enable it, you should make sure:
+# 1. Linux version (>= 2.6.18)
+# 2. Have installed cgroup (check the file's existence:/proc/cgroups)
+# 3. You should start your supervisor on root
+# You can get more about cgroup:
+# http://t.cn/8s7nexU
+ supervisor.enable.cgroup: false
+
+
+### Netty will send multiple messages in one batch
+### Setting true will improve throughput, but more latency
+ storm.messaging.netty.transfer.async.batch: true
+
+### if this setting is true, it will use disruptor as internal queue, which size is limited
+### otherwise, it will use LinkedBlockingDeque as internal queue , which size is unlimited
+### generally when this setting is true, the topology will be more stable,
+### but when there is a data loop flow, for example A -> B -> C -> A
+### and the data flow occur blocking, please set this as false
+ topology.buffer.size.limited: true
+
+### default worker memory size, unit is byte
+ worker.memory.size: 2147483648
+
+# Metrics Monitor
+# topology.performance.metrics: it is the switch flag for performance
+# purpose. When it is disabled, the data of timer and histogram metrics
+# will not be collected.
+# topology.alimonitor.metrics.post: If it is disable, metrics data
+# will only be printed to log. If it is enabled, the metrics data will be
+# posted to alimonitor besides printing to log.
+ topology.performance.metrics: true
+ topology.alimonitor.metrics.post: false
+
+# UI MultiCluster
+# Following is an example of multicluster UI configuration
+# ui.clusters:
+# - {
+# name: "jstorm",
+# zkRoot: "/jstorm",
+# zkServers:
+# [ "localhost"],
+# zkPort: 2181,
+# }
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/dev-tools/add_apache_license.sh
----------------------------------------------------------------------
diff --git a/dev-tools/add_apache_license.sh b/dev-tools/add_apache_license.sh
new file mode 100755
index 0000000..26a0054
--- /dev/null
+++ b/dev-tools/add_apache_license.sh
@@ -0,0 +1 @@
+find . -name \*.java -exec sh -c "if ! grep -q 'LICENSE-2.0' '{}';then mv '{}' tmp && cp LICENSEHEADER.txt '{}' && cat tmp >> '{}' && rm tmp;fi" \;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/dev-tools/java_license_header.txt
----------------------------------------------------------------------
diff --git a/dev-tools/java_license_header.txt b/dev-tools/java_license_header.txt
new file mode 100755
index 0000000..7e66353
--- /dev/null
+++ b/dev-tools/java_license_header.txt
@@ -0,0 +1,17 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/dev-tools/py_license_header.txt
----------------------------------------------------------------------
diff --git a/dev-tools/py_license_header.txt b/dev-tools/py_license_header.txt
new file mode 100755
index 0000000..0896fcd
--- /dev/null
+++ b/dev-tools/py_license_header.txt
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/dev-tools/storm-eclipse-java-formatter.xml
----------------------------------------------------------------------
diff --git a/dev-tools/storm-eclipse-java-formatter.xml b/dev-tools/storm-eclipse-java-formatter.xml
new file mode 100755
index 0000000..25e6f92
--- /dev/null
+++ b/dev-tools/storm-eclipse-java-formatter.xml
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="12">
+<profile kind="CodeFormatterProfile" name="Apache Storm Java Formatter" version="12">
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="160"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="16"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="160"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="160"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+</profile>
+</profiles>
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/docs/log.test.xlsx
----------------------------------------------------------------------
diff --git a/docs/log.test.xlsx b/docs/log.test.xlsx
new file mode 100755
index 0000000..b178ba7
Binary files /dev/null and b/docs/log.test.xlsx differ
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.classpath
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.classpath b/example/sequence-split-merge/.classpath
new file mode 100755
index 0000000..f8ce0d3
--- /dev/null
+++ b/example/sequence-split-merge/.classpath
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.gitignore
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.gitignore b/example/sequence-split-merge/.gitignore
new file mode 100755
index 0000000..1dd3331
--- /dev/null
+++ b/example/sequence-split-merge/.gitignore
@@ -0,0 +1,2 @@
+/target/
+/target/
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.project
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.project b/example/sequence-split-merge/.project
new file mode 100755
index 0000000..4269e67
--- /dev/null
+++ b/example/sequence-split-merge/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>sequence-split-merge</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.settings/org.eclipse.core.resources.prefs
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.settings/org.eclipse.core.resources.prefs b/example/sequence-split-merge/.settings/org.eclipse.core.resources.prefs
new file mode 100755
index 0000000..8bc0e1c
--- /dev/null
+++ b/example/sequence-split-merge/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/<project>=UTF-8
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.settings/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.settings/org.eclipse.jdt.core.prefs b/example/sequence-split-merge/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..14f521d
--- /dev/null
+++ b/example/sequence-split-merge/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/.settings/org.eclipse.m2e.core.prefs
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/.settings/org.eclipse.m2e.core.prefs b/example/sequence-split-merge/.settings/org.eclipse.m2e.core.prefs
new file mode 100755
index 0000000..14b697b
--- /dev/null
+++ b/example/sequence-split-merge/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/conf/conf.prop
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/conf/conf.prop b/example/sequence-split-merge/conf/conf.prop
old mode 100644
new mode 100755
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/conf/conf.yaml
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/conf/conf.yaml b/example/sequence-split-merge/conf/conf.yaml
old mode 100644
new mode 100755
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/conf/topology.yaml
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/conf/topology.yaml b/example/sequence-split-merge/conf/topology.yaml
old mode 100644
new mode 100755
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/drpc.sh
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/drpc.sh b/example/sequence-split-merge/drpc.sh
new file mode 100755
index 0000000..1492a51
--- /dev/null
+++ b/example/sequence-split-merge/drpc.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+jstorm jar target/sequence-split-merge-1.1.0-jar-with-dependencies.jar com.alipay.dw.jstorm.example.drpc.ReachTopology reach
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/pom.xml
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/pom.xml b/example/sequence-split-merge/pom.xml
old mode 100644
new mode 100755
index 71f5154..afba08c
--- a/example/sequence-split-merge/pom.xml
+++ b/example/sequence-split-merge/pom.xml
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>storm</groupId>
<artifactId>sequence-split-merge</artifactId>
- <version>1.0.8</version>
+ <version>1.1.0</version>
<packaging>jar</packaging>
<name>sequence-split-merge</name>
@@ -11,7 +11,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <jstorm.version>0.9.6.3</jstorm.version>
+ <jstorm.version>2.0.4-SNAPSHOT</jstorm.version>
<storm.version>storm-0.9.2-incubating</storm.version>
</properties>
<repositories>
@@ -34,33 +34,22 @@
<dependency>
<groupId>com.alibaba.jstorm</groupId>
- <artifactId>jstorm-client-extension</artifactId>
+ <artifactId>jstorm-core</artifactId>
<version>${jstorm.version}</version>
<scope>provided</scope>
</dependency>
-
- <dependency>
- <groupId>com.alibaba.jstorm</groupId>
- <artifactId>jstorm-client</artifactId>
- <version>${jstorm.version}</version>
- <scope>provided</scope>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
+
+
<dependency>
- <groupId>com.alibaba.jstorm</groupId>
- <artifactId>jstorm-server</artifactId>
- <version>${jstorm.version}</version>
- <scope>provided</scope>
-
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.10</version>
+ <scope>test</scope>
</dependency>
+
+ <!--
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
@@ -72,16 +61,7 @@
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.10</version>
</dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.10</version>
- <scope>test</scope>
- </dependency>
-
-
- <!-- <dependency> <groupId>org.clojure</groupId> <artifactId>clojure</artifactId>
+ <dependency> <groupId>org.clojure</groupId> <artifactId>clojure</artifactId>
<version>1.2.0</version> </dependency> <dependency> <groupId>org.clojure</groupId>
<artifactId>clojure-contrib</artifactId> <version>1.2.0</version> </dependency>
<dependency> <groupId>backtype</groupId> <artifactId>twitter4j-core</artifactId>
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/IntervalCheck.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/IntervalCheck.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/IntervalCheck.java
old mode 100644
new mode 100755
index 005fbdf..0b36abf
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/IntervalCheck.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/IntervalCheck.java
@@ -1,3 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.alipay.dw.jstorm.example;
import java.io.Serializable;
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/TpsCounter.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/TpsCounter.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/TpsCounter.java
old mode 100644
new mode 100755
index f9943a5..262ef8c
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/TpsCounter.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/TpsCounter.java
@@ -1,3 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.alipay.dw.jstorm.example;
import java.io.Serializable;
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBatchTopology.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBatchTopology.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBatchTopology.java
old mode 100644
new mode 100755
index e4cda48..d225ad0
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBatchTopology.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBatchTopology.java
@@ -1,54 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.alipay.dw.jstorm.example.batch;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.util.Map;
-
-import org.yaml.snakeyaml.Yaml;
-
-import backtype.storm.Config;
-import backtype.storm.LocalCluster;
-import backtype.storm.StormSubmitter;
-import backtype.storm.generated.AlreadyAliveException;
-import backtype.storm.generated.InvalidTopologyException;
-import backtype.storm.generated.TopologyAssignException;
-import backtype.storm.topology.BoltDeclarer;
+import java.util.Map;
+
+import com.alibaba.jstorm.batch.BatchTopologyBuilder;
+import com.alibaba.jstorm.cluster.StormConfig;
+import com.alibaba.jstorm.utils.JStormUtils;
+import com.alibaba.jstorm.utils.LoadConf;
+
+import backtype.storm.LocalCluster;
+import backtype.storm.StormSubmitter;
+import backtype.storm.generated.AlreadyAliveException;
+import backtype.storm.generated.InvalidTopologyException;
+import backtype.storm.generated.TopologyAssignException;
+import backtype.storm.topology.BoltDeclarer;
import backtype.storm.topology.TopologyBuilder;
-import com.alibaba.jstorm.batch.BatchTopologyBuilder;
-import com.alibaba.jstorm.cluster.StormConfig;
-import com.alibaba.jstorm.utils.JStormUtils;
-
public class SimpleBatchTopology {
- private static String topologyName;
+ private static String topologyName = "Batch";
private static Map conf;
- private static void LoadYaml(String confPath) {
-
- Yaml yaml = new Yaml();
-
- try {
- InputStream stream = new FileInputStream(confPath);
-
- conf = (Map) yaml.load(stream);
- if (conf == null || conf.isEmpty() == true) {
- throw new RuntimeException("Failed to read config file");
- }
-
- } catch (FileNotFoundException e) {
- System.out.println("No such file " + confPath);
- throw new RuntimeException("No config file");
- } catch (Exception e1) {
- e1.printStackTrace();
- throw new RuntimeException("Failed to read config file");
- }
-
- topologyName = (String) conf.get(Config.TOPOLOGY_NAME);
- return;
- }
public static TopologyBuilder SetBuilder() {
BatchTopologyBuilder topologyBuilder = new BatchTopologyBuilder(
@@ -72,7 +61,7 @@ public class SimpleBatchTopology {
LocalCluster cluster = new LocalCluster();
cluster.submitTopology(topologyName, conf, builder.createTopology());
- Thread.sleep(600000);
+ Thread.sleep(60000);
cluster.shutdown();
}
@@ -94,7 +83,8 @@ public class SimpleBatchTopology {
System.exit(-1);
}
- LoadYaml(args[0]);
+ conf = LoadConf.LoadYaml(args[0]);
+
boolean isLocal = StormConfig.local_mode(conf);
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBolt.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBolt.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBolt.java
old mode 100644
new mode 100755
index 6587076..67259d9
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBolt.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleBolt.java
@@ -1,3 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.alipay.dw.jstorm.example.batch;
import java.util.Map;
@@ -102,7 +119,7 @@ public class SimpleBolt implements IBasicBolt, ICommitter {
public void revert(BatchId id, byte[] commitResult) {
LOG.info("Receive BatchId " + id);
- BatchId failedId = (BatchId)Utils.deserialize(commitResult);
+ BatchId failedId = (BatchId)Utils.javaDeserialize(commitResult);
if (failedId.equals(id) == false) {
LOG.info("Deserialized error " + id);
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleSpout.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleSpout.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleSpout.java
old mode 100644
new mode 100755
index 4fdb5a3..3b16d80
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleSpout.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/batch/SimpleSpout.java
@@ -1,3 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.alipay.dw.jstorm.example.batch;
import java.util.Map;
http://git-wip-us.apache.org/repos/asf/storm/blob/e935da91/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/drpc/ReachTopology.java
----------------------------------------------------------------------
diff --git a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/drpc/ReachTopology.java b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/drpc/ReachTopology.java
old mode 100644
new mode 100755
index 8e03837..f7d39f4
--- a/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/drpc/ReachTopology.java
+++ b/example/sequence-split-merge/src/main/java/com/alipay/dw/jstorm/example/drpc/ReachTopology.java
@@ -1,3 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.alipay.dw.jstorm.example.drpc;
import java.util.Arrays;
@@ -7,6 +24,9 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import com.alibaba.jstorm.utils.JStormUtils;
+import com.alibaba.jstorm.utils.LoadConf;
+
import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.LocalDRPC;
@@ -22,8 +42,6 @@ import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;
-import com.alibaba.jstorm.utils.JStormUtils;
-
/**
* This is a good example of doing complex Distributed RPC on top of Storm. This
* program creates a topology that can compute the reach for any URL on Twitter
@@ -166,14 +184,27 @@ public class ReachTopology {
return builder;
}
+
+
+
public static void main(String[] args) throws Exception {
LinearDRPCTopologyBuilder builder = construct();
-
-
+
Config conf = new Config();
conf.setNumWorkers(6);
- if (args.length == 0) {
+ if (args.length != 0) {
+
+ try {
+ Map yamlConf = LoadConf.LoadYaml(args[0]);
+ if (yamlConf != null) {
+ conf.putAll(yamlConf);
+ }
+ }catch (Exception e) {
+ System.out.println("Input " + args[0] + " isn't one yaml ");
+ }
+
+
StormSubmitter.submitTopology(TOPOLOGY_NAME, conf, builder.createRemoteTopology());
}else {