#Release 0.9.3.1
- switch apache thrift7 to storm thrift7
- set defatult acker number is 1
- add "spout.single.thread" setting
- make nimbus logview port different from supervisor's
- web ui can list all files of log's subdir
- Set gc dump dir as log's dir
#Release 0.9.3
- Support Aliyun Apsara/Hadoop Yarn
- Redesign Logview
- Kill old worker under the same port when worker is starting
- Add zk information/version information on UI
- Add nodeport information for dead task in nimbus
- Add interface to get values when spout doing ack
- Add timeout statics in bolt
- jstorm script return status
- Add logs when fail to deserialize tuple
- Skip sleep operation when max_pending is 1 and waiting ack
- Remove useless dependency
- Longer task timeout setting
- Add supervisor.use.ip setting
- Redirect supervisor out/err to /dev/null, redirect worker out/err to one file
- Fix kryo fail to deserialize object when enable classloader
- Fix fail to reassign dead task when worker number is less than topology apply
- Set samller jvm heap memory for jstorm-client
- Fix fail to set topology status as active when do rebalance operation twice at one time,
- Fix local mode bug under linux
- Fix average latency isn't accurate
- GC tuning.
- Add default kill function for AysncLoopRunnable
#Release 0.9.2
- Support LocalCluster/LocalDrpc mode, support debugging topology under local mode
- Support CGroups, assigning CPU in hardware level.
- Support simple logview
- Change SpoutExecutor's RotatingMap to TimeCacheMap, when putting too much timeout tuple is easy to cause deadlock in spout acker thread
- Tunning gc parameter, improve performance and avoid full GC
- Improve Topology's own gc priority, make it higher than JStorm system setting.
- Tuning Nimbus HA, switch nimbus faster, when occur nimbus failure.
- Fix bugs found by FindBugs tool.
- Revert Trident interface to 0.8.1, due to 0.8.1's trident interface's performance is better.
- Setting nimbus.task.timeout.secs as 60 to avoid nimbus doing assignment when task is under full gc.
- Setting default rpc framework as netty
- Tunning nimbus shutdown flow
- Tunning worker shutdown flow
- Add task heartbeat log
- Optimize Drpc/LocalDrpc source code.
- Move classloader to client jar. 14 Fix classloader fail to load anonymous class
- Web Ui display slave nimbus
- Add thrift max read buffer size
- Setting CPU slot base double
- Move Zk utility to jstorm-client-extension.jar
- Fix localOrShuffle null pointer
- Redirecting worker's System.out/System.err to file is configurable.
- Add new RPC frameworker JeroMq
- Fix Zk watcher miss problem
- Update sl4j 1.5.6 to 1.7.5
- Shutdown worker when occur exception in Smart thread
- Skip downloading useless topology in Supervisor
- Redownload the topology when failed to deserialize topology in Supervisor.
- Fix topology codeDir as resourceDir
- Catch error when normalize topology
- Add log when found one task is dead
- Add maven repository, JStorm is able to build outside of Alibaba
- Fix localOrShuffle null pointer exception
- Add statics counting for internal tuples in one worker
- Add thrift.close after download topology binary in Supervisor
- Application classloader. when Application jar is conflict with jstorm jar, please enable application classloader.
- Group Quato, Different group with different resource quato.
- Fix Rotation Map competition issue.
- Set default acker number as 0
- Set default spout/bolt number as 1
- Add log directory in log4j configuration file
- Add transaction example
- Fix UI showing wrong worker numbe in topology page
- Fix UI showing wrong latency in topology page
- Replace hardcode Integer convert with JStormUtils.parseInt
- Support string parse in Utils.getInt
- Remove useless dependency in pom.xml
- Support supervisor using IP or special hostname
- Add more details when no resource has been assigned to one new topology
- Replace normal thread with Smart thread
- Add gc details
- Code format
- Unify stormId and topologyId as topologyId
- Every nimbus will regist ip to ZK
In this version, it will follow storm 0.9.0 interface, so the application running on storm 0.9.0 can run in jstorm 0.9.0 without any change.
- provide nimbus HA. when the master nimbus shuts down, it will select another online nimbus to be the master. There is only one master nimbus online any time and the slave nimbuses just synchronouse the master's data.
- RPC through netty is stable, the sending speed is match with receiving speed.
- Assigning resource on four dimensions:cpu, mem, disk, net
- Application can use old assignment.
- Application can use user-define resource.
- Task can apply extra cpu slot or memory slot.
- Application can force tasks run on different supervisor or the same supervisor
In this version, it will follow storm 0.7.1 interface, so the topology running in storm 0.7.1 can run in jstorm without any change.
- Assign workers in balance
- add setting "zmq.max.queue.msg" for zeromq
- communication between worker and tasks without zeromq
- Add catch exception operation
- in supervisor SyncProcess/SyncSupervisor
- add catch exception and report_error in spout's open and bolt's prepare
- in all IO operation
- in all serialize/deserialize
- in all ZK operation
- in topology upload/download function
- during initialization zeromq
- do assignmen/reassignment operation in one thread to avoid competition
- redesign nimbus 's topology assign algorithm, make the logic simple much.
- redesign supervisor's sync assignment algorithm, make the logic simple much
- reduce zookeeper load
- redesign nimbus monitor logic, it will just scan tasks' hearbeat, frequency is 10s
- nimbus cancel watch on supervisor
- supervisor heartbeat frequence change to 10s
- supervisor syncSupervisor/syncProcess frequence change to 10s
- supervisor scan /$(ZKROOT)/assignment only once in one monitor loop
- task hearbeat change to 10s
- create task pid file before connection zk, this is very import when zk is unstable.
- reduce once memory copy when deserialize tuple, improve performance huge.
- split executor thread as two thread, one handing receive tuples, one sending tuples, improve performance much
- redeisign sample code, it will sampling every 5 seconds, not every 20 tuple once, improve performance much
- simplify the ack's logic, make acker more effeciency
- Communication between worker and tasks won't use zeromq, just memory share in process
- in worker's Drainer/virtualportdispatch thread, spout/bolt recv/send thread, the thread will sleep 1 ms when there is not tuple in one loop
- communication between worker and tasks without zeromq
- sampling frequence change to 5s, not every 20 tuple once.
- add IFailValueSpout interface
- Redesign sampling code, collection statics model become more common.
- Add sending/recving tps statics, statics is more precise.
- Atomatically do deactivate action when kill/rebalance topology, and the wait time is 2 * MSG_TIMEOUT
- fix nongrouping bug, random.nextInt will generate value less than 0.
- Sleep one setting time(default is 1 minute) after finish spout open, which is used to wait other task finish initialization.
- Add check component name when submit topology, forbidding the component which name start with "__"
- change the zk's node /$(ZKROOT)/storm to /$(ZKROOT)/topology
- abstract topology check logic from generating real topology function
- when supervisor is down and topology do rebalance, the alive task under down supervisor is unavailable.
- add close connection operation after finish download topology binary
- automatically create all local dirtorie, such as /$(LOCALDIR)/supervisor/localstate
- when killing worker, add "kill and sleep " operation before "kill -9" operation
- when generate real topology binary,
- configuration priority different.
component configuration > topology configuration > system configuration - skip the output stream which target component doesn't exist.
- skip the component whose parallism is 0.
- component's parallism is less than 0, throw exception.
- configuration priority different.
- skip ack/fail when inputstream setting is empty
- add topology name to the log
- fix ui select option error, default is 10 minutes
- supervisor can display all worker's status