diff --git a/dependencies.lock b/dependencies.lock new file mode 100644 index 000000000..544b7b4dd --- /dev/null +++ b/dependencies.lock @@ -0,0 +1,3 @@ +{ + +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index c4acbb672..ca8fb16f8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ rx_java_version=1.0.9 rx_netty_version=0.4.9 -servo_version=0.10.1 +spectator_version=latest.release hystrix_version=1.4.3 guava_version=19.0 archaius_version=0.7.6 @@ -10,4 +10,4 @@ slf4j_version=1.7.2 junit_version=4.12 powermock_version=1.6.2 -easymock_version=3.2 \ No newline at end of file +easymock_version=3.2 diff --git a/ribbon-archaius/dependencies.lock b/ribbon-archaius/dependencies.lock new file mode 100644 index 000000000..e77d58317 --- /dev/null +++ b/ribbon-archaius/dependencies.lock @@ -0,0 +1,148 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "locked": "0.7.6" + }, + "com.netflix.ribbon:ribbon-core": { + "project": true + }, + "commons-configuration:commons-configuration": { + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "1.7.2" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "locked": "0.7.6" + }, + "com.netflix.ribbon:ribbon-core": { + "project": true + }, + "commons-configuration:commons-configuration": { + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "1.7.2" + } + }, + "testCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "locked": "0.7.6" + }, + "com.netflix.ribbon:ribbon-core": { + "project": true + }, + "commons-configuration:commons-configuration": { + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "locked": "0.7.6" + }, + "com.netflix.ribbon:ribbon-core": { + "project": true + }, + "commons-configuration:commons-configuration": { + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "1.7.2" + } + } +} \ No newline at end of file diff --git a/ribbon-core/dependencies.lock b/ribbon-core/dependencies.lock new file mode 100644 index 000000000..cea79ebbf --- /dev/null +++ b/ribbon-core/dependencies.lock @@ -0,0 +1,144 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "locked": "19.0" + }, + "commons-lang:commons-lang": { + "locked": "2.6" + }, + "org.slf4j:slf4j-api": { + "locked": "1.7.2" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "locked": "19.0" + }, + "commons-lang:commons-lang": { + "locked": "2.6" + }, + "org.slf4j:slf4j-api": { + "locked": "1.7.2" + } + }, + "testCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "project": true + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "1.7.2" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "project": true + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "1.7.2" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + } +} \ No newline at end of file diff --git a/ribbon-eureka/dependencies.lock b/ribbon-eureka/dependencies.lock new file mode 100644 index 000000000..33570b629 --- /dev/null +++ b/ribbon-eureka/dependencies.lock @@ -0,0 +1,358 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "locked": "0.7.5" + }, + "com.netflix.eureka:eureka-client": { + "locked": "1.7.2" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "javax.inject:javax.inject": { + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.2" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "locked": "0.7.5" + }, + "com.netflix.eureka:eureka-client": { + "locked": "1.7.2" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "javax.inject:javax.inject": { + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.36" + } + }, + "testCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.eureka:eureka-client": { + "locked": "1.7.2" + }, + "com.netflix.eureka:eureka-test-utils": { + "locked": "1.7.2" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "javax.inject:javax.inject": { + "locked": "1" + }, + "junit:junit": { + "locked": "4.12" + }, + "org.easymock:easymock": { + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "locked": "1.6.2" + }, + "org.powermock:powermock-mockito-release-full": { + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.2" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.eureka:eureka-client": { + "locked": "1.7.2" + }, + "com.netflix.eureka:eureka-test-utils": { + "locked": "1.7.2" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "javax.inject:javax.inject": { + "locked": "1" + }, + "junit:junit": { + "locked": "4.12" + }, + "org.easymock:easymock": { + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "locked": "1.6.2" + }, + "org.powermock:powermock-mockito-release-full": { + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.36" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + } +} \ No newline at end of file diff --git a/ribbon-evcache/dependencies.lock b/ribbon-evcache/dependencies.lock new file mode 100644 index 000000000..647cdaf82 --- /dev/null +++ b/ribbon-evcache/dependencies.lock @@ -0,0 +1,700 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.evcache:evcache-client": { + "locked": "1.0.5" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.2" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.evcache:evcache-client": { + "locked": "1.0.5" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.36" + } + }, + "testCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "0.7.6" + }, + "com.netflix.eureka:eureka-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.7.2" + }, + "com.netflix.evcache:evcache-client": { + "locked": "1.0.5" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-eureka": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-test": { + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.1.1" + }, + "junit:junit": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "4.12" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.9.11" + }, + "org.easymock:easymock": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "0.7.6" + }, + "com.netflix.eureka:eureka-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.7.2" + }, + "com.netflix.evcache:evcache-client": { + "locked": "1.0.5" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-eureka": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-test": { + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.1.1" + }, + "junit:junit": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "4.12" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.9.11" + }, + "org.easymock:easymock": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.36" + } + } +} \ No newline at end of file diff --git a/ribbon-examples/dependencies.lock b/ribbon-examples/dependencies.lock new file mode 100644 index 000000000..f7bf6be70 --- /dev/null +++ b/ribbon-examples/dependencies.lock @@ -0,0 +1,764 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-httpclient": { + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "com.sun.jersey.contribs:jersey-apache-client4": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-server": { + "locked": "1.19.1" + }, + "com.thoughtworks.xstream:xstream": { + "locked": "1.4.5" + }, + "commons-collections:commons-collections": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "3.2.2" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "locked": "1.1.1" + }, + "org.apache.httpcomponents:httpclient": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "4.2.1" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "locked": "1.9.11" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.2" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-httpclient": { + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "com.sun.jersey.contribs:jersey-apache-client4": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-server": { + "locked": "1.19.1" + }, + "com.thoughtworks.xstream:xstream": { + "locked": "1.4.5" + }, + "commons-collections:commons-collections": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "3.2.2" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "locked": "1.1.1" + }, + "org.apache.httpcomponents:httpclient": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "4.2.1" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "locked": "1.9.11" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.36" + } + }, + "testCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-httpclient": { + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "com.sun.jersey.contribs:jersey-apache-client4": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-server": { + "locked": "1.19.1" + }, + "com.thoughtworks.xstream:xstream": { + "locked": "1.4.5" + }, + "commons-collections:commons-collections": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "3.2.2" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "locked": "1.1.1" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.apache.httpcomponents:httpclient": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "4.2.1" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "locked": "1.9.11" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-httpclient": { + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "com.sun.jersey.contribs:jersey-apache-client4": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-server": { + "locked": "1.19.1" + }, + "com.thoughtworks.xstream:xstream": { + "locked": "1.4.5" + }, + "commons-collections:commons-collections": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "3.2.2" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "locked": "1.1.1" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.apache.httpcomponents:httpclient": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-httpclient" + ], + "locked": "4.2.1" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "locked": "1.9.11" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-httpclient", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.36" + } + } +} \ No newline at end of file diff --git a/ribbon-guice/dependencies.lock b/ribbon-guice/dependencies.lock new file mode 100644 index 000000000..201f152cd --- /dev/null +++ b/ribbon-guice/dependencies.lock @@ -0,0 +1,610 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.google.inject.extensions:guice-multibindings": { + "locked": "4.0" + }, + "com.google.inject:guice": { + "locked": "4.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.2" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.google.inject.extensions:guice-multibindings": { + "locked": "4.0" + }, + "com.google.inject:guice": { + "locked": "4.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.36" + } + }, + "testCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.google.inject.extensions:guice-multibindings": { + "locked": "4.0" + }, + "com.google.inject:guice": { + "locked": "4.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-examples": { + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.google.inject.extensions:guice-multibindings": { + "locked": "4.0" + }, + "com.google.inject:guice": { + "locked": "4.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon": { + "project": true + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-examples": { + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.36" + } + } +} \ No newline at end of file diff --git a/ribbon-httpclient/build.gradle b/ribbon-httpclient/build.gradle index f595022e5..159e39ae0 100644 --- a/ribbon-httpclient/build.gradle +++ b/ribbon-httpclient/build.gradle @@ -7,7 +7,7 @@ dependencies { api "com.sun.jersey:jersey-client:${jersey_version}" api "com.sun.jersey.contribs:jersey-apache-client4:${jersey_version}" api "org.slf4j:slf4j-api:${slf4j_version}" - api "com.netflix.servo:servo-core:${servo_version}" + api "com.netflix.spectator:spectator-api:${spectator_version}" api "com.google.guava:guava:${guava_version}" api 'com.netflix.netflix-commons:netflix-commons-util:0.1.1' testImplementation 'junit:junit:4.11' diff --git a/ribbon-httpclient/dependencies.lock b/ribbon-httpclient/dependencies.lock new file mode 100644 index 000000000..fa0bcd1d3 --- /dev/null +++ b/ribbon-httpclient/dependencies.lock @@ -0,0 +1,370 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "com.sun.jersey.contribs:jersey-apache-client4": { + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-client": { + "locked": "1.19.1" + }, + "commons-collections:commons-collections": { + "locked": "3.2.2" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "org.apache.httpcomponents:httpclient": { + "locked": "4.2.1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.2" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "com.sun.jersey.contribs:jersey-apache-client4": { + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-client": { + "locked": "1.19.1" + }, + "commons-collections:commons-collections": { + "locked": "3.2.2" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "org.apache.httpcomponents:httpclient": { + "locked": "4.2.1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.36" + } + }, + "testCompileClasspath": { + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.4.3" + }, + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.google.mockwebserver:mockwebserver": { + "locked": "20130505" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "com.sun.jersey.contribs:jersey-apache-client4": { + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-client": { + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-server": { + "locked": "1.19.1" + }, + "commons-collections:commons-collections": { + "locked": "3.2.2" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-io:commons-io": { + "locked": "2.0.1" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.apache.httpcomponents:httpclient": { + "locked": "4.2.1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.2" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.4.3" + }, + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.google.mockwebserver:mockwebserver": { + "locked": "20130505" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "com.sun.jersey.contribs:jersey-apache-client4": { + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-client": { + "locked": "1.19.1" + }, + "com.sun.jersey:jersey-server": { + "locked": "1.19.1" + }, + "commons-collections:commons-collections": { + "locked": "3.2.2" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-io:commons-io": { + "locked": "2.0.1" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.apache.httpcomponents:httpclient": { + "locked": "4.2.1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.36" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + } +} \ No newline at end of file diff --git a/ribbon-httpclient/src/main/java/com/netflix/http4/NFHttpClient.java b/ribbon-httpclient/src/main/java/com/netflix/http4/NFHttpClient.java index 88d26fa79..04a72b574 100644 --- a/ribbon-httpclient/src/main/java/com/netflix/http4/NFHttpClient.java +++ b/ribbon-httpclient/src/main/java/com/netflix/http4/NFHttpClient.java @@ -23,11 +23,10 @@ import com.netflix.client.config.IClientConfig; import com.netflix.client.config.IClientConfigKey; import com.netflix.client.config.Property; -import com.netflix.servo.annotations.DataSourceType; -import com.netflix.servo.annotations.Monitor; -import com.netflix.servo.monitor.Monitors; -import com.netflix.servo.monitor.Stopwatch; -import com.netflix.servo.monitor.Timer; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; +import com.netflix.spectator.api.Timer; +import com.netflix.spectator.api.patterns.PolledMeter; import org.apache.http.Header; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; @@ -55,7 +54,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; -import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; /** @@ -103,20 +101,24 @@ public class NFHttpClient extends DefaultHttpClient { connectionPoolCleanUpScheduler = Executors.newScheduledThreadPool(2, factory); } - protected NFHttpClient(String host, int port){ + protected NFHttpClient(String host, int port) { + this(host, port, Spectator.globalRegistry()); + } + + protected NFHttpClient(String host, int port, Registry registry) { super(new ThreadSafeClientConnManager()); this.name = "UNNAMED_" + numNonNamedHttpClients.incrementAndGet(); httpHost = new HttpHost(host, port); httpRoute = new HttpRoute(httpHost); - init(createDefaultConfig(), false); + init(createDefaultConfig(), registry); } protected NFHttpClient(){ super(new ThreadSafeClientConnManager()); this.name = "UNNAMED_" + numNonNamedHttpClients.incrementAndGet(); - init(createDefaultConfig(), false); + init(createDefaultConfig(), Spectator.globalRegistry()); } private static IClientConfig createDefaultConfig() { @@ -136,10 +138,10 @@ protected NFHttpClient(String name, IClientConfig config) { protected NFHttpClient(String name, IClientConfig config, boolean registerMonitor) { super(new MonitoredConnectionManager(name)); this.name = name; - init(config, registerMonitor); + init(config, Spectator.globalRegistry()); } - void init(IClientConfig config, boolean registerMonitor) { + void init(IClientConfig config, Registry registry) { HttpParams params = getParams(); HttpProtocolParams.setContentCharset(params, "UTF-8"); @@ -160,10 +162,10 @@ void init(IClientConfig config, boolean registerMonitor) { setHttpRequestRetryHandler( new NFHttpMethodRetryHandler(this.name, this.retriesProperty.getOrDefault(), false, this.sleepTimeFactorMsProperty.getOrDefault())); - tracer = Monitors.newTimer(EXECUTE_TRACER + "-" + name, TimeUnit.MILLISECONDS); - if (registerMonitor) { - Monitors.registerObject(name, this); - } + tracer = registry.timer(EXECUTE_TRACER + "-" + name); + + PolledMeter.using(registry).withName("HttpClient-ConnectionsInPool").monitorValue(this, NFHttpClient::getConnectionsInPool); + maxTotalConnectionProperty = config.getDynamicProperty(CommonClientConfigKey.MaxTotalHttpConnections); maxTotalConnectionProperty.onChange(newValue -> ((ThreadSafeClientConnManager) getConnectionManager()).setMaxTotal(newValue) @@ -188,17 +190,14 @@ public void initConnectionCleanerTask(){ } - @Monitor(name = "HttpClient-ConnPoolCleaner", type = DataSourceType.INFORMATIONAL) public ConnectionPoolCleaner getConnPoolCleaner() { return connPoolCleaner; } - @Monitor(name = "HttpClient-ConnIdleEvictTimeMilliSeconds", type = DataSourceType.INFORMATIONAL) public Property getConnIdleEvictTimeMilliSeconds() { return connIdleEvictTimeMilliSeconds; } - @Monitor(name="HttpClient-ConnectionsInPool", type = DataSourceType.GAUGE) public int getConnectionsInPool() { ClientConnectionManager connectionManager = this.getConnectionManager(); if (connectionManager != null) { @@ -208,7 +207,6 @@ public int getConnectionsInPool() { } } - @Monitor(name = "HttpClient-MaxTotalConnections", type = DataSourceType.INFORMATIONAL) public int getMaxTotalConnnections() { ClientConnectionManager connectionManager = this.getConnectionManager(); if (connectionManager != null) { @@ -218,7 +216,6 @@ public int getMaxTotalConnnections() { } } - @Monitor(name = "HttpClient-MaxConnectionsPerHost", type = DataSourceType.INFORMATIONAL) public int getMaxConnectionsPerHost() { ClientConnectionManager connectionManager = this.getConnectionManager(); if (connectionManager != null) { @@ -231,7 +228,6 @@ public int getMaxConnectionsPerHost() { } } - @Monitor(name = "HttpClient-NumRetries", type = DataSourceType.INFORMATIONAL) public int getNumRetries() { return this.retriesProperty.getOrDefault(); } @@ -240,7 +236,6 @@ public void setConnIdleEvictTimeMilliSeconds(Property connIdleEvictTime this.connIdleEvictTimeMilliSeconds = connIdleEvictTimeMilliSeconds; } - @Monitor(name = "HttpClient-SleepTimeFactorMs", type = DataSourceType.INFORMATIONAL) public int getSleepTimeFactorMs() { return this.sleepTimeFactorMsProperty.getOrDefault(); } @@ -299,13 +294,12 @@ public T execute( final ResponseHandler responseHandler, final HttpContext context) throws IOException, ClientProtocolException { - Stopwatch sw = tracer.start(); - try{ + try { // TODO: replaced method.getQueryString() with request.getRequestLine().getUri() LOGGER.debug("Executing HTTP method: {}, uri: {}", request.getRequestLine().getMethod(), request.getRequestLine().getUri()); - return super.execute(target, request, responseHandler, context); - }finally{ - sw.stop(); + return tracer.recordCallable(() -> super.execute(target, request, responseHandler, context)); + } catch (Exception ex) { + throw new RuntimeException(ex); } } diff --git a/ribbon-httpclient/src/main/java/com/netflix/http4/NFHttpClientFactory.java b/ribbon-httpclient/src/main/java/com/netflix/http4/NFHttpClientFactory.java index d7df1e73c..18f2417f8 100644 --- a/ribbon-httpclient/src/main/java/com/netflix/http4/NFHttpClientFactory.java +++ b/ribbon-httpclient/src/main/java/com/netflix/http4/NFHttpClientFactory.java @@ -24,7 +24,6 @@ import org.apache.commons.collections.keyvalue.MultiKey; import com.netflix.client.config.IClientConfig; -import com.netflix.servo.monitor.Monitors; /** * Factory class to get an instance of NFHttpClient @@ -96,7 +95,6 @@ public static void shutdownNFHttpClient(String name) { if (c != null) { c.shutdown(); namedClientMap.remove(name); - Monitors.unregisterObject(name, c); } } } diff --git a/ribbon-httpclient/src/main/java/com/netflix/http4/NamedConnectionPool.java b/ribbon-httpclient/src/main/java/com/netflix/http4/NamedConnectionPool.java index da62a74c1..f15b4550c 100644 --- a/ribbon-httpclient/src/main/java/com/netflix/http4/NamedConnectionPool.java +++ b/ribbon-httpclient/src/main/java/com/netflix/http4/NamedConnectionPool.java @@ -19,6 +19,11 @@ import java.util.concurrent.TimeUnit; +import com.netflix.spectator.api.Counter; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; +import com.netflix.spectator.api.Timer; +import com.netflix.spectator.api.patterns.PolledMeter; import org.apache.http.conn.ClientConnectionOperator; import org.apache.http.conn.ConnectionPoolTimeoutException; import org.apache.http.conn.params.ConnPerRoute; @@ -31,12 +36,6 @@ import org.apache.http.params.HttpParams; import com.google.common.base.Preconditions; -import com.netflix.servo.annotations.DataSourceType; -import com.netflix.servo.annotations.Monitor; -import com.netflix.servo.monitor.Counter; -import com.netflix.servo.monitor.Monitors; -import com.netflix.servo.monitor.Stopwatch; -import com.netflix.servo.monitor.Timer; /** * A connection pool that provides Servo counters to monitor the efficiency. @@ -94,15 +93,18 @@ public NamedConnectionPool(String name, ClientConnectionOperator operator, void initMonitors(String name) { Preconditions.checkNotNull(name); - freeEntryCounter = Monitors.newCounter(name + "_Reuse"); - createEntryCounter = Monitors.newCounter(name + "_CreateNew"); - requestCounter = Monitors.newCounter(name + "_Request"); - releaseCounter = Monitors.newCounter(name + "_Release"); - deleteCounter = Monitors.newCounter(name + "_Delete"); - requestTimer = Monitors.newTimer(name + "_RequestConnectionTimer", TimeUnit.MILLISECONDS); - creationTimer = Monitors.newTimer(name + "_CreateConnectionTimer", TimeUnit.MILLISECONDS); + + Registry registry = Spectator.globalRegistry(); + PolledMeter.using(registry).withName("connectionCount").monitorValue(this, NamedConnectionPool::getConnectionCount); + + freeEntryCounter = registry.counter(name + "_Reuse"); + createEntryCounter = registry.counter(name + "_CreateNew"); + requestCounter = registry.counter(name + "_Request"); + releaseCounter = registry.counter(name + "_Release"); + deleteCounter = registry.counter(name + "_Delete"); + requestTimer = registry.timer(name + "_RequestConnectionTimer"); + creationTimer = registry.timer(name + "_CreateConnectionTimer"); this.name = name; - Monitors.registerObject(name, this); } @Override @@ -124,23 +126,21 @@ protected BasicPoolEntry getFreeEntry(RouteSpecificPool rospl, Object state) { protected BasicPoolEntry createEntry(RouteSpecificPool rospl, ClientConnectionOperator op) { createEntryCounter.increment(); - Stopwatch stopWatch = creationTimer.start(); try { - return super.createEntry(rospl, op); - } finally { - stopWatch.stop(); + return creationTimer.recordCallable(() -> super.createEntry(rospl, op)); + } catch (Exception ex) { + throw new RuntimeException(ex); } } - + @Override protected BasicPoolEntry getEntryBlocking(HttpRoute route, Object state, long timeout, TimeUnit tunit, WaitingThreadAborter aborter) throws ConnectionPoolTimeoutException, InterruptedException { - Stopwatch stopWatch = requestTimer.start(); try { - return super.getEntryBlocking(route, state, timeout, tunit, aborter); - } finally { - stopWatch.stop(); + return requestTimer.recordCallable(() -> super.getEntryBlocking(route, state, timeout, tunit, aborter)); + } catch (Exception ex) { + throw new RuntimeException(ex); } } @@ -158,26 +158,25 @@ protected void deleteEntry(BasicPoolEntry entry) { } public final long getFreeEntryCount() { - return freeEntryCounter.getValue().longValue(); + return freeEntryCounter.count(); } public final long getCreatedEntryCount() { - return createEntryCounter.getValue().longValue(); + return createEntryCounter.count(); } public final long getRequestsCount() { - return requestCounter.getValue().longValue(); + return requestCounter.count(); } public final long getReleaseCount() { - return releaseCounter.getValue().longValue(); + return releaseCounter.count(); } public final long getDeleteCount() { - return deleteCounter.getValue().longValue(); + return deleteCounter.count(); } - @Monitor(name="connectionCount", type=DataSourceType.GAUGE) public int getConnectionCount() { return this.getConnectionsInPool(); } @@ -185,6 +184,5 @@ public int getConnectionCount() { @Override public void shutdown() { super.shutdown(); - Monitors.unregisterObject(name, this); } } diff --git a/ribbon-loadbalancer/build.gradle b/ribbon-loadbalancer/build.gradle index ad7cbd275..bcc4aaa39 100644 --- a/ribbon-loadbalancer/build.gradle +++ b/ribbon-loadbalancer/build.gradle @@ -3,7 +3,7 @@ dependencies { api 'com.netflix.netflix-commons:netflix-statistics:0.1.1' api "io.reactivex:rxjava:${rx_java_version}" api "org.slf4j:slf4j-api:${slf4j_version}" - api "com.netflix.servo:servo-core:${servo_version}" + api "com.netflix.spectator:spectator-api:${spectator_version}" api "com.google.guava:guava:${guava_version}" api 'com.netflix.netflix-commons:netflix-commons-util:0.1.1' diff --git a/ribbon-loadbalancer/dependencies.lock b/ribbon-loadbalancer/dependencies.lock new file mode 100644 index 000000000..e2392f819 --- /dev/null +++ b/ribbon-loadbalancer/dependencies.lock @@ -0,0 +1,240 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "19.0" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-core": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "locked": "1.7.0" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "locked": "1.0.9" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "1.7.2" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "19.0" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-core": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "locked": "1.7.0" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "locked": "1.0.9" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "1.7.36" + } + }, + "testCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "locked": "1.7.0" + }, + "com.sun.jersey:jersey-server": { + "locked": "1.19.1" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "locked": "1.0.9" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.awaitility:awaitility": { + "locked": "3.0.0" + }, + "org.mockito:mockito-core": { + "locked": "2.13.0" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "1.7.2" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "locked": "1.7.0" + }, + "com.sun.jersey:jersey-server": { + "locked": "1.19.1" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "locked": "1.0.9" + }, + "junit:junit": { + "locked": "4.11" + }, + "org.awaitility:awaitility": { + "locked": "3.0.0" + }, + "org.mockito:mockito-core": { + "locked": "2.13.0" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "1.7.36" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + } +} \ No newline at end of file diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/client/ClientFactory.java b/ribbon-loadbalancer/src/main/java/com/netflix/client/ClientFactory.java index 61e8cb7fe..8ff7cfb26 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/client/ClientFactory.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/client/ClientFactory.java @@ -21,7 +21,6 @@ import com.netflix.client.config.CommonClientConfigKey; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.ILoadBalancer; -import com.netflix.servo.monitor.Monitors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -81,8 +80,6 @@ public class ClientFactory { } simpleClientMap.put(restClientName, client); - Monitors.registerObject("Client_" + restClientName, client); - logger.info("Client Registered:" + client.toString()); return client; } diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/client/PrimeConnections.java b/ribbon-loadbalancer/src/main/java/com/netflix/client/PrimeConnections.java index 6e34e98b1..ddc28a4ae 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/client/PrimeConnections.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/client/PrimeConnections.java @@ -31,16 +31,16 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; +import com.netflix.spectator.api.Counter; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; +import com.netflix.spectator.api.Timer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.netflix.client.config.CommonClientConfigKey; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.Server; -import com.netflix.servo.monitor.Counter; -import com.netflix.servo.monitor.Monitors; -import com.netflix.servo.monitor.Stopwatch; -import com.netflix.servo.monitor.Timer; /** * Prime the connections for a given Client (For those Client that @@ -180,11 +180,11 @@ private void setUp(String name, int maxRetries, * our Thread a * name */ - ); - totalCounter = Monitors.newCounter(name + "_PrimeConnection_TotalCounter"); - successCounter = Monitors.newCounter(name + "_PrimeConnection_SuccessCounter"); - initialPrimeTimer = Monitors.newTimer(name + "_initialPrimeConnectionsTimer", TimeUnit.MILLISECONDS); - Monitors.registerObject(name + "_PrimeConnection", this); + ); + Registry registry = Spectator.globalRegistry(); + totalCounter = registry.counter(name + "_PrimeConnection_TotalCounter"); + successCounter = registry.counter(name + "_PrimeConnection_SuccessCounter"); + initialPrimeTimer = registry.timer(name + "_initialPrimeConnectionsTimer"); } /** @@ -218,18 +218,26 @@ public void primeCompleted(Server s, Throwable lastException) { } latch.countDown(); } - }); - - Stopwatch stopWatch = initialPrimeTimer.start(); + }); + + long start = System.currentTimeMillis(); + long totalTime = 0; try { - latch.await(maxTotalTimeToPrimeConnections, TimeUnit.MILLISECONDS); - } catch (InterruptedException e) { - logger.error("Priming connection interrupted", e); + initialPrimeTimer.recordCallable(() -> { + try { + return latch.await(maxTotalTimeToPrimeConnections, TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + logger.error("Priming connection interrupted", e); + return false; + } + }); + } catch (Exception ex) { + throw new RuntimeException(ex); } finally { - stopWatch.stop(); + totalTime = System.currentTimeMillis() - start; } - stats = new PrimeConnectionEndStats(totalCount, successCount.get(), failureCount.get(), stopWatch.getDuration(TimeUnit.MILLISECONDS)); + stats = new PrimeConnectionEndStats(totalCount, successCount.get(), failureCount.get(), totalTime); printStats(stats); } @@ -328,7 +336,6 @@ public Boolean call() throws Exception { public void shutdown() { executorService.shutdown(); - Monitors.unregisterObject(name + "_PrimeConnection", this); } private Boolean connectToServer(final Server s, final PrimeConnectionListener listener) { diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/AvailabilityFilteringRule.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/AvailabilityFilteringRule.java index 143af1c75..29675314e 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/AvailabilityFilteringRule.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/AvailabilityFilteringRule.java @@ -21,8 +21,9 @@ import com.google.common.collect.Collections2; import com.netflix.client.config.IClientConfig; -import com.netflix.servo.annotations.DataSourceType; -import com.netflix.servo.annotations.Monitor; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; +import com.netflix.spectator.api.patterns.PolledMeter; /** * A load balancer rule that filters out servers that: @@ -46,12 +47,17 @@ public class AvailabilityFilteringRule extends PredicateBasedRule { private AbstractServerPredicate predicate; - + public AvailabilityFilteringRule() { + this(Spectator.globalRegistry()); + } + + public AvailabilityFilteringRule(Registry registry) { super(); predicate = CompositePredicate.withPredicate(new AvailabilityPredicate(this, null)) .addFallbackPredicate(AbstractServerPredicate.alwaysTrue()) .build(); + PolledMeter.using(registry).withName("AvailableServersCount").monitorValue(this, AvailabilityFilteringRule::getAvailableServersCount); } @@ -62,7 +68,6 @@ public void initWithNiwsConfig(IClientConfig clientConfig) { .build(); } - @Monitor(name="AvailableServersCount", type = DataSourceType.GAUGE) public int getAvailableServersCount() { ILoadBalancer lb = getLoadBalancer(); List servers = lb.getAllServers(); diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/BaseLoadBalancer.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/BaseLoadBalancer.java index af49283f7..1193973d9 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/BaseLoadBalancer.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/BaseLoadBalancer.java @@ -25,10 +25,9 @@ import com.netflix.client.PrimeConnections; import com.netflix.client.config.CommonClientConfigKey; import com.netflix.client.config.IClientConfig; -import com.netflix.servo.annotations.DataSourceType; -import com.netflix.servo.annotations.Monitor; -import com.netflix.servo.monitor.Counter; -import com.netflix.servo.monitor.Monitors; +import com.netflix.spectator.api.Counter; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; import com.netflix.util.concurrent.ShutdownEnabledTimer; import org.slf4j.Logger; @@ -72,10 +71,8 @@ public class BaseLoadBalancer extends AbstractLoadBalancer implements protected IPing ping = null; - @Monitor(name = PREFIX + "AllServerList", type = DataSourceType.INFORMATIONAL) protected volatile List allServerList = Collections .synchronizedList(new ArrayList()); - @Monitor(name = PREFIX + "UpServerList", type = DataSourceType.INFORMATIONAL) protected volatile List upServerList = Collections .synchronizedList(new ArrayList()); @@ -93,7 +90,7 @@ public class BaseLoadBalancer extends AbstractLoadBalancer implements protected LoadBalancerStats lbStats; - private volatile Counter counter = Monitors.newCounter("LoadBalancer_ChooseServer"); + private volatile Counter counter; private PrimeConnections primeConnections; @@ -104,6 +101,7 @@ public class BaseLoadBalancer extends AbstractLoadBalancer implements private List changeListeners = new CopyOnWriteArrayList(); private List serverStatusListeners = new CopyOnWriteArrayList(); + private Registry registry; /** * Default constructor which sets name as "default", sets null ping, and @@ -121,6 +119,7 @@ public BaseLoadBalancer() { setRule(DEFAULT_RULE); setupPingTask(); lbStats = new LoadBalancerStats(DEFAULT_NAME); + this.registry = Spectator.globalRegistry(); } public BaseLoadBalancer(String lbName, IRule rule, LoadBalancerStats lbStats) { @@ -148,6 +147,7 @@ public BaseLoadBalancer(String name, IRule rule, LoadBalancerStats stats, this.name = name; this.ping = ping; this.pingStrategy = pingStrategy; + this.registry = Spectator.globalRegistry(); setRule(rule); setupPingTask(); lbStats = stats; @@ -726,7 +726,7 @@ private void notifyServerStatusChangeListener(final Collection changedSe } private final Counter createCounter() { - return Monitors.newCounter("LoadBalancer_ChooseServer"); + return registry.counter("LoadBalancer_ChooseServer"); } /* @@ -837,12 +837,9 @@ public String toString() { } /** - * Register with monitors and start priming connections if it is set. + * start priming connections if it is set. */ protected void init() { - Monitors.registerObject("LoadBalancer_" + name, this); - // register the rule as it contains metric for available servers count - Monitors.registerObject("Rule_" + name, this.getRule()); if (enablePrimingConnections && primeConnections != null) { primeConnections.primeConnections(getReachableServers()); } @@ -875,8 +872,6 @@ public void shutdown() { if (primeConnections != null) { primeConnections.shutdown(); } - Monitors.unregisterObject("LoadBalancer_" + name, this); - Monitors.unregisterObject("Rule_" + name, this.getRule()); } /** diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/DynamicServerListLoadBalancer.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/DynamicServerListLoadBalancer.java index a6a11c63a..eacfafe1a 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/DynamicServerListLoadBalancer.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/DynamicServerListLoadBalancer.java @@ -21,8 +21,9 @@ import com.netflix.client.ClientFactory; import com.netflix.client.config.CommonClientConfigKey; import com.netflix.client.config.IClientConfig; -import com.netflix.servo.annotations.DataSourceType; -import com.netflix.servo.annotations.Monitor; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; +import com.netflix.spectator.api.patterns.PolledMeter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -69,8 +70,8 @@ public DynamicServerListLoadBalancer() { } @Deprecated - public DynamicServerListLoadBalancer(IClientConfig clientConfig, IRule rule, IPing ping, - ServerList serverList, ServerListFilter filter) { + public DynamicServerListLoadBalancer(IClientConfig clientConfig, IRule rule, IPing ping, + ServerList serverList, ServerListFilter filter) { this( clientConfig, rule, @@ -84,6 +85,14 @@ public DynamicServerListLoadBalancer(IClientConfig clientConfig, IRule rule, IPi public DynamicServerListLoadBalancer(IClientConfig clientConfig, IRule rule, IPing ping, ServerList serverList, ServerListFilter filter, ServerListUpdater serverListUpdater) { + + this(clientConfig, rule, ping, serverList, filter, serverListUpdater, Spectator.globalRegistry()); + } + + public DynamicServerListLoadBalancer(IClientConfig clientConfig, IRule rule, IPing ping, + ServerList serverList, ServerListFilter filter, + ServerListUpdater serverListUpdater, + Registry registry) { super(clientConfig, rule, ping); this.serverListImpl = serverList; this.filter = filter; @@ -91,6 +100,11 @@ public DynamicServerListLoadBalancer(IClientConfig clientConfig, IRule rule, IPi if (filter instanceof AbstractServerListFilter) { ((AbstractServerListFilter) filter).setLoadBalancerStats(getLoadBalancerStats()); } + + PolledMeter.using(registry).withName("DurationSinceLastUpdateMs").monitorValue(this, DynamicServerListLoadBalancer::getDurationSinceLastUpdateMs); + PolledMeter.using(registry).withName("NumUpdateCyclesMissed").monitorValue(this, DynamicServerListLoadBalancer::getNumberMissedCycles); + PolledMeter.using(registry).withName("NumThreads").monitorValue(this, DynamicServerListLoadBalancer::getCoreThreads); + restOfInit(clientConfig); } @@ -286,22 +300,18 @@ public void shutdown() { } - @Monitor(name="LastUpdated", type=DataSourceType.INFORMATIONAL) public String getLastUpdate() { return serverListUpdater.getLastUpdate(); } - @Monitor(name="DurationSinceLastUpdateMs", type= DataSourceType.GAUGE) public long getDurationSinceLastUpdateMs() { return serverListUpdater.getDurationSinceLastUpdateMs(); } - @Monitor(name="NumUpdateCyclesMissed", type=DataSourceType.GAUGE) public int getNumberMissedCycles() { return serverListUpdater.getNumberMissedCycles(); } - @Monitor(name="NumThreads", type=DataSourceType.GAUGE) public int getCoreThreads() { return serverListUpdater.getCoreThreads(); } diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerContext.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerContext.java index 8dd9eecc8..f03c9939b 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerContext.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerContext.java @@ -25,8 +25,9 @@ import com.netflix.client.RetryHandler; import com.netflix.client.config.CommonClientConfigKey; import com.netflix.client.config.IClientConfig; -import com.netflix.servo.monitor.Monitors; -import com.netflix.servo.monitor.Timer; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; +import com.netflix.spectator.api.Timer; import com.netflix.util.Pair; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; @@ -35,7 +36,6 @@ import javax.annotation.Nullable; import java.net.URI; import java.net.URISyntaxException; -import java.util.concurrent.TimeUnit; /** * A class contains APIs intended to be used be load balancing client which is subclass of this class. @@ -59,6 +59,8 @@ public class LoadBalancerContext implements IClientConfigAware { private ILoadBalancer lb; + private Registry registry = Spectator.globalRegistry(); + private volatile Timer tracer; public LoadBalancerContext(ILoadBalancer lb) { @@ -99,14 +101,13 @@ public void initWithNiwsConfig(IClientConfig clientConfig) { tracer = getExecuteTracer(); - Monitors.registerObject("Client_" + clientName, this); } public Timer getExecuteTracer() { if (tracer == null) { synchronized(this) { if (tracer == null) { - tracer = Monitors.newTimer(clientName + "_LoadBalancerExecutionTimer", TimeUnit.MILLISECONDS); + tracer = registry.timer(clientName + "_LoadBalancerExecutionTimer"); } } } diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerStats.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerStats.java index 427610dee..b889b5fb1 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerStats.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/LoadBalancerStats.java @@ -23,14 +23,13 @@ import com.google.common.cache.LoadingCache; import com.google.common.cache.RemovalListener; import com.netflix.client.IClientConfigAware; -import com.netflix.client.config.ClientConfigFactory; import com.netflix.client.config.CommonClientConfigKey; import com.netflix.client.config.IClientConfig; import com.netflix.client.config.IClientConfigKey; import com.netflix.client.config.UnboxedIntProperty; -import com.netflix.servo.annotations.DataSourceType; -import com.netflix.servo.annotations.Monitor; -import com.netflix.servo.monitor.Monitors; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; +import com.netflix.spectator.api.patterns.PolledMeter; import java.util.ArrayList; import java.util.Collection; @@ -115,9 +114,12 @@ public LoadBalancerStats() { } public LoadBalancerStats(String name) { - this.name = name; + this(name, Spectator.globalRegistry()); + } - Monitors.registerObject(name, this); + public LoadBalancerStats(String name, Registry registry) { + this.name = name; + PolledMeter.using(registry).withName(PREFIX + "CircuitBreakerTrippedCount").monitorValue(this, stats -> stats.getCircuitBreakerTrippedCount()); } @Override @@ -339,7 +341,6 @@ public int getCircuitBreakerTrippedCount(String zone) { return getZoneSnapshot(zone).getCircuitTrippedCount(); } - @Monitor(name=PREFIX + "CircuitBreakerTrippedCount", type = DataSourceType.GAUGE) public int getCircuitBreakerTrippedCount() { int count = 0; for (String zone: upServerListZoneMap.keySet()) { @@ -387,7 +388,6 @@ public int getCongestionRatePercentage(String zone) { return (int) ((activeConnectionsCount + circuitBreakerTrippedCount) * 100L / serverCount); } - @Monitor(name=PREFIX + "AvailableZones", type = DataSourceType.INFORMATIONAL) public Set getAvailableZones() { return upServerListZoneMap.keySet(); } diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ServerStats.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ServerStats.java index 44a2c2f17..ee79f8de8 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ServerStats.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ServerStats.java @@ -19,19 +19,17 @@ import com.google.common.annotations.VisibleForTesting; -import com.netflix.client.config.CommonClientConfigKey; -import com.netflix.client.config.IClientConfigKey; import com.netflix.client.config.Property; import com.netflix.client.config.UnboxedIntProperty; -import com.netflix.servo.annotations.DataSourceType; -import com.netflix.servo.annotations.Monitor; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; +import com.netflix.spectator.api.patterns.PolledMeter; import com.netflix.stats.distribution.DataDistribution; import com.netflix.stats.distribution.DataPublisher; import com.netflix.stats.distribution.Distribution; import com.netflix.util.MeasuredRate; import java.util.Date; -import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -89,15 +87,36 @@ public ServerStats() { circuitTrippedTimeoutFactor = new UnboxedIntProperty(LoadBalancerStats.CIRCUIT_TRIP_TIMEOUT_FACTOR_SECONDS.defaultValue()); maxCircuitTrippedTimeout = new UnboxedIntProperty(LoadBalancerStats.CIRCUIT_TRIP_MAX_TIMEOUT_SECONDS.defaultValue()); activeRequestsCountTimeout = new UnboxedIntProperty(LoadBalancerStats.ACTIVE_REQUESTS_COUNT_TIMEOUT.defaultValue()); + initMetrics(Spectator.globalRegistry()); } public ServerStats(LoadBalancerStats lbStats) { + this(lbStats, Spectator.globalRegistry()); + } + + public ServerStats(LoadBalancerStats lbStats, Registry registry) { maxCircuitTrippedTimeout = lbStats.getCircuitTripMaxTimeoutSeconds(); circuitTrippedTimeoutFactor = lbStats.getCircuitTrippedTimeoutFactor(); connectionFailureThreshold = lbStats.getConnectionFailureCountThreshold(); activeRequestsCountTimeout = lbStats.getActiveRequestsCountTimeout(); + + initMetrics(registry); } - + + private void initMetrics(final Registry registry) { + PolledMeter.using(registry).withName("ActiveRequestsCount").monitorValue(this, ServerStats::getActiveRequestsCount); + PolledMeter.using(registry).withName("SuccessiveConnectionFailureCount").monitorValue(this, ServerStats::getSuccessiveConnectionFailureCount); + PolledMeter.using(registry).withName("ResponseTimePercentileNumValues").monitorValue(this, ServerStats::getResponseTimePercentileNumValues); + PolledMeter.using(registry).withName("ResponseTimeMillisAvg").monitorValue(this, ServerStats::getResponseTimeAvg); + PolledMeter.using(registry).withName("ResponseTimeMillis95Percentile").monitorValue(this, ServerStats::getResponseTime95thPercentile); + PolledMeter.using(registry).withName("ResponseTimeMillis99Percentile").monitorValue(this, ServerStats::getResponseTime99thPercentile); + PolledMeter.using(registry).withName("ResponseTimeMillis99_5Percentile").monitorValue(this, ServerStats::getResponseTime99point5thPercentile); + + // TODO : Servo @Monitor with type DataSourceType.COUNTER + // @Monitor(name = "ResponseTimePercentileWhenMillis", type = DataSourceType.COUNTER, + // description = "The time the percentile values were computed in milliseconds since the epoch") + } + /** * Initializes the object, starting data collection and reporting. */ @@ -257,12 +276,10 @@ public long getMeasuredRequestsCount() { return requestCountInWindow.getCount(); } - @Monitor(name="ActiveRequestsCount", type = DataSourceType.GAUGE) public int getMonitoredActiveRequestsCount() { return activeRequestsCount.get(); } - @Monitor(name="CircuitBreakerTripped", type = DataSourceType.INFORMATIONAL) public boolean isCircuitBreakerTripped() { return isCircuitBreakerTripped(System.currentTimeMillis()); } @@ -307,7 +324,6 @@ public void clearSuccessiveConnectionFailureCount() { successiveConnectionFailureCount.set(0); } - @Monitor(name="SuccessiveConnectionFailureCount", type = DataSourceType.GAUGE) public int getSuccessiveConnectionFailureCount() { return successiveConnectionFailureCount.get(); } @@ -319,8 +335,6 @@ public int getSuccessiveConnectionFailureCount() { /** * Gets the average total amount of time to handle a request, in milliseconds. */ - @Monitor(name = "OverallResponseTimeMillisAvg", type = DataSourceType.INFORMATIONAL, - description = "Average total time for a request, in milliseconds") public double getResponseTimeAvg() { return responseTimeDist.getMean(); } @@ -328,8 +342,6 @@ public double getResponseTimeAvg() { /** * Gets the maximum amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "OverallResponseTimeMillisMax", type = DataSourceType.INFORMATIONAL, - description = "Max total time for a request, in milliseconds") public double getResponseTimeMax() { return responseTimeDist.getMaximum(); } @@ -337,8 +349,6 @@ public double getResponseTimeMax() { /** * Gets the minimum amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "OverallResponseTimeMillisMin", type = DataSourceType.INFORMATIONAL, - description = "Min total time for a request, in milliseconds") public double getResponseTimeMin() { return responseTimeDist.getMinimum(); } @@ -346,8 +356,6 @@ public double getResponseTimeMin() { /** * Gets the standard deviation in the total amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "OverallResponseTimeMillisStdDev", type = DataSourceType.INFORMATIONAL, - description = "Standard Deviation in total time to handle a request, in milliseconds") public double getResponseTimeStdDev() { return responseTimeDist.getStdDev(); } @@ -359,8 +367,6 @@ public double getResponseTimeStdDev() { /** * Gets the number of samples used to compute the various response-time percentiles. */ - @Monitor(name = "ResponseTimePercentileNumValues", type = DataSourceType.GAUGE, - description = "The number of data points used to compute the currently reported percentile values") public int getResponseTimePercentileNumValues() { return dataDist.getSampleSize(); } @@ -368,18 +374,14 @@ public int getResponseTimePercentileNumValues() { /** * Gets the time when the varios percentile data was last updated. */ - @Monitor(name = "ResponseTimePercentileWhen", type = DataSourceType.INFORMATIONAL, - description = "The time the percentile values were computed") public String getResponseTimePercentileTime() { return dataDist.getTimestamp(); } /** - * Gets the time when the varios percentile data was last updated, + * Gets the time when the various percentile data was last updated, * in milliseconds since the epoch. */ - @Monitor(name = "ResponseTimePercentileWhenMillis", type = DataSourceType.COUNTER, - description = "The time the percentile values were computed in milliseconds since the epoch") public long getResponseTimePercentileTimeMillis() { return dataDist.getTimestampMillis(); } @@ -388,8 +390,6 @@ public long getResponseTimePercentileTimeMillis() { * Gets the average total amount of time to handle a request * in the recent time-slice, in milliseconds. */ - @Monitor(name = "ResponseTimeMillisAvg", type = DataSourceType.GAUGE, - description = "Average total time for a request in the recent time slice, in milliseconds") public double getResponseTimeAvgRecent() { return dataDist.getMean(); } @@ -397,8 +397,6 @@ public double getResponseTimeAvgRecent() { /** * Gets the 10-th percentile in the total amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "ResponseTimeMillis10Percentile", type = DataSourceType.INFORMATIONAL, - description = "10th percentile in total time to handle a request, in milliseconds") public double getResponseTime10thPercentile() { return getResponseTimePercentile(Percent.TEN); } @@ -406,8 +404,6 @@ public double getResponseTime10thPercentile() { /** * Gets the 25-th percentile in the total amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "ResponseTimeMillis25Percentile", type = DataSourceType.INFORMATIONAL, - description = "25th percentile in total time to handle a request, in milliseconds") public double getResponseTime25thPercentile() { return getResponseTimePercentile(Percent.TWENTY_FIVE); } @@ -415,8 +411,6 @@ public double getResponseTime25thPercentile() { /** * Gets the 50-th percentile in the total amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "ResponseTimeMillis50Percentile", type = DataSourceType.INFORMATIONAL, - description = "50th percentile in total time to handle a request, in milliseconds") public double getResponseTime50thPercentile() { return getResponseTimePercentile(Percent.FIFTY); } @@ -424,8 +418,6 @@ public double getResponseTime50thPercentile() { /** * Gets the 75-th percentile in the total amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "ResponseTimeMillis75Percentile", type = DataSourceType.INFORMATIONAL, - description = "75th percentile in total time to handle a request, in milliseconds") public double getResponseTime75thPercentile() { return getResponseTimePercentile(Percent.SEVENTY_FIVE); } @@ -433,8 +425,6 @@ public double getResponseTime75thPercentile() { /** * Gets the 90-th percentile in the total amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "ResponseTimeMillis90Percentile", type = DataSourceType.INFORMATIONAL, - description = "90th percentile in total time to handle a request, in milliseconds") public double getResponseTime90thPercentile() { return getResponseTimePercentile(Percent.NINETY); } @@ -442,8 +432,6 @@ public double getResponseTime90thPercentile() { /** * Gets the 95-th percentile in the total amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "ResponseTimeMillis95Percentile", type = DataSourceType.GAUGE, - description = "95th percentile in total time to handle a request, in milliseconds") public double getResponseTime95thPercentile() { return getResponseTimePercentile(Percent.NINETY_FIVE); } @@ -451,8 +439,6 @@ public double getResponseTime95thPercentile() { /** * Gets the 98-th percentile in the total amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "ResponseTimeMillis98Percentile", type = DataSourceType.INFORMATIONAL, - description = "98th percentile in total time to handle a request, in milliseconds") public double getResponseTime98thPercentile() { return getResponseTimePercentile(Percent.NINETY_EIGHT); } @@ -460,8 +446,6 @@ public double getResponseTime98thPercentile() { /** * Gets the 99-th percentile in the total amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "ResponseTimeMillis99Percentile", type = DataSourceType.GAUGE, - description = "99th percentile in total time to handle a request, in milliseconds") public double getResponseTime99thPercentile() { return getResponseTimePercentile(Percent.NINETY_NINE); } @@ -469,8 +453,6 @@ public double getResponseTime99thPercentile() { /** * Gets the 99.5-th percentile in the total amount of time spent handling a request, in milliseconds. */ - @Monitor(name = "ResponseTimeMillis99_5Percentile", type = DataSourceType.GAUGE, - description = "99.5th percentile in total time to handle a request, in milliseconds") public double getResponseTime99point5thPercentile() { return getResponseTimePercentile(Percent.NINETY_NINE_POINT_FIVE); } diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ZoneAffinityServerListFilter.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ZoneAffinityServerListFilter.java index 49e47a6e9..81fb9ab76 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ZoneAffinityServerListFilter.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ZoneAffinityServerListFilter.java @@ -25,8 +25,9 @@ import com.netflix.client.config.IClientConfig; import com.netflix.client.config.IClientConfigKey; import com.netflix.client.config.Property; -import com.netflix.servo.monitor.Counter; -import com.netflix.servo.monitor.Monitors; +import com.netflix.spectator.api.Counter; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -72,7 +73,12 @@ public ZoneAffinityServerListFilter() { } public ZoneAffinityServerListFilter(IClientConfig niwsClientConfig) { + this(niwsClientConfig, Spectator.globalRegistry()); + } + + public ZoneAffinityServerListFilter(IClientConfig niwsClientConfig, Registry registry) { initWithNiwsConfig(niwsClientConfig); + overrideCounter = registry.counter("ZoneAffinity_OverrideCounter"); } @Override @@ -85,10 +91,6 @@ public void initWithNiwsConfig(IClientConfig niwsClientConfig) { activeReqeustsPerServerThreshold = niwsClientConfig.getDynamicProperty(MAX_LOAD_PER_SERVER); blackOutServerPercentageThreshold = niwsClientConfig.getDynamicProperty(MAX_BLACKOUT_SERVER_PERCENTAGE); availableServersThreshold = niwsClientConfig.getDynamicProperty(MIN_AVAILABLE_SERVERS); - - overrideCounter = Monitors.newCounter("ZoneAffinity_OverrideCounter"); - - Monitors.registerObject("NIWSServerListFilter_" + niwsClientConfig.getClientName()); } private boolean shouldEnableZoneAffinity(List filtered) { diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ZoneStats.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ZoneStats.java index 5e89e31bb..e819867cb 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ZoneStats.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/ZoneStats.java @@ -17,10 +17,10 @@ */ package com.netflix.loadbalancer; -import com.netflix.servo.annotations.DataSourceType; -import com.netflix.servo.annotations.Monitor; -import com.netflix.servo.monitor.Counter; -import com.netflix.servo.monitor.Monitors; +import com.netflix.spectator.api.Counter; +import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.Spectator; +import com.netflix.spectator.api.patterns.PolledMeter; /** * Class that stores Statistics per Zone (where Zone is typically a Amazon @@ -38,45 +38,46 @@ public class ZoneStats { private final Counter counter; final String monitorId; - + public ZoneStats(String name, String zone, LoadBalancerStats loadBalancerStats) { + this(name, zone, loadBalancerStats, Spectator.globalRegistry()); + } + + public ZoneStats(String name, String zone, LoadBalancerStats loadBalancerStats, Registry registry) { this.zone = zone; this.loadBalancerStats = loadBalancerStats; monitorId = name + ":" + zone; - counter = Monitors.newCounter(PREFIX + name + "_" + zone + "_Counter"); - Monitors.registerObject(monitorId, this); + counter = registry.counter(PREFIX + name + "_" + zone + "_Counter"); + + PolledMeter.using(registry).withName(PREFIX + "InstanceCount").monitorValue(this, ZoneStats::getInstanceCount); + PolledMeter.using(registry).withName(PREFIX + "CircuitBreakerTrippedCount").monitorValue(this, ZoneStats::getCircuitBreakerTrippedCount); + PolledMeter.using(registry).withName(PREFIX + "ActiveRequestsPerServer").monitorValue(this, ZoneStats::getActiveRequestsPerServer); } public final String getZone() { return zone; } - - @Monitor(name=PREFIX + "ActiveRequestsCount", type = DataSourceType.INFORMATIONAL) + public int getActiveRequestsCount() { return loadBalancerStats.getActiveRequestsCount(zone); } - - @Monitor(name=PREFIX + "InstanceCount", type = DataSourceType.GAUGE) + public int getInstanceCount() { return loadBalancerStats.getInstanceCount(zone); } - @Monitor(name=PREFIX + "CircuitBreakerTrippedCount", type = DataSourceType.GAUGE) public int getCircuitBreakerTrippedCount() { return loadBalancerStats.getCircuitBreakerTrippedCount(zone); } - - @Monitor(name=PREFIX + "ActiveRequestsPerServer", type = DataSourceType.GAUGE) + public double getActiveRequestsPerServer() { return loadBalancerStats.getActiveRequestsPerServer(zone); } - - // @Monitor(name=PREFIX + "RequestsMadeLast5Minutes", type = DataSourceType.GAUGE) + public long getMeasuredZoneHits() { return loadBalancerStats.getMeasuredZoneHits(zone); } - - @Monitor(name=PREFIX + "CircuitBreakerTrippedPercentage", type = DataSourceType.INFORMATIONAL) + public double getCircuitBreakerTrippedPercentage() { ZoneSnapshot snapShot = loadBalancerStats.getZoneSnapshot(zone); int totalCount = snapShot.getInstanceCount(); diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/reactive/LoadBalancerCommand.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/reactive/LoadBalancerCommand.java index 2c434cf6d..2db9db561 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/reactive/LoadBalancerCommand.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/reactive/LoadBalancerCommand.java @@ -41,7 +41,6 @@ import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.ServerStats; import com.netflix.loadbalancer.reactive.ExecutionListener.AbortExecutionException; -import com.netflix.servo.monitor.Stopwatch; /** * A command that is used to produce the Observable from the load balancer execution. The load balancer is responsible for @@ -299,7 +298,7 @@ public Observable call(final Server server) { } final Stopwatch tracer = loadBalancerContext.getExecuteTracer().start(); - + return operation.call(server).doOnEach(new Observer() { private T entity; @Override diff --git a/ribbon-loadbalancer/src/test/java/com/netflix/loadbalancer/ServerStatsTest.java b/ribbon-loadbalancer/src/test/java/com/netflix/loadbalancer/ServerStatsTest.java index 610c9224c..cb486cbf2 100644 --- a/ribbon-loadbalancer/src/test/java/com/netflix/loadbalancer/ServerStatsTest.java +++ b/ribbon-loadbalancer/src/test/java/com/netflix/loadbalancer/ServerStatsTest.java @@ -21,14 +21,11 @@ import org.junit.Test; -import com.netflix.servo.monitor.Monitors; - public class ServerStatsTest { @Test public void testRegisterWithServo() { // Make sure annotations are correct: // https://github.com/Netflix/ribbon/issues/191 -// Monitors.registerObject(new ServerStats()); } } diff --git a/ribbon-test/dependencies.lock b/ribbon-test/dependencies.lock new file mode 100644 index 000000000..691f17bf9 --- /dev/null +++ b/ribbon-test/dependencies.lock @@ -0,0 +1,438 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "0.7.5" + }, + "com.netflix.eureka:eureka-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.7.2" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-eureka": { + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "locked": "1.1.1" + }, + "junit:junit": { + "locked": "4.12" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "locked": "1.9.11" + }, + "org.easymock:easymock": { + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.2" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "0.7.5" + }, + "com.netflix.eureka:eureka-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.7.2" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-eureka": { + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "locked": "1.1.1" + }, + "junit:junit": { + "locked": "4.12" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "locked": "1.9.11" + }, + "org.easymock:easymock": { + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.36" + } + }, + "testCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "0.7.5" + }, + "com.netflix.eureka:eureka-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.7.2" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-eureka": { + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "locked": "1.1.1" + }, + "junit:junit": { + "locked": "4.12" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "locked": "1.9.11" + }, + "org.easymock:easymock": { + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "0.7.5" + }, + "com.netflix.eureka:eureka-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.7.2" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-eureka": { + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "locked": "1.1.1" + }, + "junit:junit": { + "locked": "4.12" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "locked": "1.9.11" + }, + "org.easymock:easymock": { + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.36" + } + } +} \ No newline at end of file diff --git a/ribbon-transport/dependencies.lock b/ribbon-transport/dependencies.lock new file mode 100644 index 000000000..b39c2e5a1 --- /dev/null +++ b/ribbon-transport/dependencies.lock @@ -0,0 +1,526 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.2" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.36" + } + }, + "testCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test" + ], + "locked": "19.0" + }, + "com.google.mockwebserver:mockwebserver": { + "locked": "20130706" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "0.7.6" + }, + "com.netflix.eureka:eureka-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.7.2" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-eureka": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-test": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "com.sun.jersey:jersey-server": { + "locked": "1.19.1" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.1.1" + }, + "junit:junit": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "4.12" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.9.11" + }, + "org.easymock:easymock": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.2" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test" + ], + "locked": "19.0" + }, + "com.google.mockwebserver:mockwebserver": { + "locked": "20130706" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "0.7.6" + }, + "com.netflix.eureka:eureka-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.7.2" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-eureka": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-test": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "com.sun.jersey:jersey-server": { + "locked": "1.19.1" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.1.1" + }, + "junit:junit": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "4.12" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.9.11" + }, + "org.easymock:easymock": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.36" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + } +} \ No newline at end of file diff --git a/ribbon/dependencies.lock b/ribbon/dependencies.lock new file mode 100644 index 000000000..e03574d04 --- /dev/null +++ b/ribbon/dependencies.lock @@ -0,0 +1,890 @@ +{ + "compileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.2" + } + }, + "examplesCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.2" + } + }, + "examplesRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.36" + } + }, + "runtimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "0.7.6" + }, + "com.netflix.hystrix:hystrix-core": { + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.36" + } + }, + "testCompileClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.google.mockwebserver:mockwebserver": { + "locked": "20130706" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "0.7.6" + }, + "com.netflix.eureka:eureka-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.7.2" + }, + "com.netflix.hystrix:hystrix-core": { + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-eureka": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-test": { + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.9" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.1.1" + }, + "junit:junit": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "4.12" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.9.11" + }, + "org.easymock:easymock": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.2" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + }, + "testRuntimeClasspath": { + "com.google.code.findbugs:annotations": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "2.0.0" + }, + "com.google.guava:guava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "19.0" + }, + "com.google.mockwebserver:mockwebserver": { + "locked": "20130706" + }, + "com.netflix.archaius:archaius-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "0.7.6" + }, + "com.netflix.eureka:eureka-client": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.7.2" + }, + "com.netflix.hystrix:hystrix-core": { + "locked": "1.4.3" + }, + "com.netflix.netflix-commons:netflix-commons-util": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.netflix-commons:netflix-statistics": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "0.1.1" + }, + "com.netflix.ribbon:ribbon-archaius": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-core": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-eureka": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-loadbalancer": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "project": true + }, + "com.netflix.ribbon:ribbon-test": { + "project": true + }, + "com.netflix.ribbon:ribbon-transport": { + "project": true + }, + "com.netflix.spectator:spectator-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer" + ], + "locked": "1.7.0" + }, + "commons-configuration:commons-configuration": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-eureka" + ], + "locked": "1.8" + }, + "commons-lang:commons-lang": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core" + ], + "locked": "2.6" + }, + "io.netty:netty-codec-http": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "4.0.27.Final" + }, + "io.reactivex:rxjava": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-test", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.0.10" + }, + "io.reactivex:rxnetty": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-contexts": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "io.reactivex:rxnetty-servo": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "0.4.9" + }, + "javax.inject:javax.inject": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1" + }, + "javax.ws.rs:jsr311-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.1.1" + }, + "junit:junit": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "4.12" + }, + "org.codehaus.jackson:jackson-mapper-asl": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.9.11" + }, + "org.easymock:easymock": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "3.2" + }, + "org.powermock:powermock-easymock-release-full": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-test" + ], + "locked": "1.6.2" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.ribbon:ribbon-archaius", + "com.netflix.ribbon:ribbon-core", + "com.netflix.ribbon:ribbon-eureka", + "com.netflix.ribbon:ribbon-loadbalancer", + "com.netflix.ribbon:ribbon-transport" + ], + "locked": "1.7.36" + }, + "org.slf4j:slf4j-log4j12": { + "locked": "1.7.2" + } + } +} \ No newline at end of file