You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@storm.apache.org by danny0405 <gi...@git.apache.org> on 2018/01/18 06:35:23 UTC

[GitHub] storm pull request #2517: [STORM-2901] Reuse ZK connection for getKeySequenc...

GitHub user danny0405 opened a pull request:

    https://github.com/apache/storm/pull/2517

    [STORM-2901] Reuse ZK connection for getKeySequenceNumber

    Reuse connections for nimbus blob-store keys registration when restarting.
    
    Also for storm-code setup.
    
    This is the JIRA: [#STORM-2901](https://issues.apache.org/jira/browse/STORM-2901)

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/danny0405/storm set-blob-prom

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/storm/pull/2517.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #2517
    
----
commit e6e5ce54c0f1f2874293d2677ebf13ae31e32afd
Author: chenyuzhao <ch...@...>
Date:   2018-01-18T06:16:57Z

    reuse zk connection for getKeySequenceNumber

----


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @danny0405 
    FYI, you can rebase your branch and force push to update your PR without closing.


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @danny0405 OK. Please file an issue regarding the bug you found.


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @danny0405 
    We can apply this to all the processes which connects Storm's ZK cluster. Could you make change into your patch?


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by danny0405 <gi...@git.apache.org>.
Github user danny0405 commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @HeartSaVioR
    During the cluster tests i also fond a bug for blob-store:
    
    When we kill a topology, at the moment of topology blob-files be removed, Supervisor executor still request blob-files and get an KeyNotFoundException, this is the partial of Supervisor log:
    ```xml
    2017-11-21 17:32:00.435 o.a.s.d.s.Slot SLOT_9703 [INFO] SLOT 9703: Changing current assignment from LocalAssignment(topology_id:word_count_fk_iii-3-1511256346, executors:[ExecutorInfo(task_start:7, task_end:7), ExecutorInfo(task_start:5, task_end:5), ExecutorInfo(task_start:3, task_end:3), ExecutorInfo(task_start:1, task_end:1)], resources:WorkerResources(mem_on_heap:512.0, mem_off_heap:0.0, cpu:40.0, shared_mem_on_heap:0.0, shared_mem_off_heap:0.0, resources:{offheap.memory.mb=0.0, onheap.memory.mb=512.0, cpu.pcore.percent=40.0}, shared_resources:{}), owner:sankuai) to null
    2017-11-21 17:32:10.520 o.a.s.l.AsyncLocalizer AsyncLocalizer Executor - 3 [WARN] Failed to download blob LOCAL TOPO BLOB TOPO_CODE word_count_fk_iii-3-1511256346 will try again in 100 ms
    org.apache.storm.generated.KeyNotFoundException: null
    	at org.apache.storm.generated.Nimbus$getBlobMeta_result$getBlobMeta_resultStandardScheme.read(Nimbus.java:24935) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    	at org.apache.storm.generated.Nimbus$getBlobMeta_result$getBlobMeta_resultStandardScheme.read(Nimbus.java:24903) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    	at org.apache.storm.generated.Nimbus$getBlobMeta_result.read(Nimbus.java:24834) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    	at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:86) ~[libthrift-0.9.3.jar:0.9.3]
    	at org.apache.storm.generated.Nimbus$Client.recv_getBlobMeta(Nimbus.java:812) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    	at org.apache.storm.generated.Nimbus$Client.getBlobMeta(Nimbus.java:799) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    	at org.apache.storm.blobstore.NimbusBlobStore.getBlobMeta(NimbusBlobStore.java:306) ~[storm-client-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    	at org.apache.storm.localizer.LocallyCachedTopologyBlob.getRemoteVersion(LocallyCachedTopologyBlob.java:176) ~[storm-server-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    	at org.apache.storm.localizer.AsyncLocalizer.lambda$downloadOrUpdate$5(AsyncLocalizer.java:249) ~[storm-server-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT]
    	at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1626) [?:1.8.0_151]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_151]
    	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_151]
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_151]
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_151]
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_151]
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_151]
    	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
    ```
    
    I thought of maybe this bug is revised by this patch, then i switch to master branch and have several tests, this bug can happens every time, so this bug has no business with this path.
    
    I will fire a bug report issue then.



---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @danny0405 
    Could you squash commits into one? And it would be great you can provide a patch for 1.x-branch as well.
    Thanks in advance!


---

[GitHub] storm pull request #2517: [STORM-2901] Reuse ZK connection for getKeySequenc...

Posted by danny0405 <gi...@git.apache.org>.
Github user danny0405 commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2517#discussion_r162608557
  
    --- Diff: storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java ---
    @@ -1263,24 +1281,23 @@ private void setupStormCode(Map<String, Object> conf, String topoId, String tmpJ
             String codeKey = ConfigUtils.masterStormCodeKey(topoId);
             String confKey = ConfigUtils.masterStormConfKey(topoId);
             NimbusInfo hostPortInfo = nimbusHostPortInfo;
    +
             if (tmpJarLocation != null) {
                 //in local mode there is no jar
                 try (FileInputStream fin = new FileInputStream(tmpJarLocation)) {
                     store.createBlob(jarKey, fin, new SettableBlobMeta(BlobStoreAclHandler.DEFAULT), subject);
                 }
    -            if (store instanceof LocalFsBlobStore) {
    -                clusterState.setupBlobstore(jarKey, hostPortInfo, getVersionForKey(jarKey, hostPortInfo, conf));
    -            }
             }
     
             topoCache.addTopoConf(topoId, subject, topoConf);
    -        if (store instanceof LocalFsBlobStore) {
    -            clusterState.setupBlobstore(confKey, hostPortInfo, getVersionForKey(confKey, hostPortInfo, conf));
    -        }
    -
             topoCache.addTopology(topoId, subject, topology);
    +
             if (store instanceof LocalFsBlobStore) {
    -            clusterState.setupBlobstore(codeKey, hostPortInfo, getVersionForKey(codeKey, hostPortInfo, conf));
    +            if (tmpJarLocation != null) {
    +                clusterState.setupBlobstore(jarKey, hostPortInfo, getVersionForKey(jarKey, hostPortInfo, getOrCreateZkClient()));
    --- End diff --
    
    Done.


---

[GitHub] storm pull request #2517: [STORM-2901] Reuse ZK connection for getKeySequenc...

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2517#discussion_r162311410
  
    --- Diff: storm-server/src/main/java/org/apache/storm/blobstore/KeySequenceNumber.java ---
    @@ -131,9 +131,8 @@ public KeySequenceNumber(String key, NimbusInfo nimbusInfo) {
             this.nimbusInfo = nimbusInfo;
         }
     
    -    public synchronized int getKeySequenceNumber(Map<String, Object> conf) throws KeyNotFoundException {
    +    public synchronized int getKeySequenceNumber(CuratorFramework zkClient) throws KeyNotFoundException {
             TreeSet<Integer> sequenceNumbers = new TreeSet<Integer>();
    -        CuratorFramework zkClient = BlobStoreUtils.createZKClient(conf);
    --- End diff --
    
    You should remove `finally` statement since it is no longer created in this method, it's being passed from caller. Caller should have responsibility to close this.


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @danny0405 Nice. I'll not file a new issue for that then.


---

[GitHub] storm pull request #2517: [STORM-2901] Reuse ZK connection for getKeySequenc...

Posted by danny0405 <gi...@git.apache.org>.
Github user danny0405 closed the pull request at:

    https://github.com/apache/storm/pull/2517


---

[GitHub] storm pull request #2517: [STORM-2901] Reuse ZK connection for getKeySequenc...

Posted by danny0405 <gi...@git.apache.org>.
Github user danny0405 commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2517#discussion_r162347006
  
    --- Diff: storm-server/src/main/java/org/apache/storm/blobstore/KeySequenceNumber.java ---
    @@ -131,9 +131,8 @@ public KeySequenceNumber(String key, NimbusInfo nimbusInfo) {
             this.nimbusInfo = nimbusInfo;
         }
     
    -    public synchronized int getKeySequenceNumber(Map<String, Object> conf) throws KeyNotFoundException {
    +    public synchronized int getKeySequenceNumber(CuratorFramework zkClient) throws KeyNotFoundException {
             TreeSet<Integer> sequenceNumbers = new TreeSet<Integer>();
    -        CuratorFramework zkClient = BlobStoreUtils.createZKClient(conf);
    --- End diff --
    
    done


---

[GitHub] storm pull request #2517: [STORM-2901] Reuse ZK connection for getKeySequenc...

Posted by danny0405 <gi...@git.apache.org>.
Github user danny0405 commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2517#discussion_r162608136
  
    --- Diff: storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java ---
    @@ -1149,6 +1155,18 @@ public void setAuthorizationHandler(IAuthorizer authorizationHandler) {
             this.authorizationHandler = authorizationHandler;
         }
     
    +    private CuratorFramework getOrCreateZkClient() {
    --- End diff --
    
    Done.


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by danny0405 <gi...@git.apache.org>.
Github user danny0405 commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @HeartSaVioR 
    I have checkout the code and find that there is watch listenable registered for StormClusterState CuratorFrameworks, so i can not reuse them, but i can make BlobStore CuratorFramework reusable and non-closing and only the nimbus will close it.
    
    Is this ok?


---

[GitHub] storm pull request #2517: [STORM-2901] Reuse ZK connection for getKeySequenc...

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2517#discussion_r162310802
  
    --- Diff: storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java ---
    @@ -2151,9 +2161,10 @@ private void setupBlobstore() throws AuthorizationException, KeyNotFoundExceptio
                 store.deleteBlob(toDelete, NIMBUS_SUBJECT);
             }
             LOG.debug("Creating list of key entries for blobstore inside zookeeper {} local {}", activeKeys, activeLocalKeys);
    +        CuratorFramework zkClient = BlobStoreUtils.createZKClient(conf);
    --- End diff --
    
    **`zkClient` must be guaranteed to be closed.** Please ensure `zkClient` is closed after `for` statement.


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @danny0405 
    For replacing CuratorFramework instances with singleton instance, let's file an issue and handle it later. Maybe I could take it up later.


---

[GitHub] storm pull request #2517: [STORM-2901] Reuse ZK connection for getKeySequenc...

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2517#discussion_r162548012
  
    --- Diff: storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java ---
    @@ -1149,6 +1155,18 @@ public void setAuthorizationHandler(IAuthorizer authorizationHandler) {
             this.authorizationHandler = authorizationHandler;
         }
     
    +    private CuratorFramework getOrCreateZkClient() {
    --- End diff --
    
    I guess Nimbus should have CuratorFramework instance, so don't feel the need to apply lazy initialization with double check locking. Nimbus constructor already has leader elector which relies on ZK.


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    Nice finding!
    
    Btw, according to Curator web site, each process (nimbus, supervisor, worker, etc.) can share singleton curator framework instance since it's thread-safe.
    
    http://curator.apache.org/curator-framework/
    
    > CuratorFrameworks are allocated using the CuratorFrameworkFactory which provides both factory methods and a builder for creating instances. IMPORTANT: CuratorFramework instances are fully thread-safe. You should share one CuratorFramework per ZooKeeper cluster in your application.
    
    We are using Curator 4.0 both master and 1.x branch, hence we are good to apply this.


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by danny0405 <gi...@git.apache.org>.
Github user danny0405 commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @HeartSaVioR
    This is a good idea! I would love to do it, but i need to checkout the code to see the specific effects to deamons like Nimbus/Supervisor and worker processes.
    
    BTW, StormClusterState already has a ZK connection, we can reuse it too.


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by danny0405 <gi...@git.apache.org>.
Github user danny0405 commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @HeartSaVioR 
    Yeah a 4.0 Curator is really good, we can even make a single connection in Nimbus instance, and reuse it for some timer-task functions like blobstore sync.


---

[GitHub] storm pull request #2517: [STORM-2901] Reuse ZK connection for getKeySequenc...

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2517#discussion_r162547621
  
    --- Diff: storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java ---
    @@ -1263,24 +1281,23 @@ private void setupStormCode(Map<String, Object> conf, String topoId, String tmpJ
             String codeKey = ConfigUtils.masterStormCodeKey(topoId);
             String confKey = ConfigUtils.masterStormConfKey(topoId);
             NimbusInfo hostPortInfo = nimbusHostPortInfo;
    +
             if (tmpJarLocation != null) {
                 //in local mode there is no jar
                 try (FileInputStream fin = new FileInputStream(tmpJarLocation)) {
                     store.createBlob(jarKey, fin, new SettableBlobMeta(BlobStoreAclHandler.DEFAULT), subject);
                 }
    -            if (store instanceof LocalFsBlobStore) {
    -                clusterState.setupBlobstore(jarKey, hostPortInfo, getVersionForKey(jarKey, hostPortInfo, conf));
    -            }
             }
     
             topoCache.addTopoConf(topoId, subject, topoConf);
    -        if (store instanceof LocalFsBlobStore) {
    -            clusterState.setupBlobstore(confKey, hostPortInfo, getVersionForKey(confKey, hostPortInfo, conf));
    -        }
    -
             topoCache.addTopology(topoId, subject, topology);
    +
             if (store instanceof LocalFsBlobStore) {
    -            clusterState.setupBlobstore(codeKey, hostPortInfo, getVersionForKey(codeKey, hostPortInfo, conf));
    +            if (tmpJarLocation != null) {
    +                clusterState.setupBlobstore(jarKey, hostPortInfo, getVersionForKey(jarKey, hostPortInfo, getOrCreateZkClient()));
    --- End diff --
    
    Let's not move the code position unless we're sure about context of codebase and it doesn't break anything.


---

[GitHub] storm pull request #2517: [STORM-2901] Reuse ZK connection for getKeySequenc...

Posted by HeartSaVioR <gi...@git.apache.org>.
Github user HeartSaVioR commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2517#discussion_r162311055
  
    --- Diff: storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java ---
    @@ -1263,24 +1266,31 @@ private void setupStormCode(Map<String, Object> conf, String topoId, String tmpJ
             String codeKey = ConfigUtils.masterStormCodeKey(topoId);
             String confKey = ConfigUtils.masterStormConfKey(topoId);
             NimbusInfo hostPortInfo = nimbusHostPortInfo;
    +
    +        CuratorFramework zkClient = null;
    --- End diff --
    
    **`zkClient` must be guaranteed to be closed.** Please ensure `zkClient` is closed before end of method if zkClient is not null.


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by danny0405 <gi...@git.apache.org>.
Github user danny0405 commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @HeartSaVioR
    Making the curatorFramework singleton is good, and i'm doing it.


---

[GitHub] storm issue #2517: [STORM-2901] Reuse ZK connection for getKeySequenceNumber

Posted by danny0405 <gi...@git.apache.org>.
Github user danny0405 commented on the issue:

    https://github.com/apache/storm/pull/2517
  
    @HeartSaVioR 
    Really thx for you careful review work i have applied your contribution.
    
    It's weird that i build storm-core with cmd: `mvn clean install -Pall-tests` successfully, this is partial of the build log:
    
    ***
    3636 [main] WARN  o.a.s.v.ConfigValidation - storm.messaging.netty.max_retries is a deprecated config please see class org.apache.storm.Config.STORM_MESSAGING_NETTY_MAX_RETRIES for more information.
    Running org.apache.storm.submitter-test
    Tests run: 1, Passed: 13, Failures: 0, Errors: 0
    Running org.apache.storm.messaging.netty-unit-test
    Tests run: 5, Passed: 24, Failures: 0, Errors: 0
    Running org.apache.storm.cluster-test
    Tests run: 10, Passed: 92, Failures: 0, Errors: 0
    Running integration.org.apache.storm.integration-test
    Tests run: 13, Passed: 45, Failures: 0, Errors: 0
    Running org.apache.storm.scheduler-test
    Tests run: 4, Passed: 64, Failures: 0, Errors: 0
    Running org.apache.storm.messaging.netty-integration-test
    Tests run: 1, Passed: 1, Failures: 0, Errors: 0
    Running org.apache.storm.transactional-test
    Tests run: 6, Passed: 108, Failures: 0, Errors: 0
    Running org.apache.storm.grouping-test
    Tests run: 3, Passed: 7, Failures: 0, Errors: 0
    Running org.apache.storm.security.auth.auth-test
    Tests run: 14, Passed: 100, Failures: 0, Errors: 0
    Running integration.org.apache.storm.trident.integration-test
    Tests run: 9, Passed: 141, Failures: 0, Errors: 0
    Running org.apache.storm.metrics-test
    Tests run: 8, Passed: 66, Failures: 0, Errors: 0
    Running org.apache.storm.security.auth.auto-login-module-test
    Tests run: 6, Passed: 22, Failures: 0, Errors: 0
    Running org.apache.storm.trident.tuple-test
    Tests run: 6, Passed: 36, Failures: 0, Errors: 0
    Running org.apache.storm.serialization-test
    Tests run: 1, Passed: 0, Failures: 0, Errors: 0
    Running org.apache.storm.nimbus-test
    Tests run: 41, Passed: 773, Failures: 0, Errors: 0
    Running org.apache.storm.drpc-test
    Tests run: 7, Passed: 14, Failures: 0, Errors: 0
    Running org.apache.storm.versioned-store-test
    Tests run: 2, Passed: 5, Failures: 0, Errors: 0
    Running org.apache.storm.scheduler.multitenant-scheduler-test
    Tests run: 17, Passed: 233, Failures: 0, Errors: 0
    Running org.apache.storm.trident.state-test
    Tests run: 5, Passed: 37, Failures: 0, Errors: 0
    Running integration.org.apache.storm.testing4j-test
    Tests run: 7, Passed: 26, Failures: 0, Errors: 0
    Running org.apache.storm.security.auth.nimbus-auth-test
    Tests run: 5, Passed: 39, Failures: 0, Errors: 0
    [INFO] 
    [INFO] --- jacoco-maven-plugin:0.7.2.201409121644:report (report) @ storm-core ---
    [INFO] Skipping JaCoCo execution due to missing execution data file:/Users/danny0405/study/storm2/storm/storm-core/target/jacoco.exec
    [INFO] 
    [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ storm-core ---
    [INFO] Building jar: /Users/danny0405/study/storm2/storm/storm-core/target/storm-core-2.0.0-SNAPSHOT.jar
    [INFO] 
    [INFO] --- maven-site-plugin:3.5.1:attach-descriptor (attach-descriptor) @ storm-core ---
    [INFO] 
    [INFO] --- maven-dependency-plugin:2.8:copy-dependencies (copy-dependencies) @ storm-core ---
    [INFO] Copying jgrapht-core-0.9.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jgrapht-core-0.9.0.jar
    [INFO] Copying tools.logging-0.2.3.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/tools.logging-0.2.3.jar
    [INFO] Copying netty-3.9.0.Final.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/netty-3.9.0.Final.jar
    [INFO] Copying carbonite-1.5.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/carbonite-1.5.0.jar
    [INFO] Copying httpclient-4.3.3.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/httpclient-4.3.3.jar
    [INFO] Copying hiccup-0.3.6.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/hiccup-0.3.6.jar
    [INFO] Copying joda-time-2.3.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/joda-time-2.3.jar
    [INFO] Copying tools.namespace-0.2.11.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/tools.namespace-0.2.11.jar
    [INFO] Copying clj-stacktrace-0.2.8.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/clj-stacktrace-0.2.8.jar
    [INFO] Copying commons-compress-1.4.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/commons-compress-1.4.1.jar
    [INFO] Copying jackson-core-2.9.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jackson-core-2.9.2.jar
    [INFO] Copying disruptor-3.3.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/disruptor-3.3.2.jar
    [INFO] Copying tigris-0.1.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/tigris-0.1.1.jar
    [INFO] Copying objenesis-2.6.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/objenesis-2.6.jar
    [INFO] Copying jetty-servlets-9.4.7.v20170914.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jetty-servlets-9.4.7.v20170914.jar
    [INFO] Copying clojure-1.7.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/clojure-1.7.0.jar
    [INFO] Copying compojure-1.1.9.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/compojure-1.1.9.jar
    [INFO] Copying ring-servlet-1.6.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/ring-servlet-1.6.2.jar
    [INFO] Copying tools.cli-0.2.4.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/tools.cli-0.2.4.jar
    [INFO] Copying java.jmx-0.3.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/java.jmx-0.3.1.jar
    [INFO] Copying jaxb-api-2.3.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jaxb-api-2.3.0.jar
    [INFO] Copying jetty-security-9.4.7.v20170914.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jetty-security-9.4.7.v20170914.jar
    [INFO] Copying curator-client-4.0.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/curator-client-4.0.0.jar
    [INFO] Copying crypto-random-1.2.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/crypto-random-1.2.0.jar
    [INFO] Copying clout-1.2.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/clout-1.2.0.jar
    [INFO] Copying java.classpath-0.2.3.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/java.classpath-0.2.3.jar
    [INFO] Copying kryo-shaded-3.0.3.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/kryo-shaded-3.0.3.jar
    [INFO] Copying crypto-equality-1.0.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/crypto-equality-1.0.0.jar
    [INFO] Copying tools.macro-0.1.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/tools.macro-0.1.0.jar
    [INFO] Copying minlog-1.3.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/minlog-1.3.0.jar
    [INFO] Copying storm-client-2.0.0-SNAPSHOT.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/storm-client-2.0.0-SNAPSHOT.jar
    [INFO] Copying guava-16.0.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/guava-16.0.1.jar
    [INFO] Copying commons-cli-1.3.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/commons-cli-1.3.1.jar
    [INFO] Copying log4j-over-slf4j-1.6.6.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/log4j-over-slf4j-1.6.6.jar
    [INFO] Copying jackson-dataformat-smile-2.9.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jackson-dataformat-smile-2.9.2.jar
    [INFO] Copying snakeyaml-1.11.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/snakeyaml-1.11.jar
    [INFO] Copying jetty-servlet-9.4.7.v20170914.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jetty-servlet-9.4.7.v20170914.jar
    [INFO] Copying ns-tracker-0.3.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/ns-tracker-0.3.1.jar
    [INFO] Copying reflectasm-1.10.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/reflectasm-1.10.1.jar
    [INFO] Copying log4j-core-2.8.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/log4j-core-2.8.2.jar
    [INFO] Copying commons-codec-1.6.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/commons-codec-1.6.jar
    [INFO] Copying commons-io-2.5.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/commons-io-2.5.jar
    [INFO] Copying asm-5.0.3.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/asm-5.0.3.jar
    [INFO] Copying kryo-3.0.3.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/kryo-3.0.3.jar
    [INFO] Copying jline-0.9.94.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jline-0.9.94.jar
    [INFO] Copying libthrift-0.9.3.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/libthrift-0.9.3.jar
    [INFO] Copying jetty-util-9.4.7.v20170914.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jetty-util-9.4.7.v20170914.jar
    [INFO] Copying ring-devel-1.6.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/ring-devel-1.6.2.jar
    [INFO] Copying ring-core-1.6.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/ring-core-1.6.2.jar
    [INFO] Copying ring-codec-1.0.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/ring-codec-1.0.1.jar
    [INFO] Copying chill-java-0.8.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/chill-java-0.8.0.jar
    [INFO] Copying jetty-continuation-9.4.7.v20170914.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jetty-continuation-9.4.7.v20170914.jar
    [INFO] Copying commons-fileupload-1.3.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/commons-fileupload-1.3.2.jar
    [INFO] Copying jackson-dataformat-cbor-2.9.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jackson-dataformat-cbor-2.9.2.jar
    [INFO] Copying zookeeper-3.4.6.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/zookeeper-3.4.6.jar
    [INFO] Copying xz-1.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/xz-1.0.jar
    [INFO] Copying curator-recipes-4.0.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/curator-recipes-4.0.0.jar
    [INFO] Copying json-simple-1.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/json-simple-1.1.jar
    [INFO] Copying metrics-core-3.1.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/metrics-core-3.1.0.jar
    [INFO] Copying storm-clojure-2.0.0-SNAPSHOT.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/storm-clojure-2.0.0-SNAPSHOT.jar
    [INFO] Copying sysout-over-slf4j-1.0.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/sysout-over-slf4j-1.0.2.jar
    [INFO] Copying jetty-http-9.4.7.v20170914.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jetty-http-9.4.7.v20170914.jar
    [INFO] Copying httpcore-4.4.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/httpcore-4.4.1.jar
    [INFO] Copying storm-server-2.0.0-SNAPSHOT.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/storm-server-2.0.0-SNAPSHOT.jar
    [INFO] Copying commons-exec-1.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/commons-exec-1.1.jar
    [INFO] Copying ring-json-0.4.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/ring-json-0.4.0.jar
    [INFO] Copying slf4j-api-1.7.21.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/slf4j-api-1.7.21.jar
    [INFO] Copying log4j-api-2.8.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/log4j-api-2.8.2.jar
    [INFO] Copying hadoop-auth-2.6.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/hadoop-auth-2.6.1.jar
    [INFO] Copying cheshire-5.5.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/cheshire-5.5.0.jar
    [INFO] Copying javax.servlet-api-3.1.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/javax.servlet-api-3.1.0.jar
    [INFO] Copying clj-time-0.8.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/clj-time-0.8.0.jar
    [INFO] Copying commons-lang-2.5.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/commons-lang-2.5.jar
    [INFO] Copying commons-collections-3.2.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/commons-collections-3.2.2.jar
    [INFO] Copying jetty-io-9.4.7.v20170914.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jetty-io-9.4.7.v20170914.jar
    [INFO] Copying ring-jetty-adapter-1.6.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/ring-jetty-adapter-1.6.2.jar
    [INFO] Copying log4j-slf4j-impl-2.8.2.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/log4j-slf4j-impl-2.8.2.jar
    [INFO] Copying metrics-clojure-2.5.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/metrics-clojure-2.5.1.jar
    [INFO] Copying jetty-server-9.4.7.v20170914.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/jetty-server-9.4.7.v20170914.jar
    [INFO] Copying commons-logging-1.1.3.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/commons-logging-1.1.3.jar
    [INFO] Copying curator-framework-4.0.0.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/curator-framework-4.0.0.jar
    [INFO] Copying math.numeric-tower-0.0.1.jar to /Users/danny0405/study/storm2/storm/storm-core/target/dependency/math.numeric-tower-0.0.1.jar
    [INFO] 
    [INFO] --- maven-source-plugin:2.2.1:jar-no-fork (attach-sources) @ storm-core ---
    [INFO] Building jar: /Users/danny0405/study/storm2/storm/storm-core/target/storm-core-2.0.0-SNAPSHOT-sources.jar
    [INFO] 
    [INFO] --- maven-jar-plugin:2.6:test-jar (default) @ storm-core ---
    [INFO] Building jar: /Users/danny0405/study/storm2/storm/storm-core/target/storm-core-2.0.0-SNAPSHOT-tests.jar
    [INFO] 
    [INFO] --- maven-failsafe-plugin:2.19.1:integration-test (default) @ storm-core ---
    
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    
    Results :
    
    Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
    
    [INFO] 
    [INFO] --- maven-failsafe-plugin:2.19.1:verify (default) @ storm-core ---
    [INFO] 
    [INFO] --- maven-install-plugin:2.5.2:install (default-install) @ storm-core ---
    [INFO] Installing /Users/danny0405/study/storm2/storm/storm-core/target/storm-core-2.0.0-SNAPSHOT.jar to /Users/danny0405/.m2/repository/org/apache/storm/storm-core/2.0.0-SNAPSHOT/storm-core-2.0.0-SNAPSHOT.jar
    [INFO] Installing /Users/danny0405/study/storm2/storm/storm-core/pom.xml to /Users/danny0405/.m2/repository/org/apache/storm/storm-core/2.0.0-SNAPSHOT/storm-core-2.0.0-SNAPSHOT.pom
    [INFO] Installing /Users/danny0405/study/storm2/storm/storm-core/target/storm-core-2.0.0-SNAPSHOT-sources.jar to /Users/danny0405/.m2/repository/org/apache/storm/storm-core/2.0.0-SNAPSHOT/storm-core-2.0.0-SNAPSHOT-sources.jar
    [INFO] Installing /Users/danny0405/study/storm2/storm/storm-core/target/storm-core-2.0.0-SNAPSHOT-tests.jar to /Users/danny0405/.m2/repository/org/apache/storm/storm-core/2.0.0-SNAPSHOT/storm-core-2.0.0-SNAPSHOT-tests.jar
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 05:30 min
    [INFO] Finished at: 2018-01-20T14:28:28+08:00
    [INFO] Final Memory: 53M/640M
    [INFO] ------------------------------------------------------------------------
    ***
    
    But i think it's because of the Clojure UI tests had caught up the exceptions and make the tests passed. Really thx for your carefulness.


---