Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

I (Bobby) envision this merger happening in two phases major, but we may blur the lines between these two as development happens.

 

Phase 1. Migrate clojure code to java using JStorm code as a reference

...

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1225

...

NamespaceDependencyJIRANotesJStorm Similar Code
backtype.storm.LocalCluster

backtype.storm.config

backtype.storm.testing

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1282
 
 https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/backtype/storm/LocalCluster.java
backtype.storm.LocalDRPC

backtype.storm.config

backtype.storm.daemon.drpc

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1274
 
 https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/backtype/storm/LocalDRPC.java
backtype.storm.MockAutoCred

backtype.storm.config

backtype.storm.testing

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1283
 
Mock implementation of INimbusCredentialPlugin,IAutoCredentials and ICredentialsRenewer for testing only.NONE
backtype.storm.clojure

backtype.storm.thrift

backtype.storm.util

NONE

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1259
Clojure Storm API (Needs to Clojure Storm API (Needs to be kept for backwards compatabilitycompatibility, possibly in separate maven package)NONE
backtype.storm.clojure-test

backtype.storm.clojure

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.testing

backtype.storm.thrift

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1259

NONE

Tests for Storm Clojure APINONE
backtype.storm.cluster

backtype.storm.config

backtype.storm.converter

backtype.storm.daemon.common

backtype.storm.log

backtype.storm.util

backtype.storm.zookeeper

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1273
 
current state of the cluster (Some of this moves to java as a part of heartbeat server)https://github.com/apache/storm/tree/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/cluster
backtype.storm.cluster-test

backtype.storm.cluster

backtype.storm.config

backtype.storm.log

backtype.storm.testing

backtype.storm.thrift

backtype.storm.util

backtype.storm.zookeeper

Jira
 Tests for backtype.storm.clusterNONE?
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1284
Tests for backtype.storm.clusterNONE?
backtype.storm.backtype.storm.command.activate

backtype.storm.log

backtype.storm.thrift

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1260
 
Activate a topologyhttps://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/backtype/storm/command/activate.java
backtype.storm.command.config-value

backtype.storm.config

backtype.storm.log

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1242
 
Read a config valuehttps://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/backtype/storm/command/config_value.java
backtype.storm.command.deactivate

backtype.storm.log

backtype.storm.thrift

Jira
 deactivate a topology
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1261
deactivate a topologyhttps://https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/backtype/storm/command/deactivate.java
backtype.storm.command.dev-zookeeper

backtype.storm.config

backtype.storm.util

backtype.storm.zookeeper

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1262
 
Launch a development zookeeper instanceNONE
backtype.storm.command.get-errors

backtype.storm.daemon.common

backtype.storm.daemon.nimbus

backtype.storm.log

backtype.storm.thrift

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1285
 
get recent errors from a topologyNONE
backtype.storm.command.healthcheck

backtype.storm.config

backtype.storm.log

 Check to see if this node appears to be healthy or not.NONE
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1243
Check to see if this node appears to be healthy or not.NONE
backtype.storm.command.kill-topology

backtype.storm.config

backtype.storm.log

backtype.storm.thrift

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1263
 
Kill a running topologyhttps://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/backtype/storm/command/kill_topology.java
backtype.storm.command.kill-workers

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.daemon.supervisor

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1286
 
Kill all running worker processes on a node.NONE
backtype.storm.command.list

backtype.storm.log

backtype.storm.thrift

 
Jira
list running topologies
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1264
list running topologieshttpshttps://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/backtype/storm/command/list.java (Implementation is quire different)
backtype.storm.command.monitorbacktype.storm.thrift
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1265
 
Monitor a running topologyhttps://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/backtype/storm/command/metrics_monitor.java (similar concept but implementation is very different)

backtype.storm.command.rebalance

backtype.storm.config

backtype.storm.log

backtype.storm.thrift

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1266
 
rebalance a running topologyhttps://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/backtype/storm/command/rebalance.java (many different features from what apache storm currently supports)
backtype.storm.command.set-log-level

backtype.storm.log

backtype.storm.thrift

Jira
 set log levels for a running topologyNONE
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1267
set log levels for a running topologyNONE
backtype.backtype.storm.command.shell-submission

backtype.storm.config

backtype.storm.log

backtype.storm.thrift

backtype.storm.util

backtype.storm.zookeeper

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1318
NONE???
Run clojure code passed in on the command line.  we need to decide if we still want to support this or not.  And if not remove it.NONE
backtype.storm.command.upload-credentials

backtype.storm.log

backtype.storm.util

 

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1244
Upload new credentials to a running topolgyNONE
backtype.storm.config

backtype.storm.log

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1227
Some utils like functions (Part that makes storm config values into clojure constants needs to stay here and cannot be ported)some in https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/utils/JStormUtils.java
backtype.storm.converter

backtype.storm.daemon.common

backtype.storm.log

backtype.storm.stats

backtype.storm.util

NONE?Convert between thrift and clojure types.  When porting we should just use the Thrift type whenever possible.NONE
backtype.storm.daemon.acker

backtype.storm.config

backtype.storm.log

backtype.storm.util

 Track acks for a tuple tree
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1245
Track acks for a tuple treehttpshttps://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/task/acker/Acker.java
backtype.storm.daemon.builtin-metricsbacktype.storm.stats 
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1268
Built-in metricsVery Different
backtype.storm.daemon.common

backtype.storm.config

backtype.storm.daemon.acker

backtype.storm.log

backtype.storm.thrift

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1269
 
Common utils shared by the daemons (Some things should just use the Thrift object)https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/cluster/Common.java
backtype.storm.daemon.drpc

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.log

backtype.storm.ui.helpers

backtype.storm.util

 
Jira

DRPC server with HTTP and thrift support

serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1270

DRPC server with HTTP and thrift support

https://https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/drpc/Drpc.java

(But missing HTTP support)

backtype.storm.daemon.executor

backtype.storm.cluster

backtype.storm.config

backtype.storm.daemon.builtin-metrics

backtype.storm.daemon.common

backtype.storm.daemon.task

backtype.storm.disruptor

backtype.storm.log

backtype.storm.stats

backtype.storm.thrift

backtype.storm.timer

backtype.storm.tuple

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1277
 

Thread that runs tasks.

 

Also includes grouping code.

https://github.com/apache/storm/tree/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/task

 

(But has a lot more with it too)

backtype.storm.daemon.logviewer

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.daemon.supervisor

backtype.storm.log

backtype.storm.timer

backtype.storm.ui.helpers

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1280
 
Display and manage log files.

UI Supports this so there is probably a supervisor API for this.  But not really the same.

https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/daemon/supervisor/Httpserver.java

and

https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/utils/HttpserverUtils.java

backtype.storm.daemon.backtype.storm.daemon.nimbus

backtype.storm.cluster

backtype.storm.config

backtype.storm.converter

backtype.storm.daemon.common

backtype.storm.local-state

backtype.storm.log

backtype.storm.scheduler.DefaultScheduler

backtype.storm.stats

backtype.storm.timer

backtype.storm.tuple

backtype.storm.util

backtype.storm.zookeeper

 Its nimbus

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1276
Its nimbushttps://github.https://github.com/apache/storm/tree/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/daemon/nimbus
backtype.storm.daemon.supervisor

backtype.storm.cluster

backtype.storm.command.healthcheck

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.daemon.worker

backtype.storm.event

backtype.storm.local-state

backtype.storm.log

backtype.storm.process-simulator

backtype.storm.timer

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1279
 
launch and monitor workershttps://github.com/apache/storm/tree/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/daemon/supervisor
backtype.storm.daemon.task

backtype.storm.config

backtype.storm.daemon.builtin-metrics

backtype.storm.daemon.common

backtype.storm.log

backtype.storm.stats

backtype.storm.thrift

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1271
 
helper functions for task data and sending tuples(does not have both executors and tasks)
backtype.storm.daemon.worker

backtype.storm.cluster

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.daemon.executor

backtype.storm.disruptor

backtype.storm.local-state

backtype.storm.log

backtype.storm.messaging.loader

backtype.storm.timer

backtype.storm.util

Jira
 The worker process with multiple executors and tasks
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1278
The worker process with multiple executors and taskshttps://https://github.com/apache/storm/tree/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/daemon/worker
backtype.storm.disruptor

backtype.storm.log

backtype.storm.util

NONE?

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1272

wrapper around the disruptor queue. Might need some abstract base classes if it makes since.

 
backtype.storm.drpc-test

backtype.storm.clojure

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.daemon.drpc

backtype.storm.testing

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1287
 
Test DPRCNONE
 

backtype.storm.event

backtype.storm.log

backtype.storm.util

NONE?Thread for processing events.  Java has built in things to deal with this, do we need to create another one? https://github.com/alibaba/jstorm/tree/master/jstorm-core/src/main/java/com/alibaba/jstorm/event
 backtype.storm backtype.storm.fields-test  
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1228
Test java backtype.storm.tuple.Fields classNONE
 backtype.storm.grouping-test

backtype.storm.clojure

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.daemon.executor

backtype.storm.log

backtype.storm.testing

backtype.storm.thrift

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1288
 
Test groupingsNONE
 backtype.storm.integration-test

backtype.storm.clojure

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.testing

backtype.storm.thrift

backtype.storm.util

Jira
 Run some storm topologies
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1289
Run some storm topologies

https://https://github.com/apache/storm/tree/jstorm-import/jstorm-core/src/test/java/com/alibaba/jstorm/topology

 

Not exactly the same but close

backtype.storm.local-state

backtype.storm.log

backtype.storm.util

 

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1246
Wrapper around LocalState, with some helper functions for converting between storm and thrift

https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/backtype/storm/generated/LocalStateData.java

but not totally

 backtype.storm.local-state-test backtype.storm.testing 
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1290
test for LocalState class 
 backtype.storm.log NONEJust use slf4j 
 backtype.storm.logviewer-test

backtype.storm.config

backtype.storm.daemon.logviewer

backtype.storm.daemon.supervisor

backtype.storm.ui.helpers

backtype.storm.util

Jira
 test for LogViewerNONE
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1291
test for LogViewerNONE
 backtype.storm.messaging-test backtype.storm.messaging-test

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.testing

backtype.storm.thrift

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1292
 
test for local messaging transportNONE?
 backtype.storm.messaging.loader backtype.storm.messaging.localNONE?
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1248
Just a small bit of glue code for calling transfer-local-fn when messaging batch arrivesNONE
 backtype.storm.messaging.local NONE
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1247
just a wrapper into backtype.just a wrapper into backtype.storm.messaging.local.ContextNONE
 backtype.storm.messaging.netty-integration-test

backtype.storm.config

backtype.storm.testing

backtype.storm.thrift

backtype.storm.util

 
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1293
Integration tests for netty messaging layer 
 backtype.storm.messaging.netty-unit-test

backtype.storm.config

backtype.storm.daemon.worker

backtype.storm.log

backtype.storm.testing

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1294
 
Unit tests for netty messaging layer 
 backtype.storm.metric.testing 
Jira
 Creates a FakeMetriConsumer class, that records datapointsNONE
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1229
Creates a FakeMetriConsumer class, that records datapointsNONE
 backtype.storm backtype.storm.metrics-test

backtype.storm.clojure

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.metric.testing

backtype.storm.testing

backtype.storm.thrift

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1295
 
Test for the metrics systemNONE
 backtype.storm.multilang-test

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.testing

backtype.storm.thrift

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1296
 
Runs a few topolgies using the multi-lang feature.  These should be moved to be a part of the multi-lang jars, and fixed to actually test something.NONE
 backtype.storm.nimbus-test

backtype.storm.MockAutoCred

backtype.storm.cluster

backtype.storm.config

backtype.storm.converter

backtype.storm.daemon.common

backtype.storm.daemon.nimbus

backtype.storm.log

backtype.storm.stats

backtype.storm.testing

backtype.storm.thrift

backtype.storm.timer

backtype.storm.util

backtype.storm.zookeeper

Jira
 test that nimbus worksNONE?
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1297
test that nimbus worksNONE?
 backtype. backtype.storm.process-simulator

backtype.storm.log

backtype.storm.util

 

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1230
Simulate processes in local mode???
 backtype.storm.scheduler-test

backtype.storm.config

backtype.storm.daemon.nimbus

backtype.storm.scheduler.EvenScheduler

backtype.storm.testing

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1298

 

Test even scheduler???
 backtype.storm.scheduler.DefaultScheduler

backtype.storm.config

backtype.storm.scheduler.EvenScheduler

backtype.storm.util

 test DefaultScheduler, is this different from even scheduler??? 
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1232
test DefaultScheduler, is this different from even scheduler??? backtype.storm.scheduler.EvenScheduler

backtype.storm.config

backtype.storm.log

backtype.storm.util

 try to schedule processes evenly across the cluster.

https://github.com/apachealibaba/stormjstorm/blob/jstorm-importmaster/jstorm-core/src/main/java/com/alibaba/jstorm/schedule/default_assign/DefaultTopologyScheduler.java

 

maybebut not totally

 backtype.storm.scheduler.IsolationSchedulerEvenScheduler

backtype.storm.config

backtype.storm.log

backtype.storm.scheduler.DefaultScheduler

backtype.storm.util

 Schedule Topologies in an isolated pool of machines, else schedule evenly.

util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1231
try to schedule processes evenly across the cluster.

https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/schedule/default_assign/DefaultTopologyScheduler.java

 

maybe

NONE?

 backtype.storm.scheduler.multitenant-scheduler-testIsolationSchedulerzookeeper

backtype.storm.config

backtype.storm.daemon.nimbuslog

backtype.storm.logscheduler.DefaultScheduler

backtype.storm.testing

 Test Multi-tenant scheduler

util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1239
Schedule Topologies in an isolated pool of machines, else schedule evenly.yes,the scheduler is integrated into defaultScheduler.NONE
 backtype.storm.scheduler.resourcemultitenant-aware-scheduler-test

backtype.storm.config

backtype.storm.daemon.nimbus

backtype.storm.testinglog

backtype.storm.thrift

backtype.storm.util

 Test RASNONE backtype.storm.security.auth.AuthUtils-test  

testing

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1299
Test Multi-tenant schedulerTest AuthUtilsNONE
 backtype.storm.security.auth.DefaultHttpCredentialsPluginscheduler.resource-aware-scheduler-test  Test DefaultHttpCredentailsPluginNONE

backtype.storm.config

backtype.storm.daemon.nimbus

backtype.storm.testing

backtype.storm.thrift

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1300
Test RAS backtype.storm.security.auth.ReqContext-test  Test RequestContextNONE
 backtype.storm.security.auth.SaslTransportPluginAuthUtils-test  
Jira
Test SaslTransportPlugin
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1233
Test AuthUtilsNONE
 backtype.storm.security.auth.ThriftClientDefaultHttpCredentialsPlugin-test

backtype.storm.config

backtype.storm.util

 Test secure ThriftClientNONE 
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1234
Test DefaultHttpCredentailsPlugin backtype.storm.security.auth.ThriftServer-testbacktype.storm.config Test secure ThriftServerNONE
 backtype.storm.security.auth.authReqContext-test

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.daemon.nimbus

backtype.storm.testing

backtype.storm.util

  
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1235
Test RequestContextTest Authentication and AuthorizationNONE
 backtype.storm.security.auth.authorizer.DRPCSimpleACLAuthorizerSaslTransportPlugin-test

backtype.storm.config

backtype.storm.util

  
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1236
Test SaslTransportPluginTest DRPC AuthorizationNONE
 backtype.storm.security.auth.auto-loginThriftClient-module-test

backtype.storm.

util
 

config

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1237
Test secure ThriftClientTest AutoTGTKrb5LoginModuleNONE
 backtype.storm.security.auth.drpcThriftServer-auth-testbacktype.storm.config

backtype.storm.daemon.common

backtype.storm.daemon.drpc

backtype.storm.log

backtype.storm.testing

backtype.storm.util

 
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1238
Test secure ThriftServerTest DRPC AuthorizationNONE
 backtype.storm.security.auth.nimbus-auth-test

backtype.storm.clusterconfig

backtype.storm.configbacktype.storm.daemon.common

backtype.storm.daemon.nimbusbacktype.storm.log

backtype.storm.testing

backtype.storm.util

backtype.storm.zookeeper

 Test Nimbus AuthorizationNONE backtype.storm.security.serialization.BlowfishTupleSerializer-test backtype.storm.util 
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1301
Test Authentication and AuthorizationTest BlowfishSerializerNONE
 backtype.storm.serializationsecurity.auth.authorizer.DRPCSimpleACLAuthorizer-test

backtype.storm.config

backtype.storm.util

 Test KryoValuesSerializerNONE backtype.storm.serialization.SerializationFactory-testbacktype.storm.config Test SerializationFactory
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1240
Test DRPC AuthorizationNONENONE?
 backtype.storm.statsbacktypesecurity.storm.logauth.auto-login-module-testbacktype.storm.util clojure methods for getting built-in statistics
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1241
Test AutoTGTKrb5LoginModuleNONENONE?
 backtype.storm.submitter.security.auth.drpc-auth-test

backtype.storm.config

backtype.storm.daemon.testing

 Test ZookeeperAuthentication payload generation that is a part of StormSubmitterNONE

common

backtype

 backtype

.storm.

subtopology-test

daemon.drpc

backtype.storm.log

backtype.daemonstorm.commontesting

backtype.storm.testing

NONE

util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1302
Test DRPC AuthorizationJust remove commented outNONE
backtype backtype.storm.supervisor.security.auth.nimbus-auth-test

backtype.storm.cluster

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.daemon.supervisornimbus

backtype.storm.daemon.workerlog

backtype.storm.testing

backtype.storm.thriftutil

backtype.storm.timer

backtype.storm.util

 Test the supervisorNONE? backtype.storm.testing

backtype.storm.cluster

backtype.storm.config

backtype.storm.daemon.acker

backtype.storm.daemon.common

backtype.storm.daemon.executor

backtype.storm.daemon.nimbus

backtype.storm.daemon.supervisor

backtype.storm.daemon.worker

backtype.storm.local-state

backtype.storm.log

backtype.storm.messaging.loader

backtype.storm.process-simulator

backtype.storm.thrift

backtype.storm.util

backtype.storm.zookeeper

 

zookeeper

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1303
Test Nimbus AuthorizationNONE
 backtype.storm.security.serialization.BlowfishTupleSerializer-test backtype.storm.util
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1249
Test BlowfishSerializerNONE
 backtype.storm.serialization-test

backtype.storm.config

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1250
Test KryoValuesSerializerNONE
 backtype.storm.serialization.SerializationFactory-testbacktype.storm.config
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1251
Test SerializationFactoryNONE?
 backtype.storm.stats

backtype.storm.log

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1252
clojure methods for getting built-in statisticslots of helper functions/macros for running testsNONE?
 backtype.storm.testing4jsubmitter-test

backtype.storm.LocalClusterconfig

backtype.storm.logbacktype.storm.testingtesting

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1304
Test ZookeeperAuthentication payload generation that is a part of StormSubmitterNONE
 backtype.storm.subtopology-test

backtype.storm.daemon.utilcommon

 

backtype.storm.

Testing class for use from java

testing

NONEJust remove commented outNONE
 backtype

backtype.storm.

testing4j

supervisor-test

backtype.storm.clojurecluster

backtype.storm.config

backtype.storm.daemon.common

backtype.storm.daemon.supervisor

backtype.storm.daemon.worker.integration-test

backtype.storm.testing

backtype.storm.thrift

backtype.storm.util

 tests for the Testing4j class

timer

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1305
Test the supervisorNONE?NONE
 backtype.storm.thrifttesting

backtype.storm.configcluster

backtype.storm.logconfig

backtype.storm.daemon.utilacker

backtype.storm.zookeeper

 helper methods for manipulating thrift objectsNONE

daemon.common

backtype.storm.daemon.executor

 backtype.storm.tick-tuple-test

backtype.storm.daemon.clojurenimbus

backtype.storm.daemon.configsupervisor

backtype.storm.daemon.commonworker

backtype.storm.testinglocal-state

backtype.storm.thrift

 Run topology with system ticksNONE?

log

backtype.storm.messaging.loader

 backtype.storm.timer

backtype.storm.logprocess-simulator

backtype.storm.util

 Timer like class that uses simulated timeNONE (SimulatedTime does not appear to be used by their tests)

thrift

backtype

 backtype

.storm.

transactional-test

util

backtype.storm.clojurezookeeper

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1281
lots of helper functions/macros for running testsNONE?
 backtype.storm.testing4j

backtype.storm.configLocalCluster

backtype.storm.daemon.commonlog

backtype.storm.testing

backtype.storm.util

 Test transactional topologiesJust one test

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1306
backtype.storm.Testing class for use from javaNONE
 backtype.storm.testing4j backtype.storm.tuplebacktype.storm.tuple-testNONE?

backtype.storm.testing

 small helper for getting hash code of a list

clojure

backtype.storm.

ui.core

config

backtype.storm.configintegration-test

backtype.storm.convertertesting

backtype.storm.daemon.commonthrift

backtype.storm.log

backtype.storm.stats

util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1307
tests for the Testing4j classNONE
 backtypebacktype.storm.thrift

backtype.storm.tupleconfig

backtype.storm.ui.helperslog

backtype.storm.util

backtype.storm.zookeeper

Jira
 
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1258
helper methods for manipulating thrift objectsNONE
 backtype.storm.tick-tuple-testUser InterfaceCompletely Differentbacktype.storm.ui.helpers

backtype.storm.configclojure

backtype.storm.logconfig

backtype.storm.daemon.util

 Helper functions for the UI/HTTPCompletely Different

common

backtype.storm.

util

testing

backtype.storm.

log

thrift

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-12261308
Run topology with system ticksNONE?
 backtype.storm.timer

backtype.storm.log

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1253
Timer like class that uses simulated timeutil functionsPossibly https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/utils/JStormUtils.javabacktype.storm.utils-test

backtype.storm.config

backtype.storm.util

 test some of utilsPossibly https://github.com/apachealibaba/stormjstorm/blob/jstorm-importmaster/jstorm-core/src/testmain/java/com/alibaba/jstorm/utilscallback/JStormUtilsTestAsyncLoopThread.java
backtype backtype.storm.utils.ZookeeperServerCnxnFactorytransactional-test  Test ZookeeperServerCnxnFactoryNONEbacktype

backtype.storm.

versioned-store-test

clojure

backtype.storm.

testing
 Test VersionedStoreNONE

config

backtype.storm.

worker-test

backtype.storm.daemon.common

backtype.storm.daemon.workertesting

backtype.storm.log

backtype.storm.testing

backtype.storm.util

 Test WorkerNONE
backtype.storm.zookeeper

backtype.storm.config

backtype.storm.log

backtype.storm.util

 Test ZookeeperNONE

util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1309
Test transactional topologiesJust one test
 backtype.storm.tuple

 

 

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1275
small helper for getting hash code of a listNONE?
backtype.storm.tuplestorm.trident.integration-testbacktype.storm.testing

backtype.storm.util

storm.trident.testing

 Run trident topolgiesNONE?
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1310
  storm.trident.state-test
backtype.storm.configui.core

backtype.storm.testingconfig

backtype.storm.utilconverter

storm.trident.testing

 Test some of trident state 

backtype.storm.

trident

daemon.

testing

common

backtype.storm.LocalDRPClog

backtype.storm.testingstats

backtype.storm.util

 helper functions for testing trident 

thrift

backtype.storm.tuple

storm.trident.tuple-test

backtype.storm.ui.testinghelpers

backtype.storm.util

backtype.storm.trident.testing

 test trident tuple 

The big things that change when moving from clojure is that we lose ring and hiccup for building the UI/REST services.  We need to pick some alternatives for these.  For the REST APIs Jersey is the most wide spread choice.  hiccup is used in logviewer currently and we should look at replacing it either with static HTML + REST, like for the regular UI, or just return HTML we build ourselves and HTML escaping on parameters.

Phase 2. Port JStorm features to the new java based storm-core.

 

The following is an evaluation of major feature differences between storm and JStorm

zookeeper

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1311
User InterfaceCompletely Different
backtype.storm.ui.helpers

backtype.storm.config

backtype.storm.log

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1254
Helper functions for the UI/HTTPCompletely Different
backtype.storm.utilbacktype.storm.log
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1226
util functionsPossibly https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/utils/JStormUtils.java
backtype.storm.utils-test

backtype.storm.config

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1255
test some of utilsPossibly https://github.com/apache/storm/blob/jstorm-import/jstorm-core/src/test/java/com/alibaba/jstorm/utils/JStormUtilsTest.java
backtype.storm.utils.ZookeeperServerCnxnFactory-test 
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1256
Test ZookeeperServerCnxnFactoryNONE
backtype.storm.versioned-store-testbacktype.storm.testing
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1313
Test VersionedStoreNONE
backtype.storm.worker-test

backtype.storm.daemon.common

backtype.storm.daemon.worker

backtype.storm.log

backtype.storm.testing

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1312
Test WorkerNONE
backtype.storm.zookeeper

backtype.storm.config

backtype.storm.log

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1257
Test Zookeeperhttps://github.com/alibaba/jstorm/blob/master/jstorm-core/src/main/java/com/alibaba/jstorm/zk/Zookeeper.java
storm.trident.integration-test

backtype.storm.testing

backtype.storm.util

storm.trident.testing

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1315
Run trident topolgiesNONE?
storm.trident.state-test

backtype.storm.config

backtype.storm.testing

backtype.storm.util

storm.trident.testing

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1316
Test some of trident state 
storm.trident.testing

backtype.storm.LocalDRPC

backtype.storm.testing

backtype.storm.util

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1314
helper functions for testing trident 
storm.trident.tuple-test

backtype.storm.testing

backtype.storm.util

storm.trident.testing

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1317
test trident tuple 

The big things that change when moving from clojure is that we lose ring and hiccup for building the UI/REST services.  We need to pick some alternatives for these.  For the REST APIs Jersey is the most wide spread choice.  hiccup is used in logviewer currently and we should look at replacing it either with static HTML + REST, like for the regular UI, or just return HTML we build ourselves and HTML escaping on parameters.

Phase 2. Port JStorm features to the new java based storm-core.

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1319

 

The following is an evaluation of major feature differences between storm and JStorm

FeatureApache Storm 0.11.0-SNAPSHOT (and expected pull requests)JStorm-2.1.0/JStorm2.0.4NotesJIRA to port JStorm feature
SchedulerEven, Default, Isolation, Multi-tenant, RAS(work in progress)
  1. Evenly distribute a component's tasks across the nodes in the cluster.
  2. Balanace the number of tasks in a worker.
  3. Try to assign two tasks which are transferring messages directly into the same worker to reduce network cost.
  4. Support user-defined assignment and using the result of the last assignment. Different solution between Storm and JStorm.
The scheduler interface is pluggable, so we should be able to support both schedulers if needed.
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1320
Nimbus HASupport for a pool of nimbus servers. Once Blobstore is merged in, "leader election" and "state storage" will be separate.Support for configuring more than one backup nimbus. When the master nimbus is down, the most appropriate spare nimbus (topologies on disk most closely match the records in ZooKeeper) will be chosen to be promoted.Need to evaluate the strengths and weaknesses of each and decide on updates to storm if any.
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1321
Topology Structureworker 1->* executor 1->* taskworker 1-> taskNeed to evaluate if removing executors will add enough benefit to developers/performance that we can drop it from architecture.  Probably need resource aware re-balancing or Jstorm rebalancing that can support changing parallelism before this can happen.
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1322
Topology MasterNone exactly. The Heartbeat Server (Currently under review) reduces load on ZK, but it is not really the same and may be a complement to TopologyMasterNew system bolt "topology master" was added, which is responsible for collecting task heartbeat info of all tasks and reporting the info to nimbus. Besides task heartbeat info, it also can be used to dispatch control messages within the topology. Topology master significantly reduces the amount of read/write to ZooKeeper. Before this change, ZooKeeper was the bottleneck for deploying big clusters and topologies.Need to evaluate how this impacts storm architecture especially around security.
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1323
BackpressureBang-Bang controller on Disruptor queue capacity using ZooKeeper for broadcast.
  1. Implement backpressure using "topology master" (TM). TM is responsible for processing the trigger message and sending the flow control request to relevant spouts. "flow control" in JStorm doesn't complete stop the spout from emitting tuples, but instead just slows down the tuple sending.
  2. User can update the configuration of backpressure dynamically without restarting topology, e.g. enable/disable backpressue, high/low watermark, etc.
 
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1324
Monitoring of task execute threadPotential Pull Request, but none right now.Monitors the status of the execute thread of tasks. It is effective to find the slow bolt in a topology, and potentially uncovers deadlock as well.Yes we should do this
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1325
Message processing

Deserialization happens on the netty thread

Serialization happens after the send queue when batching is happening.

  1. Add receiving and transferring queue/thread for each task to make deserialization and serialization asynchronously
  2. Remove receiving and transferring thread on worker level to avoid unnecessary locks and to shorten the message processing phase
The two sound equivalent now, but we should talk to see if there are other optimizations needed.
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1326
Tuple BatchingBatching in DisruptorQueueDo batch before sending tuple to transfer queue and support for adjusting the batch size dynamically according to samples of actual batch size sent out for past intervals.Should evaluate both implementations, and see which is better for performance, and possible if we can/should move some of the dynamic batching logic into disruptor.
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1327
Grouping

Load aware balancing in shuffle grouping

  1. Has a "localfirst" grouping that causes tuples to be sent to the tasks in the same worker by default. But if the load of all local tasks is high, the tuples will be sent out to remote tasks.
  2. Improve localOrShuffle grouping from Storm. In Storm's localOrShuffle grouping the definition of "local" is local within the same worker process. i.e., if there is a bolt that the component can send to in the current worker process it will send the tuples there. If there is not one, it will do round robin between all of the instances of that bolt no matter which hosts they are on. JStorm has extended that so that other workers/JVMs on the same host are considered "local" as well, taking into account the load of the network connections on the local worker.
We should look at combining both of these to have shuffle look at both distance and load to decide where to send a tuple.
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1328
web-UIYesDifferentDoes someone know a good UI designer that we can use?  I don't really like either of them (Bobby) but that is just me
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1339
metric systemIMetric and IMetricConsumer
  1. All levels of metrics, including stream metrics, task metrics, component metrics, topology metrics, even cluster metrics, are sampled & calculated. Some metrics, e.g. ""tuple life cycle"", are very useful for debugging and finding the hotspots of a topology.
  2. Support full metrics data. Previous metric system can only display mean value of meters/histograms, the new metric system can display m1, m5, m15 of meters, and common percentiles of histograms.
  3. Use new metrics windows, the mininum metric window is 1 minute, thus we can see the metrics data every single minute.
  4. Supplies a metric uploader interface, third-party companies can easily build their own metric systems based on the historic metric data.
Ideally we should have a way to display most/system metrics in the UI.  IMetric is too generic to make this happen, but we cannot completely drop support for it.  But perhaps we need to depricate it if the JStorm metrics are much better.
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1329
rebalance commandBasic functionality of rebalanceBesides rebalance, scale-out/in by updating the number of workers, ackers, spouts & bolts dynamically without stopping topology. Routing is updated dynamically within upstream components.dynamic routing with some groupings is difficult to get right when there is state, we need to be sure this is well documented, and might want to disallow it for some groupings without a force flag.
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1330
list commandList information of topologiesList information of all topologies, all supervisors, and JStorm versionmore info is good, but we want it human readable too. perhaps with a machine readable option too
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1331
zktool commandN/ASupports some ZooKeeper operations, e.g. "list", "read"…Will need to be evaluated for security
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1332
metricsMonitor commandN/AAllows toggling on/off some metrics which may impact topology performanceSounds great
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1333
restart commandN/ARestart a topology. Besides restart, this command can also update the topology configuration.Sounds great
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1334
update_topology commandN/AUpdate jars and configuration dynamically for a topology, without stopping the topology.Sounds great, should work will with blob-storm
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1335
cgroupN/ASupports controlling the upper limit of CPU core usage for a worker using cgroupsSounds like a good start, will be nice to integrate it with RAS requests too.
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1336
logging
  1. Supports user-defined log configuration via Log4j 2
  2. Supports dynamic changes to logging of a running topology
  3. Supports log4j and slf4j log APIS
  1. Supports user-defined configuration of log
  2. Supports both logback and log4j
Need to evaluate differences and see what we want long term
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1337
Worker classloader (isolation)N/A - uses shading for most dependenciesThe "worker classloader" avoids problem of re-loading classesThis sounds great
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1338
Multi-thread of spoutNAThere are two modes of spout, "single-thread" and "multi-thread" in JStorm. The "single-thread" mode is simliar to Storm while the "multi-thread" mode separates the processing of ack/fail and nextTuple to two threads. It means we can stay in nextTuple for a long time without any side effect on ack/fail. This improves the response and throughput of spout
Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keySTORM-1358
FeatureApache Storm 0.11.0-SNAPSHOT (and expected pull requests)JStorm-2.1.0/JStorm2.0.4NotesJIRA to port JStorm feature
Security
  1. Basic Authentication/Authorization for all interfaces.
  2. Run worker as user that launched it.
  3. Secure ZooKeeper
  4. Secure FileSystem
  5. Provide way to send credentials to topology
N/A NONE
SchedulerEven, Default, Isolation, Multi-tenant, RAS(work in progress)
  1. Evenly distribute a component's tasks across the nodes in the cluster.
  2. Balanace the number of tasks in a worker.
  3. Try to assign two tasks which are transferring messages directly into the same worker to reduce network cost.
  4. Support user-defined assignment and using the result of the last assignment. Different solution between Storm and JStorm.
The scheduler interface is pluggable, so we should be able to support both schedulers if needed. 
Nimbus HASupport for a pool of nimbus servers. Once Blobstore is merged in, "leader election" and "state storage" will be separate.Support for configuring more than one backup nimbus. When the master nimbus is down, the most appropriate spare nimbus (topologies on disk most closely match the records in ZooKeeper) will be chosen to be promoted.Need to evaluate the strengths and weaknesses of each and decide on updates to storm if any. 
Topology Structureworker 1->* executor 1->* taskworker 1-> taskNeed to evaluate if removing executors will add enough benefit to developers/performance that we can drop it from architecture.  Probably need resource aware re-balancing or Jstorm rebalancing that can support changing parallelism before this can happen. 
Topology MasterNone exactly. The Heartbeat Server (Currently under review) reduces load on ZK, but it is not really the same and may be a complement to TopologyMasterNew system bolt "topology master" was added, which is responsible for collecting task heartbeat info of all tasks and reporting the info to nimbus. Besides task heartbeat info, it also can be used to dispatch control messages within the topology. Topology master significantly reduces the amount of read/write to ZooKeeper. Before this change, ZooKeeper was the bottleneck for deploying big clusters and topologies.Need to evaluate how this impacts storm architecture especially around security. 
BackpressureBang-Bang controller on Disruptor queue capacity using ZooKeeper for broadcast.
  1. Implement backpressure using "topology master" (TM). TM is responsible for processing the trigger message and sending the flow control request to relevant spouts. "flow control" in JStorm doesn't complete stop the spout from emitting tuples, but instead just slows down the tuple sending.
  2. User can update the configuration of backpressure dynamically without restarting topology, e.g. enable/disable backpressue, high/low watermark, etc.
  
Monitoring of task execute threadPotential Pull Request, but none right now.Monitors the status of the execute thread of tasks. It is effective to find the slow bolt in a topology, and potentially uncovers deadlock as well.Yes we should do this 
Message processing

Deserialization happens on the netty thread

Serialization happens after the send queue when batching is happening.

  1. Add receiving and transferring queue/thread for each task to make deserialization and serialization asynchronously
  2. Remove receiving and transferring thread on worker level to avoid unnecessary locks and to shorten the message processing phase
The two sound equivalent now, but we should talk to see if there are other optimizations needed. 
Tuple BatchingBatching in DisruptorQueueDo batch before sending tuple to transfer queue and support for adjusting the batch size dynamically according to samples of actual batch size sent out for past intervals.Should evaluate both implementations, and see which is better for performance, and possible if we can/should move some of the dynamic batching logic into disruptor. 
Grouping

Load aware balancing in shuffle grouping

  1. Has a "localfirst" grouping that causes tuples to be sent to the tasks in the same worker by default. But if the load of all local tasks is high, the tuples will be sent out to remote tasks.
  2. Improve localOrShuffle grouping from Storm. In Storm's localOrShuffle grouping the definition of "local" is local within the same worker process. i.e., if there is a bolt that the component can send to in the current worker process it will send the tuples there. If there is not one, it will do round robin between all of the instances of that bolt no matter which hosts they are on. JStorm has extended that so that other workers/JVMs on the same host are considered "local" as well, taking into account the load of the network connections on the local worker.
We should look at combining both of these to have shuffle look at both distance and load to decide where to send a tuple. 
REST APIYesN/A NONE
web-UIYesDifferentDoes someone know a good UI designer that we can use?  I don't really like either of them (Bobby) but that is just me 
metric systemIMetric and IMetricConsumer
  1. All levels of metrics, including stream metrics, task metrics, component metrics, topology metrics, even cluster metrics, are sampled & calculated. Some metrics, e.g. ""tuple life cycle"", are very useful for debugging and finding the hotspots of a topology.
  2. Support full metrics data. Previous metric system can only display mean value of meters/histograms, the new metric system can display m1, m5, m15 of meters, and common percentiles of histograms.
  3. Use new metrics windows, the mininum metric window is 1 minute, thus we can see the metrics data every single minute.
  4. Supplies a metric uploader interface, third-party companies can easily build their own metric systems based on the historic metric data.
Ideally we should have a way to display most/system metrics in the UI.  IMetric is too generic to make this happen, but we cannot completely drop support for it.  But perhaps we need to depricate it if the JStorm metrics are much better. 
rebalance commandBasic functionality of rebalanceBesides rebalance, scale-out/in by updating the number of workers, ackers, spouts & bolts dynamically without stopping topology. Routing is updated dynamically within upstream components.dynamic routing with some groupings is difficult to get right when there is state, we need to be sure this is well documented, and might want to disallow it for some groupings without a force flag. 
list commandList information of topologiesList information of all topologies, all supervisors, and JStorm versionmore info is good, but we want it human readable too. perhaps with a machine readable option too 
zktool commandN/ASupports some ZooKeeper operations, e.g. "list", "read"…Will need to be evaluated for security 
metricsMonitor commandmonitor is similar, less metrics and read-onlyAllows toggling on/off some metrics which may impact topology performanceSounds great 
restart commandN/ARestart a topology. Besides restart, this command can also update the topology configuration.Sounds great 
update_topology commandN/AUpdate jars and configuration dynamically for a topology, without stopping the topology.Sounds great, should work will with blob-storm 
cgroupN/ASupports controlling the upper limit of CPU core usage for a worker using cgroupsSounds like a good start, will be nice to integrate it with RAS requests too. 
logging
  1. Supports user-defined log configuration via Log4j 2
  2. Supports dynamic changes to logging of a running topology
  3. Supports log4j and slf4j log APIS
  1. Supports user-defined configuration of log
  2. Supports both logback and log4j
Need to evaluate differences and see what we want long term 
Worker classloader (isolation)N/A - uses shading for most dependenciesThe "worker classloader" avoids problem of re-loading classesThis sounds great