Coder Social home page Coder Social logo

turbine's Introduction

Documentation

See the Wiki for full documentation, examples, operational details and other information.

Build Status

Bugs and Feedback

For bugs, questions and discussions please use the Github Issues.

Binaries

Binaries and dependency information for Maven, Ivy, Gradle and others can be found at http://search.maven.org.

Library

Dependencies on the library for embedded use are found on Maven Central.

Example for Maven:

<dependency>
    <groupId>com.netflix.turbine</groupId>
    <artifactId>turbine</artifactId>
    <version>2.minor.patch</version>
</dependency>

and for Ivy:

<dependency org="com.netflix.turbine" name="turbine" rev="2.minor.patch" />

Executable

The standalone executable can also be found on Maven Central or in the Github Releases section.

Build

  • You need Java 8 or later.

To build:

$ git clone [email protected]:Netflix/Turbine.git
$ cd Turbine/
$ ./gradlew build

LICENSE

Copyright 2014 Netflix, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

turbine's People

Contributors

ahus1 avatar arunh avatar benjchristensen avatar cfregly avatar efultz avatar joelittlejohn avatar johanhaleby avatar opuneet avatar placeybordeaux avatar qiangdavidliu avatar quidryan avatar randgalt avatar xorlev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

turbine's Issues

Turbine and hystrix for multiple instances

I am trying to register multiple instances to spring admin server and trying to read turbine stream.

I am able to get the hystrix.stream after serving first request.

I am able to get the turbine stream with below URL:
http://localhost:8080/springadmins/api/turbine/stream?cluster=app1-dev

Below is the configuration for turbine.

config.properties - I didn't configure any properties.

---> application.properties has the below configuration.

turbine.aggregator.clusterConfig=app1-dev
turbine.instanceUrlSuffix.default=/app1/admin/hystrix.stream
turbine.instanceUrlSuffix.app1-dev=/admin/hystrix.stream
turbine.instanceUrlSuffix.app1-dev2=/admin/hystrix.stream
turbine.ConfigPropertyBasedDiscovery.default.instances=localhost,localhost:8080
turbine.ConfigPropertyBasedDiscovery.app1-dev.instances=app1.dev.welcome.com
turbine.ConfigPropertyBasedDiscovery.app1-dev2.instances=app1.dev2.welcome.com

---> application.yml file has below details:
spring.boot.admin.routes.endpoints:
env,metrics,trace,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,hystrix.stream

spring.boot.admin.turbine:
clusters: default,app1-dev
url: /api/turbine/stream

--- added TurbineStreamServlet extends com.netflix.turbine.streaming.servlet.TurbineStreamServlet with below bean configured

@Bean
public ServletRegistrationBean turbineStreamServlet() {
    return new ServletRegistrationBean(new TurbineStreamServlet(), "/api/turbine/stream");
} 

Here I increased the instances from clould which has same domain name like 'app1.dev.welcome.com',
but not able to see spring boot registering multiple instances and trubine always shows Host:1 in admin page.
Can you please guide do we need any other configurations.

Build turbine-web app

I have been trying to build turbine-web war file as the shipped turbine-web-1.0.0 does not seem to work for me and decided to compile it from source but cannot understand how to start.

" ./gradlew build " only builds but doesn't create any war file. If any of you guys could share on how to create turbine web war file and successfully deploy it.

config several clusters, but only one cluster can work

I use turbine-web-1.0.0.war to monit hystrix, and i found that i config several clusters, but only one cluster can work, the config.properties like this :

turbine.aggregator.clusterConfig=aaa,bbb turbine.ConfigPropertyBasedDiscovery.aaa.instances=host1,host2 turbine.instanceUrlSuffix.aaa=:3000/hystrix.stream turbine.ConfigPropertyBasedDiscovery.bbb.instances=host3,host4 turbine.instanceUrlSuffix.bbb=:4000/hystrix.stream

when i request http://localhost:8140/turbine/turbine.stream?cluster=aaa, i can get data, but when i request cluster=bbb, there is no data return, then i modify the config file to turbine.aggregator.clusterConfig=bbb,aaa , the result is cluster bbb can work but cluster aaa cannot work, it seems that only the first cluster in the config file can work ,i don't know why?

Same commandKey but different groupKey but only one chart displayed

When using Turbine I have following scenario (I'm using @FeignClient in my apps):

  • CLIENT_APP registers "receive" and it is displayed correctly in dashboard (in my case this commandKey is used by @FeignClient to make calls to SERVICE_APP).
  • SERVICE_APP registers its own "receive" but it is not displayed.
  • We make some calls from CLIENT_APP to SERVICE_APP . "receive" (from CLIENT_APP) increments.
  • We make some calls from another microservice to SERVICE_APP and "receive" is not counted (!)

This scenario is true when CLIENT_APP starts and is tested as the first one. If SERVICE_APP starts first, "receive" from SERVICE_APP will be counted instead of "receive" from CLIENT_APP . This could be acceptable scenario because the most important is to count SERVICE_APP .

We have unique commandKey, groupKey value pairs read from /management/hystrix.stream from both apps:

  • CLIENT_APP : "name":"receive","group":"service-app" (Feign commandKey is Eureka instance name)
  • SERVICE_APP : "name":"receive","group":"MyService" (commandKey inherited from Java interface name)

I expected Turbine to handle such case and display two different charts.

When we monitor single application using dashboard everything works fine.

Turbine error "Enable to connect command matrix stream"

I am not sure this is right place to ask this question but i tried it on stackoverflow but no body is answering. Please assist me in below issue.

I am configuring hystrix turbine dashbord using ConfigPropertyBasedDiscovery . When I hit normal stream URL, it works fine
http://localhost:8080/turbine.stream?cluster=EXAMPLE

screen shot 2016-06-07 at 4 21 54 pm

But when I try to load this cluster stream in dashbord it show below error "unable to connect command matrix" on browser and on console "EventSource's response has a MIME type ("text/plain") that is not "text/event-stream". Aborting the connection.". Please have look on screen shot.

screen shot 2016-06-06 at 5 09 37 pm

Below is my config.properties

turbine.aggregator.clusterConfig=EXAMPLE,EXAMPLE1
turbine.instanceUrlSuffix=:9080/hystrix.stream

turbine.ConfigPropertyBasedDiscovery.EXAMPLE.instances=localhost
turbine.ConfigPropertyBasedDiscovery.EXAMPLE1.instances=139.126.244.170

InstanceDiscovery.impl=com.netflix.turbine.discovery.ConfigPropertyBasedDiscovery

My Application.java
@EnableHystrixDashboard
public class Application extends SpringBootApplication {
private static Class applicationClass = Application.class;
public static void main(String[] args) {
SpringApplication.run(applicationClass, args);
TurbineInit.init();
}
@OverRide
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
super.configure(application);
return application.sources(applicationClass);
}
}

And servlet registration for "/turbine.stream"

    @Configuration
    public class ServletRegistrationConfig {
        @Bean
        public ServletRegistrationBean registerTurbineBean(){
            return  new ServletRegistrationBean(new TurbineStreamServlet(), "/turbine.stream");
        }
    }

Please assist me in this. And let me know if I missed out in configuration.

Version 2.0 and Status Update

An update on the status of this project ...

Version 0.x/1.x is being end-of-lifed at Netflix. It has been used in production without modifications for well over a year aggregating streams 24/7.

We are replacing it internally at Netflix with a larger stream processing system that is more generic in nature and the Turbine function will be replaced by a job on the new stream processing system.

However, Turbine still plays a role for (1) the open-source community using Hystrix or other similar needs and (2) for use cases where a larger stream processing system is overkill (or in our case for monitoring the stream processing system itself).

Thus, the intent is to still have a functioning solution in Turbine.

The Turbine 0.x/1.x codebase is rather complicated and is not something anyone is maintaining (hence the stale codebase, lack of responsiveness to pull requests and issues, etc).

The 1.x branch will continue to exist and can be modified if necessary but that is unlikely since it has been stable for 1+ years in Netflix use. No new features will be added to it.

A new 2.x branch has been created and is a rewrite using Netty and RxJava instead of Tomcat, blocking IO and low-level concurrency primitives.

It is not attempting to be a drop-in replacement. It will achieve the same result but with a different design. It will act as either a library that can be embedded, or a standalone Java application.

It will be written in Java 8 and support very basic "discovery" plugins as separate modules, along with an API to allow anyone to use the library and add their own functionality without needing to use complicated configuration or deployment strategies. It will just be a library ... that happens to also have a main method for execution of the simple cases.

You can follow along and be involved if you wish at https://github.com/Netflix/Turbine/tree/2.x and once it is functional it will be released as 2.0.0 and made the default branch for the Turbine project.

Time skew

Reported in Netflix/Hystrix#325

Text from that issue:

@foobaar: For the longest time we couldn't get turbine to work.
Eventually we drilled down and found that we had a time skew issue between the servers we were running turbine on and the servers we were monitoring.

For certain reasons we decided not to fix the skew, but instead we realized that we can side step this problem by setting skipLine logic property to false.
This made turbine work.

But are there any other assumptions that are made based around time?
Or in other words, have we sufficiently side stepped the problem?

@benjchristensen: Time is used to skip ahead if it falls behind. In Turbine 2 we can use an approach that doesn't involve absolute time as RxJava which it uses has an approach to backpressure that would be better.

Spring cloud turbine.stream reports no data

I have deployed the turbine service together with a cluster of "DEVICE-SERVICE" in the cloud. It works well at beginning (The Hystrix data can be viewed both at Hystix Dashboard and terminal). However, it broken after about one day running. I reboot turbine service, but it occurred again.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.turbine.EnableTurbine;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableDiscoveryClient

@EnableTurbine

@SpringBootApplication

@EnableSwagger2

public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

BTW:
When turbine service works well, the data can be viewed with the following:

  1. On the Dashboard, the data can be viewed via "http://turbine-service.mi-ae.cn/turbine.stream?cluster=DEVICE-SERVICE"
  2. On the terminal, "CURL http://turbine-service.mi-ae.cn/turbine.stream?cluster=DEVICE-SERVICE"

When turbine service breaks, it looks like this:

  1. On the Dashboard:
    Click to see the picture
  2. On the terminal:
    Click to see the picture

Hope everyone can help!

Turbine problem with two streams from two applications

Please help me on that issue. I have two applications running on the same two hosts. Streams are different for these apps due to the fact that they have different set of HystrixCommands.
Each stream can be observed separately.
This is my config file:
turbine.aggregator.clusterConfig=news,weather

turbine.ConfigPropertyBasedDiscovery.urls.instances=two_hosts
turbine.ConfigPropertyBasedDiscovery.news.instances=the_same_two_hosts
turbine.instanceUrlSuffix.news=/news/hystrix.stream
turbine.instanceUrlSuffix.urls=/weather/hystrix.stream

Is it correctly constructed?

When in dashboard I enter the first cluster then I can see metrics. It does not work for the second cluster. When I change the order of clusters in theconfig file then it always works for the first one.

Any idea of what I am doing wrong? Below is the stacktrace:

ClientAbortException: java.net.SocketException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:330)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:296)
at org.apache.catalina.connector.Response.flushBuffer(Response.java:549)
at org.apache.catalina.connector.ResponseFacade.flushBuffer(ResponseFacade.java:279)
at com.netflix.turbine.streaming.servlet.SynchronizedHttpServletResponse.flushBuffer(SynchronizedHttpServletResponse.java:79)
at com.netflix.turbine.streaming.servlet.TurbineStreamServlet$ServletStreamHandler.noData(TurbineStreamServlet.java:226)
at com.netflix.turbine.streaming.TurbineStreamingConnection.waitOnConnection(TurbineStreamingConnection.java:216)
at com.netflix.turbine.streaming.servlet.TurbineStreamServlet.streamFromCluster(TurbineStreamServlet.java:136)
at com.netflix.turbine.streaming.servlet.TurbineStreamServlet.doGet(TurbineStreamServlet.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:756)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:448)
at org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:318)
at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:985)
at org.apache.coyote.Response.action(Response.java:183)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:325)
... 22 more

Unable to load AWS credentials when using AWS auto discovery

Hi guys,

I'm unable to make turbine see AWS credentials:

  • editing the config file in tomcat at /var/lib/tomcat7/webapps/turbine-web-1.0.0/WEB-INF/classes/config.properties
  • exporting the vars in the shell
  • putting .aws/credentials file in root/ubuntu/tomcat users homes

nothing works, can't fetch servers from AutoScalingGroups.

Either I'm doing something really silly or there is something broken in turbine-contrib for the auto-discovery feature. I hope it's the nr.1.
Is there something I'm forgetting?

Thanks

Backward compatibility of streams

Unlike Turbine 1.x, Turbive v2.x does not aggregate property values, such as propertyValue_metricsRollingStatisticalWindowInMilliseconds. This means that streams produced by Turbine 2.x are not completely backward compatible with existing tools like hystrix-dashboard. Was this a forward-looking design decision or an oversight? Does it make sense to add a version attribute so that existing tools can interoperate between the two?

gradlew build failed

While bootstrapping project, I have encountered following error:

Downloading http://services.gradle.org/distributions/gradle-1.5-bin.zip
Unzipping /root/.gradle/wrapper/dists/gradle-1.5-bin/9si5v6u7tk37kj5dlsrdcm595/gradle-1.5-bin.zip to /root/.gradle/wrapper/dists/gradle-1.5-bin/9si5v6u7tk37kj5dlsrdcm595
Set executable permissions for: /root/.gradle/wrapper/dists/gradle-1.5-bin/9si5v6u7tk37kj5dlsrdcm595/gradle-1.5/bin/gradle

FAILURE: Build failed with an exception.

* Where:
Build file '/tmp/Turbine/build.gradle' line: 8

* What went wrong:
A problem occurred evaluating root project 'turbine'.
> Could not find method jcenter() for arguments [] on repository container.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 43.994 secs

Hystrix pushes metrics to Turbine

Reported in : Netflix/Hystrix#330

Text from that issue:

@carlanton: Hi!

We're trying to use Hystrix and Turbine on Heroku. On Heroku, you can't connect to a specific "Dyno" (application instance) and therefore it's tricky to pull the metrics from all Hystrix endpoints into Turbine.
Is it possible to configure Hystrix to push the metrics to Turbine instead? We want to use the dashboard, so I guess we at least need to send SSE from Turbine.

Any ideas of how to solve this?

Thanks,
Anton

@benjchristensen: I'm open to adding support for this in Turbine 2 (Netty based) which is almost done. I don't really want to attempt to make this happen with Turbine 1 (Servlet based).

describe the agregation algorithm

The aggregation algorithm doesn't seem to be documented, except for here:

https://github.com/Netflix/Turbine/wiki/Design-and-Architecture

Under Aggregation dimensions, is the following:

The only binding Turbine has with the data is the aggregation dimension
specified using name and type. Json payloads received from individual
instances matching the same aggregation key are combined together.
e.g

{type:'weather-data-temp', name:'New York', temp:74}
{type:'weather-data-temp', name:'Los Angeles', temp:85}
{type:'weather-data-temp', name:'New York', temp:76}

are combined to give:

{type:'weather-data-temp', name:'Los Angeles', temp:85}
{type:'weather-data-temp', name:'New York', temp:75}

However, running a few experiments, what I actually see is the turbine aggregator summing name/type/time-grouped metrics records. Not averaging. For the number properties. Unclear how it handles strings and booleans, as well as nested object values (I think those numbers were also summed).

It appears Hystrix dashboard then does some averaging based on some of the summed numbers and number of servers reporting. So the view from Hystrix dashboard would align with the example from the wiki, but the actual data flowing between Turbine and the dashboard does not.

It would be awesome if the aggregation algorithm could be described in the wiki.

Turbine is unable to aggregate the response from clusters and write it back to response stream.

Hello,

I am planning to leverage hystrix dashboard and turbine which is very useful for us.

I am trying to configure turbine to aggregate metrics from clustered hystrix service apps. For some reason, it's not working. I am not sure whether my config is wrong or is it a bug. As cluster config is failing, i tried to configure single node config. Even that is also failing. I hope i have provided required configuration for you review, hope you can guide me on how to address this. Logs are captured from catalina.out.

CONFIGURATION


Platform: RHEL 6.3
Tomcat version: 6.0.28
Turbine version: turbine-web-1.0.0.war (downloaded from hystrix wiki)

Cluster config:

config.properties

turbine.aggregator.clusterConfig=dev-lsds
turbine.FileBasedInstanceDiscovery.filePath=/opt/usr/apps/tomcat-6.0.28/webapps/turbine/WEB-INF/classes/hosts.csv
turbine.instanceUrlSuffix=:1776/hystrix.stream
InstanceDiscovery.impl=com.netflix.turbine.discovery.FileBasedInstanceDiscovery

hosts.csv:

dev-lsds-1.tnt13-zone1.aus1,dev-lsds,up

Single node config:

config.properties

turbine.ConfigPropertyBasedDiscovery.default.instances=dev-lsds-1.tnt13-zone1.aus1
turbine.instanceUrlSuffix=:1776/hystrix.stream

OBSERVATIONS


Hystrix node (SUCCESS):

URL: http://dev-lsds-1.tnt13-zone1.aus1:1776/hystrix.stream
Response: It is returning successful json response

Turbine node (FAILS)

******************** SINGLE NODE CONFIG *********************

URL: http://localhost:8080/turbine/turbine.stream

Response :

curl -v http://localhost:8080/turbine/turbine.stream

  • About to connect() to localhost port 8080 (#0)
  • Trying ::1... connected
  • Connected to localhost (::1) port 8080 (#0)

    GET /turbine/turbine.stream HTTP/1.1
    User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
    Host: localhost:8080
    Accept: /

    < HTTP/1.1 200 OK
    < Server: Apache-Coyote/1.*< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
    < Pragma: no-cache
    < Content-Type: text/event-stream;charset=UTF-8
    < Transfer-Encoding: chunked
    < Date: Thu, 12 Dec 2013 19:27:56 GMT
    <
    : ping
    : ping
    : ping
    : ping
    : ping
    : ping
    ..
    ..
    ...
    .............

Here is the log output for this request.
Log: http://pastebin.com/ywUjHCz9


******************** CLUSTER NODE CONFIG *********************

URL: http://localhost:8080/turbine/turbine.stream?cluster=dev-lsds
RESPONSE: curl -v http://localhost:8080/turbine/turbine.stream?cluster=dev-lsds

  • About to connect() to localhost port 8080 (#0)
  • Trying ::1... connected
  • Connected to localhost (::1) port 8080 (#0)

    GET /turbine/turbine.stream?cluster=dev-lsds HTTP/1.1
    User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
    Host: localhost:8080
    Accept: /

    < HTTP/1.1 200 OK
    < Server: Apache-Coyote/1.1
    < Cache-Control: no-cache, no-store, max-age=0, must-revalidate
    < Pragma: no-cache
    < Content-Type: text/event-stream;charset=UTF-8
    < Transfer-Encoding: chunked
    < Date: Thu, 12 Dec 2013 19:36:04 GMT
    <
    : ping
    : ping
    : ping
    : ping
    : ping

LOG1: (Same log out put as single node confg )
http://pastebin.com/ywUjHCz9

LOG2: (After couple of attempts, reached 503 max connection requests)
http://pastebin.com/PmUWH52v

Please let me know if you need more information.

Turbine build is failing due to a unit test failure

com.netflix.hystrix.HystrixAsyncCommandTest > testRejectedViaThreadIsolation FAILED
java.lang.AssertionError at HystrixAsyncCommandTest.java:4570

505 tests completed, 1 failed, 1 skipped
:hystrix-core:test FAILED

FAILURE: Build failed with an exception.

Make a new release of 2.x branch

I'd like to contribute Kubernetes service discovery but the latest Maven central release of Turbine 2.x (2.0.0-DP.2) doesn't include the basic auth fix that I provided so I have to create this for my fork of Turbine. So please provide a new release if possible.

Building Turbine1.x branch using Java 8 results in Java doc lint errors

:turbine-core:compileJava
warning: [options] bootstrap class path not set in conjunction with -source 1.6
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning
:turbine-core:processResources UP-TO-DATE
:turbine-core:classes
:turbine-core:jar
:turbine-contrib:compileJava
warning: [options] bootstrap class path not set in conjunction with -source 1.6
1 warning
:turbine-contrib:processResources UP-TO-DATE
:turbine-contrib:classes
:turbine-contrib:jar
:turbine-core:javadoc

javadoc: warning - Multiple sources of package comments found for package "org.hamcrest"
/Users/developer/.gradle/caches/artifacts-14/filestore/org.mockito/mockito-all/1.8.5/jar/a927d8ae3b8d22eb745a74f94e59ce3882f2b524/mockito-all-1.8.5.jar(org/objenesis/instantiator/jrockit/JRockit131Instantiator.java):10: error: unmappable character for encoding UTF8
 * Originally developed by Leonardo Mesquita. Copyright notice added by Henrik St๏ฟฝhl, BEA JRockit Product Manager.
                                                                                 ^
/Users/developer/.gradle/caches/artifacts-14/filestore/org.mockito/mockito-all/1.8.5/jar/a927d8ae3b8d22eb745a74f94e59ce3882f2b524/mockito-all-1.8.5.jar(org/objenesis/instantiator/jrockit/JRockitLegacyInstantiator.java):10: error: unmappable character for encoding UTF8
 * Originally developed by Leonardo Mesquita. Copyright notice added by Henrik St๏ฟฝhl, BEA JRockit Product Manager.
                                                                                 ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/AggDataFromCluster.java:177: warning: no description for @param
     * @param data
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/AggDataFromCluster.java:313: warning: no description for @param
     * @param host
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.java:102: error: malformed HTML
     * @return TurbineDataMonitor<?> 
                                 ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.java:102: error: bad use of '>'
     * @return TurbineDataMonitor<?> 
                                   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.java:109: error: malformed HTML
     * @return HashMap<String, Long>
                      ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.java:109: error: bad use of '>'
     * @return HashMap<String, Long>
                                   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.java:114: error: malformed HTML
     * @return HashMap<String, String>
                      ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.java:114: error: bad use of '>'
     * @return HashMap<String, String>
                                     ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.java:120: warning: no description for @return
     * @return
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/AggDataFromCluster.java:85: warning: no description for @param
     * @param monitor
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/AggDataFromCluster.java:86: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/AggDataFromCluster.java:87: warning: no description for @param
     * @param name
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/EventQueue.java:34: warning: no description for @param
     * @param event
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/ArrayBackedEventQueue.java:40: warning: no description for @param
 * @param <T>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/ConcurrentEventQueue.java:41: warning: no description for @param
 * @param <T>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/DataFromSingleInstance.java:45: warning: no description for @param
     * @param type 
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/DataFromSingleInstance.java:46: warning: no description for @param
     * @param name
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/DataFromSingleInstance.java:47: warning: no description for @param
     * @param host
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/DataFromSingleInstance.java:48: warning: no description for @param
     * @param attributes
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/DataFromSingleInstance.java:49: warning: no description for @param
     * @param dateTime
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/EventQueue.java:24: warning: no description for @param
 * @param <E>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:118: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:119: warning: no description for @param
     * @param value
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:132: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:133: warning: no description for @param
     * @param expected
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:134: warning: no description for @param
     * @param value
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:151: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:161: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:179: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:195: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:235: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRollingNumber.java:251: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.java:52: warning: no description for @param
     * @param monitor
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.java:53: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.java:54: warning: no description for @param
     * @param name
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceDiscovery.java:42: error: unknown tag: Instance
     * @return Collection<Instance>
                         ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceDiscovery.java:43: warning: no description for @throws
     * @throws Exception
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/FileBasedInstanceDiscovery.java:34: error: self-closing element not allowed
 * <br/>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instance.java:118: error: malformed HTML
     * @return Map<String, String>
                  ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instance.java:118: error: bad use of '>'
     * @return Map<String, String>
                                 ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instance.java:54: warning: no description for @param
     * @param host
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instance.java:55: warning: no description for @param
     * @param clusterName
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instance.java:56: warning: no description for @param
     * @param status
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:136: error: malformed HTML
     * @return HashSet<{@link Instance}>
                      ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:136: error: bad use of '>'
     * @return HashSet<{@link Instance}>
                                       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:153: error: malformed HTML
     * @return HashSet<{@link Instance}>
                      ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:153: error: bad use of '>'
     * @return HashSet<{@link Instance}>
                                       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:160: error: unknown tag: String
     * @return Set<String>
                  ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:168: warning: no description for @param
     * @param iDiscovery
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:217: warning: no description for @param
     * @param cluster
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:83: error: malformed HTML
         * @param hosts Collection<{@link Instance}> hosts
                                  ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:83: error: bad use of '>'
         * @param hosts Collection<{@link Instance}> hosts
                                                   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:89: error: malformed HTML
         * @param hosts Collection<{@link Instance}> hosts
                                  ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/InstanceObservable.java:89: error: bad use of '>'
         * @param hosts Collection<{@link Instance}> hosts
                                                   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/HandlerQueueTuple.java:105: warning: no description for @throws
     * @throws Exception
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/HandlerQueueTuple.java:161: error: unknown tag: K
     * @return {@link TurbineDataHandler}<K>
                                         ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/HandlerQueueTuple.java:168: error: unknown tag: K
     * @return {@link EventQueue}<K> 
                                 ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/HandlerQueueTuple.java:176: warning: no description for @param
     * @param statsData
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/HandlerQueueTuple.java:188: warning: no description for @param
     * @param data
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/HandlerQueueTuple.java:70: warning: no description for @param
 * @param <K>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/HandlerQueueTuple.java:89: warning: no description for @param
     * @param eventHandler
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:107: warning: no description for @param
     * @param host
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:124: warning: no description for @param
     * @param host
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:125: warning: no description for @param
     * @param handler
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:189: warning: no description for @param
     * @param handlerName
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:216: warning: no description for @param
     * @param handler
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:224: warning: no description for @param
     * @param host
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:225: warning: no description for @param
     * @param handlerName
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:226: error: unknown tag: K
     * @return StatsEventHandler<K>
                                ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:246: warning: no description for @param
     * @param host
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:247: warning: no description for @param
     * @param statsData
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:249: error: exception not thrown: java.lang.InterruptedException
     * @throws InterruptedException
               ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:249: warning: no description for @throws
     * @throws InterruptedException
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:313: warning: no description for @param
     * @param handlers
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:314: warning: no description for @param
     * @param statsData
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:404: error: unknown tag: String
     * @return Set<String>
                  ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:67: warning: no description for @param
 * @param <K>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataDispatcher.java:92: warning: no @param for name
    public TurbineDataDispatcher(String name) {
           ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataHandler.java:38: warning: no description for @param
     * @param stats
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/handler/TurbineDataHandler.java:45: warning: no description for @param
     * @param host
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/AggregateClusterMonitor.java:177: warning: no description for @param
     * @param type
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/AggregateClusterMonitor.java:178: warning: no description for @param
     * @param name
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitor.java:144: warning: no description for @throws
     * @throws Exception
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitor.java:189: error: malformed HTML
     * @return {@link MonitorConsole}<{@link DataFromSingleInstance}>
                                     ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitor.java:189: error: bad use of '>'
     * @return {@link MonitorConsole}<{@link DataFromSingleInstance}>
                                                                    ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitor.java:205: error: unknown tag: K
     * @return {@link TurbineDataDispatcher}<K>
                                            ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitor.java:215: error: malformed HTML
     * @return {@link TurbineDataHandler}<{@link DataFromSingleInstance}>
                                         ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitor.java:215: error: bad use of '>'
     * @return {@link TurbineDataHandler}<{@link DataFromSingleInstance}>
                                                                        ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitor.java:226: warning: no description for @param
     * @param eventHandler
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitor.java:245: warning: no description for @return
     * @return
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/TurbineDataMonitor.java:48: warning: no description for @throws
     * @throws Exception
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/TurbineDataMonitor.java:58: error: unknown tag: K
     * @return {@link TurbineDataDispatcher}<K>
                                            ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitor.java:68: warning: no description for @param
 * @param <K>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitor.java:94: warning: no description for @param
     * @param name
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitorFactory.java:29: warning: no description for @param
     * @param name
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitorFactory.java:30: error: unknown tag: T
     * @return {@link ClusterMonitor}<T>
                                     ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ClusterMonitorFactory.java:24: warning: no description for @param
 * @param <T>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/cluster/ObservationCriteria.java:37: warning: no description for @param
     * @param host
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/EventThrottle.java:55: warning: no description for @param
     * @param events
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/EventThrottle.java:34: warning: no description for @param
 * @param <K>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:59: warning: no description for @param
     * @param key
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:60: warning: no description for @param
     * @param value
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:92: warning: no description for @param
     * @param key
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:93: warning: no description for @param
     * @param value
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:110: error: unknown tag: K
     * @return Set<K>
                  ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:118: warning: no description for @param
     * @param key
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:119: error: unknown tag: V
     * @return List<V>
                   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:132: warning: no description for @param
     * @param key
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:133: warning: no description for @param
     * @param value
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:41: warning: no description for @param
 * @param <K>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/ThreadSafeMultiMap.java:42: warning: no description for @param
 * @param <V>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:121: warning: no description for @throws
     * @throws Exception
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:85: warning: no description for @param
     * @param worker
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:92: warning: no description for @param
     * @param worker
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:93: warning: no description for @param
     * @param sleep
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:100: warning: no description for @param
     * @param worker
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:101: warning: no description for @param
     * @param sleepMillis
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:108: warning: no description for @param
     * @param worker
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:109: warning: no description for @param
     * @param sleepMillis
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:110: warning: no description for @param
     * @param sleep
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:67: warning: no description for @throws
         * @throws Exception
           ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:73: warning: no description for @throws
         * @throws Exception
           ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/utils/WorkerThread.java:79: warning: no description for @throws
         * @throws Exception
           ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/instance/InstanceMonitor.java:213: error: malformed HTML
     * @return {@link TurbineDataDispatcher}<{@link DataFromSingleInstance}>
                                            ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/instance/InstanceMonitor.java:213: error: bad use of '>'
     * @return {@link TurbineDataDispatcher}<{@link DataFromSingleInstance}>
                                                                           ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/instance/InstanceUrlClosure.java:36: warning: no description for @param
     * @param host
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/meta/MetaInfoAdaptor.java:15: warning: no description for @param
     * @param metaInfo
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/meta/AggDataMetaInfoAdaptor.java:12: error: malformed HTML
 * Class to represent biz logic for translating {@link MetaInformation} <{@link AggDataFromCluster}> to {@link AggDataFromCluster}
                                                                        ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/meta/AggDataMetaInfoAdaptor.java:12: error: bad use of '>'
 * Class to represent biz logic for translating {@link MetaInformation} <{@link AggDataFromCluster}> to {@link AggDataFromCluster}
                                                                                                   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/meta/AggDataMetaInfoAdaptor.java:26: warning: no @param for cMonitor
    public AggDataMetaInfoAdaptor(ClusterMonitor<AggDataFromCluster> cMonitor) {
           ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/meta/MetaInfoAdaptor.java:6: error: unknown tag: K
 * Interface to represent the logic to translate {@link MetaInformation} <K> to data K which can be then sent to listeners downstream.
                                                                         ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/meta/MetaInfoAdaptor.java:9: warning: no description for @param
 * @param <K>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/meta/MetaInformation.java:56: warning: no description for @return
     * @return
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/meta/MetaInformation.java:15: error: reference not found
 * This helps keep the meta info reliability independent of the actual data streaming from upstream {@link InstanceMonitor}(s)
                                                                                                           ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/meta/MetaInformation.java:25: warning: no description for @param
 * @param <K>
   ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/meta/MetaInformation.java:46: warning: no description for @param
     * @param monitor
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/plugins/DefaultAggregatorFactory.java:58: error: malformed HTML
     * @return {@link ClusterMonitor}<{@link AggDataFromCluster}>
                                     ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/plugins/DefaultAggregatorFactory.java:58: error: bad use of '>'
     * @return {@link ClusterMonitor}<{@link AggDataFromCluster}>
                                                                ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/streaming/servlet/TurbineStreamServlet.java:59: error: unexpected text
     * @throws ServletException, IOException
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/streaming/servlet/TurbineStreamServlet.java:68: error: unexpected text
     * @throws ServletException, IOException
       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/MonitorConsole.java:66: error: malformed HTML
     * @return Collection<{@link TurbineDataMonitor}<K>>
                         ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/MonitorConsole.java:66: error: unknown tag: K
     * @return Collection<{@link TurbineDataMonitor}<K>>
                                                    ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/MonitorConsole.java:66: error: bad use of '>'
     * @return Collection<{@link TurbineDataMonitor}<K>>
                                                       ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/MonitorConsole.java:83: error: unknown tag: K
     * @return {@link TurbineDataMonitor}<K>
                                         ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/monitor/MonitorConsole.java:100: error: unknown tag: K
     * @return StatsMonitor<K>
                           ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/streaming/TurbineStreamingConnection.java:68: error: unexpected end tag: </b>
 * <li>Sorting data according to the specified {@link RelevanceConfig}</b>
                                                                      ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/streaming/TurbineStreamingConnection.java:105: error: bad use of '>'
     * The different states are DoNotSort --> StartSorting --> Sorted and occur in the order specified. The state transitions occur exactly in this direction and there 
                                            ^
/Users/developer/work/temp/Turbine/turbine-core/src/main/java/com/netflix/turbine/streaming/TurbineStreamingConnection.java:105: error: bad use of '>'
     * The different states are DoNotSort --> StartSorting --> Sorted and occur in the order specified. The state transitions occur exactly in this direction and there 
                                                             ^
51 errors
100 warnings

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':turbine-core:javadoc'.
> Javadoc generation failed.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Turbine prevents tomcat shutdown

I have Turbine deployed to a tomcat server, and when I run the shutdown.sh script, tomcat does not shutdown. The only app running in the server is Turbine. I am using the 1.0.0 version.

Stream discovery in GCP/Kubernetes?

I'd like to use Turbine to monitor a cluster instrumented with Hystrix. Our cluster is using Kubernetes in Google Cloud Platform and it would be nice if stream discovery was easier, without requiring AWS Elastic IP addresses.

For example instead of Turbine/Eureka sniffing out servers as they come and go, I'd love it if our app could register with Turbine when it starts up. And once the app disappears you'd think Turbine would be able to notice that the stream dried up.

In our GCP setup it would be much easier to configure a single Turbine registration endpoint which is shared among the applications, compared to mucking around with things like IP addresses.

Configuration problem with turbine

Hi,
I try to launch Turbine on my local environment, but did not succeeded. I use Spring Boot for my services and my Turbine.

My service which has the @EnableHystrix annotation gives a stream at his hystrix.stream endpoint.

However my Turbine stream is empty. It discovers my service but I didnt know whats going wrong there. Can someone give a simple introduction, I didn't find a good documentation. I only followed these steps here:

http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html

Regards,
ร–mer

SSE not streaming to hystrix dashboard when turbine running in a docker container

I am running a turbine server app. When I run this app from my IDE i see the SSE streaming in my browser on localhost:8989.

When i deploy this application using docker the browser hangs forever. I do see the following in the console output:

[rx-netty-nio-eventloop-3-1] INFO com.netflix.turbine.Turbine - Turbine => SSE Request Received
[rx-netty-nio-eventloop-3-1] INFO com.netflix.turbine.Turbine - Turbine => Starting aggregation
[rx-netty-nio-eventloop-3-1] INFO com.netflix.turbine.Turbine - Turbine => Aggregate Stream from URI: http://192.168.99.1:8080/hystrix.stream
[rx-netty-nio-eventloop-3-1] INFO com.netflix.turbine.Turbine - Turbine => SSE Request Received

And when i eventually close my browser tab:

[rx-netty-nio-eventloop-3-1] INFO com.netflix.turbine.Turbine - Turbine => Unsubscribing RxNetty server connection

What makes this even more confusing is that if i open fiddler and try to connect again (to dockerised turbine) it works!

This issue happens when using docker toolbox for windows and AWS ECS to deploy the container. All browsers.

When using Docker for Mac Chrome works safari doesnt.

I have raised this previously with the spring cloud project but it seems this isnt related to spring as i can replicate without spring (spring-cloud/spring-cloud-netflix#1648)

Java error while running ./gradlew build

Currently I am working on cf-abacus, push all abacus apps on cloud foundry version 238.
Using Ubuntu.
To use Turbine followed steps mentioned in https://github.com/cloudfoundry-incubator/cf-abacus/blob/master/doc/monitor.md
I updated ./turbine-web/src/main/webapp/WEB-INF/classes/config.properties file.
run ./gradlew build from Turbine directory, Current jdk version is 8.
I am facing below errors,
:turbine-core:compileJava UP-TO-DATE
:turbine-core:processResources UP-TO-DATE
:turbine-core:classes UP-TO-DATE
:turbine-core:jar UP-TO-DATE
:turbine-contrib:compileJava UP-TO-DATE
:turbine-contrib:processResources UP-TO-DATE
:turbine-contrib:classes UP-TO-DATE
:turbine-contrib:jar UP-TO-DATE
:turbine-core:javadoc

javadoc: warning - Multiple sources of package comments found for package "org.hamcrest"
/home/canopy/.gradle/caches/artifacts-14/filestore/org.mockito/mockito-all/1.8.5/jar/a927d8ae3b8d22eb745a74f94e59ce3882f2b
524/mockito-all-1.8.5.jar(org/objenesis/instantiator/jrockit/JRockit131Instantiator.java):10: error: unmappable character
for encoding UTF8

  • Originally developed by Leonardo Mesquita. Copyright notice added by Henrik St๏ฟฝhl, BEA JRockit Product Manager.
    ^
    /home/canopy/.gradle/caches/artifacts-14/filestore/org.mockito/mockito-all/1.8.5/jar/a927d8ae3b8d22eb745a74f94e59ce3882f2b
    524/mockito-all-1.8.5.jar(org/objenesis/instantiator/jrockit/JRockitLegacyInstantiator.java):10: error: unmappable charact
    er for encoding UTF8
  • Originally developed by Leonardo Mesquita. Copyright notice added by Henrik St๏ฟฝhl, BEA JRockit Product Manager.
    ^
    /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/AggDataFromC
    luster.java:177: warning: no description for @param
    • @param data
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/Ag[579/1850]
      luster.java:313: warning: no description for @param
    • @param host
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.
      java:102: error: malformed HTML
    • @return TurbineDataMonitor<?>
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.
      java:102: error: bad use of '>'
    • @return TurbineDataMonitor<?>
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.
      java:109: error: malformed HTML
    • @return HashMap<String, Long>
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.
      java:109: error: bad use of '>'
    • @return HashMap<String, Long>
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.
      java:114: error: malformed HTML
    • @return HashMap<String, String>
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.
      java:114: error: bad use of '>'
    • @return HashMap<String, String>
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.
      java:120: warning: no description for @return
    • @return
      ^
    • @return [549/1850]
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/AggDataFromC
      luster.java:85: warning: no description for @param
    • @param monitor
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/AggDataFromC
      luster.java:86: warning: no description for @param
    • @param type
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/AggDataFromC
      luster.java:87: warning: no description for @param
    • @param name
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/EventQueue.j
      ava:34: warning: no description for @param
    • @param event
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/ArrayBackedE
      ventQueue.java:40: warning: no description for @param
  • @param
    ^
    /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/ConcurrentEv
    entQueue.java:41: warning: no description for @param
  • @param
    ^
    /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/DataFromSing
    leInstance.java:45: warning: no description for @param
    • @param type
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/DataFromSing
      leInstance.java:46: warning: no description for @param
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/DataFromSing
      leInstance.java:47: warning: no description for @param
    • @param host
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/DataFromSing
      leInstance.java:48: warning: no description for @param
    • @param attributes
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/DataFromSing
      leInstance.java:49: warning: no description for @param
    • @param dateTime
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/EventQueue.j
      ava:24: warning: no description for @param
  • @param
    ^
    /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
    Number.java:118: warning: no description for @param
    • @param type
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
      Number.java:119: warning: no description for @param
    • @param value
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
      Number.java:132: warning: no description for @param
    • @param type
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
      Number.java:133: warning: no description for @param
    • @param expected
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
      Number.java:134: warning: no description for @param
    • @param value
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
      Number.java:151: warning: no description for @param
    • @param type
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
      Number.java:161: warning: no description for @param
    • @param type
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
      Number.java:179: warning: no description for @param
    • @param type
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
      Number.java:195: warning: no description for @param
    • @param type
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
      Number.java:235: warning: no description for @param
    • @param type
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/StatsRolling
      Number.java:251: warning: no description for @param
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.
      java:52: warning: no description for @param
    • @param monitor
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.
      java:53: warning: no description for @param
    • @param type
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/data/TurbineData.
      java:54: warning: no description for @param
    • @param name
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instanc
      eDiscovery.java:42: error: unknown tag: Instance
    • @return Collection
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instanc
      eDiscovery.java:43: warning: no description for @throws
    • @throws Exception
      ^
      /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/FileBas
      edInstanceDiscovery.java:34: error: self-closing element not allowed

  • ^ /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instanc e.java:118: error: malformed HTML - @return Map ^ /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instanc e.java:54: warning: no description for @param - @param host ^ /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instanc e.java:55: warning: no description for @param - @param clusterName ^ /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instanc e.java:56: warning: no description for @param - @param status ^ /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instanc eObservable.java:136: error: malformed HTML - @return HashSet<{@link Instance}> ^ /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instanc eObservable.java:136: error: bad use of '>' - @return HashSet<{@link Instance}> ^ /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instanc eObservable.java:153: error: malformed HTML - @return HashSet<{@link Instance}> ^ /home/canopy/prati/cf-abacus-investigation/latest/Turbine/turbine-core/src/main/java/com/netflix/turbine/discovery/Instanc eObservable.java:153: error: bad use of '>'

Support aggregating events with decimal precision

I want to use turbines aggregation with floating points(double or BigDecimal) rather than whole numbers. I couldn't find anything in the documentation that explicitly stated that only whole numbers are supported.

I have a fork of the 1.x branch that I have working with floating points. I know 1.x is EOL, but is this something that can be considered for 2.x?

Failed to use placeholders in InstanceUrlSuffix when using EurekaInstanceDiscovery

Hello,

Im using my version of EurekaInstanceDiscovery and im trying to enable the feature with the placeholders in InstanceUrlSuffix unsuccessfully.

I override marshallInstanceInfo() method to add an attribute that defines the Eureka port of an instance:

int port = iInfo.getPort();
instance.getAttributes().put("port", String.valueOf(port));

and in my config file i use:

aggregator
clusterConfig BUSINESS clusterConfig
aggregator
instanceUrlSuffix BUSINESS :{port}/hystrix.stream BUSINESS instanceUrlSuffix

but the replacement never takes place:

10:10:24.653 INFO Timer-0 - Hosts up:2, hosts down: 0
10:10:24.679 INFO Timer-0 - Url for host: http://172.27.65.71:{port}/hystrix.stream BUSINESS
10:10:24.692 INFO Timer-0 -

Just added and starting handler tuple: BUSINESS_agg_aggClusterEventHandler
10:10:24.694 INFO Timer-0 - Per handler dispacher started for: BUSINESS_agg_aggClusterEventHandler
10:10:24.696 INFO Timer-0 - Url for host: http://172.27.85.87:{port}/hystrix.stream BUSINESS
10:10:24.709 WARN InstanceMonitor - Stopping InstanceMonitor for: 172.27.65.71 BUSINESS
! java.lang.IllegalArgumentException: Illegal character in authority at index 7: http://172.27.65.71:{port}/hystrix.stream

Internal server error when using InstanceDiscovery

Hi, I have a custom InstanceDiscovery class, which has been deployed on the hystrix-dashboard/turbine server. From the output of catalina.out (we're running on Tomcat), the InstanceDiscovery appears to be getting called successfully, but the hystrix-dashboard is reporting an internal server error:

[11:06:59.395] GET http://10.81.224.161:8080/hystrix-dashboard/proxy.stream?origin=http%3A%2F%2F10.81.224.161%3A8080%2Fturbine-web%2Fturbine.stream%3Fcluster%3Dalpha [HTTP/1.1 500 Internal Server Error 38ms]

I can't see any additional information in the server logs, though perhaps i'm not looking in the right place. I see output in logs/localhost.2013-03-20.log and log/catalina.out, but no errors.

I'm using the latest 0.5 snapshot code.

thanks, Mitchell

Logger NullPointerException

Hi,

I try to use the 0.4 war of Turbine but it spits out NullPointerExceptions when it tries to log stuff:

[#|2014-01-31T15:16:05.885+0100|SEVERE|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=57;_ThreadName=Thread-2;|java.lang.NullPointerException
at org.slf4j.impl.Log4jLoggerAdapter.info(Log4jLoggerAdapter.java:382)
at com.netflix.turbine.discovery.InstanceObservable$1.run(InstanceObservable.java:317)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)

I noticed a few abnomalies in the project dependencies which might cause this:

turbine-core depends on slf4j-api version 1.7.0
turbine-web depends on slf4j-log4j12 version 1.6.1 but it also ships slf4j-api version 1.6.4. Is there a reason for this?

Regards,
Herman

Add stopServer method to Turbine class

It would be nice to have a complimentary method to startServerSentEventServer so that proper daemons can be built utilizing the Turbine class methods.

Release 0.5

Hi guys, any chance of a 0.5 release being cut? It's been a while (~15 months) since 0.4 was released and there's been quite a few changes in that time (including the introduction of turbine-contrib).

Turbine does not forward auth headers to Hystrix instances

The Hystrix dashboard offers an option to supply an auth token. One can then build a filter on the servlet running the hystrix-event-stream or Turbine, controlling access.

This works fine for either of these options, but if authorization is implemented on both, Turbine stops working - it doesn't, as far as I can tell, forward the access token given to it when it makes the requests to the Hystrix instances that it has discovered by whichever means.

I'm using Turbine 1.0.0.

Adding support for pushing metrics into Turbine

Use-case: We are running services with Hystrix on Heroku and want to aggregate the metrics using Turbine. When you scale an application on Heroku, you run it on multiple dynos (~VMs). Unfortunately, you can not access a specific dyno and therefore it gets tricky when you want to pull metrics from all instances.

This problem could be solved by adding support for pushing metrics into Turbine. Maybe with some simple HTTP POST endpoint, or perhaps websockets?

Hystrix ticket for reference: Netflix/Hystrix#330

Make all required information available trough discovery

Looking at https://github.com/Netflix/Turbine/wiki/Configuration-(1.x) - is it possible to provide:

-the actual clusters from instances (e.g. by returning someHost, someCluster for the instance) - will someCluster automatically pop up in turbine - or am I still required to define the cluster in the config files?

Also - the instanceUrlSuffix - can it be provided by discovery or does it have to come from the config files?

I would like to provide everything through discovery if possible - so that my turbine configuration would remain constant - and dashboards should appear/disappear dynamically

Turbine Stream Empty Ping

We are using hystrix-dashboard-1.4.9.war and turbine-web-1.0.0.war in Jboss, after doing a curl request, What I have noticed is that, on the aggregated turbine stream, the turbine stream only publishes metrics for methods that have activity.

Is this something that can be configured differently or is this a bug with turbine?

In the example below, you see data for the operation called Updateidentity that is published at the time when the method was hit, but afterwards you just see reporting empty pings.

Here is an example from the raw turbine stream:

$ curl http://example.com/turbine/turbine.stream

: ping
data: {"rollingCountFailure":0,"propertyValue_executionIsolationThreadInterruptOnTimeout":true,"rollingCountTimeout":0,"threadPool":"SecurityServiceGroup","rollingCountExceptionsThrown":0,"rollingCountFallbackSuccess":0,"errorCount":0,"type":"HystrixCommand","propertyValue_circuitBreakerEnabled":true,"reportingHosts":1,"propertyValue_executionTimeoutInMilliseconds":1000,"latencyTotal":{"0":0,"95":0,"99.5":0,"90":0,"25":0,"99":0,"75":0,"100":0,"50":0},"currentConcurrentExecutionCount":0,"rollingCountFallbackRejection":0,"rollingCountSemaphoreRejected":0,"rollingCountResponsesFromCache":0,"rollingCountShortCircuited":0,"propertyValue_circuitBreakerForceClosed":false,"name":"UpdateIdentityCommand","propertyValue_executionIsolationThreadPoolKeyOverride":"null","rollingCountSuccess":0,"propertyValue_requestLogEnabled":true,"requestCount":0,"rollingCountBadRequests":0,"errorPercentage":0,"rollingCountCollapsedRequests":0,"rollingMaxConcurrentExecutionCount":0,"propertyValue_circuitBreakerSleepWindowInMilliseconds":500,"latencyTotal_mean":0,"propertyValue_circuitBreakerForceOpen":false,"propertyValue_circuitBreakerRequestVolumeThreshold":20,"rollingCountEmit":0,"propertyValue_circuitBreakerErrorThresholdPercentage":50,"propertyValue_executionIsolationStrategy":"THREAD","rollingCountFallbackFailure":0,"isCircuitBreakerOpen":false,"propertyValue_executionIsolationSemaphoreMaxConcurrentRequests":10,"propertyValue_executionIsolationThreadTimeoutInMilliseconds":1000,"propertyValue_metricsRollingStatisticalWindowInMilliseconds":10000,"propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests":10,"latencyExecute":{"0":0,"95":0,"99.5":0,"90":0,"25":0,"99":0,"75":0,"100":0,"50":0},"group":"SecurityServiceGroup","latencyExecute_mean":0,"propertyValue_requestCacheEnabled":true,"rollingCountThreadPoolRejected":0}

data: {"rollingCountFailure":0,"propertyValue_executionIsolationThreadInterruptOnTimeout":true,"rollingCountTimeout":0,"threadPool":"SecurityServiceGroup","rollingCountExceptionsThrown":0,"rollingCountFallbackSuccess":0,"errorCount":0,"type":"HystrixCommand","propertyValue_circuitBreakerEnabled":true,"reportingHosts":1,"propertyValue_executionTimeoutInMilliseconds":1000,"latencyTotal":{"0":0,"95":0,"99.5":0,"90":0,"25":0,"99":0,"75":0,"100":0,"50":0},"currentConcurrentExecutionCount":0,"rollingCountFallbackRejection":0,"rollingCountSemaphoreRejected":0,"rollingCountResponsesFromCache":0,"rollingCountShortCircuited":0,"propertyValue_circuitBreakerForceClosed":false,"name":"CreateIdentityCommand","propertyValue_executionIsolationThreadPoolKeyOverride":"null","rollingCountSuccess":0,"propertyValue_requestLogEnabled":true,"requestCount":0,"rollingCountBadRequests":0,"errorPercentage":0,"rollingCountCollapsedRequests":0,"rollingMaxConcurrentExecutionCount":0,"propertyValue_circuitBreakerSleepWindowInMilliseconds":500,"latencyTotal_mean":0,"propertyValue_circuitBreakerForceOpen":false,"propertyValue_circuitBreakerRequestVolumeThreshold":20,"rollingCountEmit":0,"propertyValue_circuitBreakerErrorThresholdPercentage":50,"propertyValue_executionIsolationStrategy":"THREAD","rollingCountFallbackFailure":0,"isCircuitBreakerOpen":false,"propertyValue_executionIsolationSemaphoreMaxConcurrentRequests":10,"propertyValue_executionIsolationThreadTimeoutInMilliseconds":1000,"propertyValue_metricsRollingStatisticalWindowInMilliseconds":10000,"propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests":10,"latencyExecute":{"0":0,"95":0,"99.5":0,"90":0,"25":0,"99":0,"75":0,"100":0,"50":0},"group":"SecurityServiceGroup","latencyExecute_mean":0,"propertyValue_requestCacheEnabled":true,"rollingCountThreadPoolRejected":0}

data: {"rollingCountCommandRejections":0,"rollingMaxActiveThreads":0,"currentPoolSize":4,"currentActiveCount":0,"currentCompletedTaskCount":16,"propertyValue_queueSizeRejectionThreshold":50,"type":"HystrixThreadPool","reportingHosts":1,"propertyValue_metricsRollingStatisticalWindowInMilliseconds":10000,"name":"SecurityServiceGroup","currentLargestPoolSize":16,"currentCorePoolSize":30,"currentQueueSize":0,"rollingCountThreadsExecuted":0,"currentTaskCount":16,"currentMaximumPoolSize":30}

: ping
: ping
: ping
: ping
: ping
: ping
: ping

based on this issue #94 i tried turbine-web-0.5.war but instead of empty ping messages i see continuous time stamps.

Here is the curl output:
$ curl http://example.com/turbine/turbine.stream
: ping
data: {"rollingCountCommandRejections":0,"rollingMaxActiveThreads":0,"currentPoolSize":4,"currentActiveCount":0,"currentCompletedTaskCount":16,"propertyValue_queueSizeRejectionThreshold":50,"type":"HystrixThreadPool","reportingHosts":1,"propertyValue_metricsRollingStatisticalWindowInMilliseconds":10000,"name":"SecurityServiceGroup","currentLargestPoolSize":16,"currentCorePoolSize":30,"currentQueueSize":0,"rollingCountThreadsExecuted":0,"currentTaskCount":16,"currentMaximumPoolSize":30}

data: {"rollingCountFailure":0,"propertyValue_executionIsolationThreadInterruptOnTimeout":true,"rollingCountTimeout":0,"threadPool":"SecurityServiceGroup","rollingCountExceptionsThrown":0,"rollingCountFallbackSuccess":0,"errorCount":0,"type":"HystrixCommand","propertyValue_circuitBreakerEnabled":true,"reportingHosts":1,"propertyValue_executionTimeoutInMilliseconds":1000,"latencyTotal":{"0":0,"95":0,"99.5":0,"90":0,"25":0,"99":0,"75":0,"100":0,"50":0},"currentConcurrentExecutionCount":0,"rollingCountFallbackRejection":0,"rollingCountSemaphoreRejected":0,"rollingCountResponsesFromCache":0,"rollingCountShortCircuited":0,"propertyValue_circuitBreakerForceClosed":false,"name":"UpdateIdentityCommand","propertyValue_executionIsolationThreadPoolKeyOverride":"null","rollingCountSuccess":0,"propertyValue_requestLogEnabled":true,"requestCount":0,"rollingCountBadRequests":0,"errorPercentage":0,"rollingCountCollapsedRequests":0,"rollingMaxConcurrentExecutionCount":0,"propertyValue_circuitBreakerSleepWindowInMilliseconds":500,"latencyTotal_mean":0,"propertyValue_circuitBreakerForceOpen":false,"propertyValue_circuitBreakerRequestVolumeThreshold":20,"rollingCountEmit":0,"propertyValue_circuitBreakerErrorThresholdPercentage":50,"propertyValue_executionIsolationStrategy":"THREAD","rollingCountFallbackFailure":0,"isCircuitBreakerOpen":false,"propertyValue_executionIsolationSemaphoreMaxConcurrentRequests":10,"propertyValue_executionIsolationThreadTimeoutInMilliseconds":1000,"propertyValue_metricsRollingStatisticalWindowInMilliseconds":10000,"propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests":10,"latencyExecute":{"0":0,"95":0,"99.5":0,"90":0,"25":0,"99":0,"75":0,"100":0,"50":0},"group":"SecurityServiceGroup","latencyExecute_mean":0,"propertyValue_requestCacheEnabled":true,"rollingCountThreadPoolRejected":0}

data: {"rollingCountFailure":0,"propertyValue_executionIsolationThreadInterruptOnTimeout":true,"rollingCountTimeout":0,"threadPool":"SecurityServiceGroup","rollingCountExceptionsThrown":0,"rollingCountFallbackSuccess":0,"errorCount":0,"type":"HystrixCommand","propertyValue_circuitBreakerEnabled":true,"reportingHosts":1,"propertyValue_executionTimeoutInMilliseconds":1000,"latencyTotal":{"0":0,"95":0,"99.5":0,"90":0,"25":0,"99":0,"75":0,"100":0,"50":0},"currentConcurrentExecutionCount":0,"rollingCountFallbackRejection":0,"rollingCountSemaphoreRejected":0,"rollingCountResponsesFromCache":0,"rollingCountShortCircuited":0,"propertyValue_circuitBreakerForceClosed":false,"name":"CreateIdentityCommand","propertyValue_executionIsolationThreadPoolKeyOverride":"null","rollingCountSuccess":0,"propertyValue_requestLogEnabled":true,"requestCount":0,"rollingCountBadRequests":0,"errorPercentage":0,"rollingCountCollapsedRequests":0,"rollingMaxConcurrentExecutionCount":0,"propertyValue_circuitBreakerSleepWindowInMilliseconds":500,"latencyTotal_mean":0,"propertyValue_circuitBreakerForceOpen":false,"propertyValue_circuitBreakerRequestVolumeThreshold":20,"rollingCountEmit":0,"propertyValue_circuitBreakerErrorThresholdPercentage":50,"propertyValue_executionIsolationStrategy":"THREAD","rollingCountFallbackFailure":0,"isCircuitBreakerOpen":false,"propertyValue_executionIsolationSemaphoreMaxConcurrentRequests":10,"propertyValue_executionIsolationThreadTimeoutInMilliseconds":1000,"propertyValue_metricsRollingStatisticalWindowInMilliseconds":10000,"propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests":10,"latencyExecute":{"0":0,"95":0,"99.5":0,"90":0,"25":0,"99":0,"75":0,"100":0,"50":0},"group":"SecurityServiceGroup","latencyExecute_mean":0,"propertyValue_requestCacheEnabled":true,"rollingCountThreadPoolRejected":0}

: ping
data: {"timestamp":1437654063636,"name":"meta","reportingHostsLast10Seconds":1,"type":"meta"}

: ping
data: {"timestamp":1437654066637,"name":"meta","reportingHostsLast10Seconds":1,"type":"meta"}

: ping
data: {"timestamp":1437654070638,"name":"meta","reportingHostsLast10Seconds":1,"type":"meta"}

: ping
data: {"timestamp":1437654074638,"name":"meta","reportingHostsLast10Seconds":1,"type":"meta"}

: ping
data: {"timestamp":1437654077639,"name":"meta","reportingHostsLast10Seconds":1,"type":"meta"}

I can see Both turbine steams in hystrix dashboard fine.

Cannot use a InstanceDiscovery custom Class outside Turbine contrib

I've been trying to add my own simple ServiceDiscovery class.

All it does is return an empty collection.

import com.netflix.turbine.discovery.InstanceDiscovery;
import com.netflix.turbine.discovery.Instance;

public class ScInstanceDiscovery implements InstanceDiscovery {
    public ScInstanceDiscovery() throws Exception {}

    @Override
    public Collection<Instance> getInstanceList() throws Exception {
        List<Instance> collectedInstances = new ArrayList<Instance>();
        return collectedInstances;
    }
}

My config.properties:

InstanceDiscovery.impl=ScInstanceDiscovery

I compile this and add it to my path when running turbine-web.war through Jetty.

java  -Darchaius.configurationSource.additionalUrls=file:config.properties  -jar jetty-runner-8.1.9.v20130131.jar  --lib turbine-core/build/libs/ --classes soundcloud --port 5001  turbine-web/build/libs/turbine-web-0.5-SNAPSHOT.war

I keep getting this error:

ScInstanceDiscovery cannot be cast to com.netflix.turbine.discovery.InstanceDiscovery
at com.netflix.turbine.init.TurbineInit.getInstanceDiscoveryImpl(TurbineInit.java:74)

I've tried against the master branch (0.5) and against 0.4.

The only way I can get it to accept my InstanceDiscovery class to work is by moving it into the turbine-contrib package and compiling it as part of that. Then it correctly works.

Any pointers or suggestion very welcome.

java --version
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

Thanks

Missing eureka integration?

According to the wiki, turbine uses eureka to find what instances to monitor. However, I cannot find any implementation of this in the source code. I could not find any dependency on eureka-core either...

Am I missing something or is the documentation incorrect and this part not yet open sourced? There should be no problem just implementing the eureka-plugin. Just wanted to check before as the documentation states otherwise (see below).

"Turbine automatically discovers and connects to server instances using Netflix's Eureka service"

/Oskar Kjellin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.