jruby-druid 1.0.0.pre.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/CODE_OF_CONDUCT.md +49 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +9 -0
  9. data/Rakefile +6 -0
  10. data/benchmark.rb +43 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/jruby-druid.gemspec +31 -0
  14. data/lib/druid/README.md +20 -0
  15. data/lib/druid/client.rb +21 -0
  16. data/lib/druid/configuration.rb +51 -0
  17. data/lib/druid/connection.rb +64 -0
  18. data/lib/druid/errors.rb +21 -0
  19. data/lib/druid/logging.rb +1 -0
  20. data/lib/druid/node/broker.rb +18 -0
  21. data/lib/druid/node/coordinator.rb +108 -0
  22. data/lib/druid/node/overlord.rb +51 -0
  23. data/lib/druid/query/core.rb +8 -0
  24. data/lib/druid/query/datasource.rb +35 -0
  25. data/lib/druid/query/task.rb +7 -0
  26. data/lib/druid/version.rb +3 -0
  27. data/lib/druid/writer/base.rb +59 -0
  28. data/lib/druid/writer/tranquilizer.rb +48 -0
  29. data/lib/druid/writer/tranquilizer/aggregators.rb +15 -0
  30. data/lib/druid/writer/tranquilizer/base.rb +64 -0
  31. data/lib/druid/writer/tranquilizer/curator.rb +18 -0
  32. data/lib/druid/writer/tranquilizer/datapoint.rb +24 -0
  33. data/lib/druid/writer/tranquilizer/dimensions.rb +16 -0
  34. data/lib/druid/writer/tranquilizer/druid_beam_config.rb +40 -0
  35. data/lib/druid/writer/tranquilizer/druid_beams.rb +12 -0
  36. data/lib/druid/writer/tranquilizer/event_listener.rb +17 -0
  37. data/lib/druid/writer/tranquilizer/rollup.rb +23 -0
  38. data/lib/druid/writer/tranquilizer/timestamper.rb +13 -0
  39. data/lib/druid/writer/tranquilizer/tuning.rb +25 -0
  40. data/lib/jruby-druid.rb +35 -0
  41. data/vendor/quarantine/io.druid.tranquility-core-0.8.1.jar +0 -0
  42. data/vendor/quarantine/jline.jline-0.9.94.jar +0 -0
  43. data/vendor/tranquility/aopalliance.aopalliance-1.0.jar +0 -0
  44. data/vendor/tranquility/c3p0.c3p0-0.9.1.2.jar +0 -0
  45. data/vendor/tranquility/ch.qos.logback.logback-classic-1.1.2.jar +0 -0
  46. data/vendor/tranquility/ch.qos.logback.logback-core-1.1.2.jar +0 -0
  47. data/vendor/tranquility/com.101tec.zkclient-0.3.jar +0 -0
  48. data/vendor/tranquility/com.amazonaws.aws-java-sdk-1.10.21.jar +0 -0
  49. data/vendor/tranquility/com.amazonaws.aws-java-sdk-autoscaling-1.10.21.jar +0 -0
  50. data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudformation-1.10.21.jar +0 -0
  51. data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudfront-1.10.21.jar +0 -0
  52. data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudhsm-1.10.21.jar +0 -0
  53. data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudsearch-1.10.21.jar +0 -0
  54. data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudtrail-1.10.21.jar +0 -0
  55. data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudwatch-1.10.21.jar +0 -0
  56. data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudwatchmetrics-1.10.21.jar +0 -0
  57. data/vendor/tranquility/com.amazonaws.aws-java-sdk-codecommit-1.10.21.jar +0 -0
  58. data/vendor/tranquility/com.amazonaws.aws-java-sdk-codedeploy-1.10.21.jar +0 -0
  59. data/vendor/tranquility/com.amazonaws.aws-java-sdk-codepipeline-1.10.21.jar +0 -0
  60. data/vendor/tranquility/com.amazonaws.aws-java-sdk-cognitoidentity-1.10.21.jar +0 -0
  61. data/vendor/tranquility/com.amazonaws.aws-java-sdk-cognitosync-1.10.21.jar +0 -0
  62. data/vendor/tranquility/com.amazonaws.aws-java-sdk-config-1.10.21.jar +0 -0
  63. data/vendor/tranquility/com.amazonaws.aws-java-sdk-core-1.10.21.jar +0 -0
  64. data/vendor/tranquility/com.amazonaws.aws-java-sdk-datapipeline-1.10.21.jar +0 -0
  65. data/vendor/tranquility/com.amazonaws.aws-java-sdk-devicefarm-1.10.21.jar +0 -0
  66. data/vendor/tranquility/com.amazonaws.aws-java-sdk-directconnect-1.10.21.jar +0 -0
  67. data/vendor/tranquility/com.amazonaws.aws-java-sdk-directory-1.10.21.jar +0 -0
  68. data/vendor/tranquility/com.amazonaws.aws-java-sdk-dynamodb-1.10.21.jar +0 -0
  69. data/vendor/tranquility/com.amazonaws.aws-java-sdk-ec2-1.10.21.jar +0 -0
  70. data/vendor/tranquility/com.amazonaws.aws-java-sdk-ecs-1.10.21.jar +0 -0
  71. data/vendor/tranquility/com.amazonaws.aws-java-sdk-efs-1.10.21.jar +0 -0
  72. data/vendor/tranquility/com.amazonaws.aws-java-sdk-elasticache-1.10.21.jar +0 -0
  73. data/vendor/tranquility/com.amazonaws.aws-java-sdk-elasticbeanstalk-1.10.21.jar +0 -0
  74. data/vendor/tranquility/com.amazonaws.aws-java-sdk-elasticloadbalancing-1.10.21.jar +0 -0
  75. data/vendor/tranquility/com.amazonaws.aws-java-sdk-elastictranscoder-1.10.21.jar +0 -0
  76. data/vendor/tranquility/com.amazonaws.aws-java-sdk-emr-1.10.21.jar +0 -0
  77. data/vendor/tranquility/com.amazonaws.aws-java-sdk-glacier-1.10.21.jar +0 -0
  78. data/vendor/tranquility/com.amazonaws.aws-java-sdk-iam-1.10.21.jar +0 -0
  79. data/vendor/tranquility/com.amazonaws.aws-java-sdk-importexport-1.10.21.jar +0 -0
  80. data/vendor/tranquility/com.amazonaws.aws-java-sdk-kinesis-1.10.21.jar +0 -0
  81. data/vendor/tranquility/com.amazonaws.aws-java-sdk-kms-1.10.21.jar +0 -0
  82. data/vendor/tranquility/com.amazonaws.aws-java-sdk-lambda-1.10.21.jar +0 -0
  83. data/vendor/tranquility/com.amazonaws.aws-java-sdk-logs-1.10.21.jar +0 -0
  84. data/vendor/tranquility/com.amazonaws.aws-java-sdk-machinelearning-1.10.21.jar +0 -0
  85. data/vendor/tranquility/com.amazonaws.aws-java-sdk-opsworks-1.10.21.jar +0 -0
  86. data/vendor/tranquility/com.amazonaws.aws-java-sdk-rds-1.10.21.jar +0 -0
  87. data/vendor/tranquility/com.amazonaws.aws-java-sdk-redshift-1.10.21.jar +0 -0
  88. data/vendor/tranquility/com.amazonaws.aws-java-sdk-route53-1.10.21.jar +0 -0
  89. data/vendor/tranquility/com.amazonaws.aws-java-sdk-s3-1.10.21.jar +0 -0
  90. data/vendor/tranquility/com.amazonaws.aws-java-sdk-ses-1.10.21.jar +0 -0
  91. data/vendor/tranquility/com.amazonaws.aws-java-sdk-simpledb-1.10.21.jar +0 -0
  92. data/vendor/tranquility/com.amazonaws.aws-java-sdk-simpleworkflow-1.10.21.jar +0 -0
  93. data/vendor/tranquility/com.amazonaws.aws-java-sdk-sns-1.10.21.jar +0 -0
  94. data/vendor/tranquility/com.amazonaws.aws-java-sdk-sqs-1.10.21.jar +0 -0
  95. data/vendor/tranquility/com.amazonaws.aws-java-sdk-ssm-1.10.21.jar +0 -0
  96. data/vendor/tranquility/com.amazonaws.aws-java-sdk-storagegateway-1.10.21.jar +0 -0
  97. data/vendor/tranquility/com.amazonaws.aws-java-sdk-sts-1.10.21.jar +0 -0
  98. data/vendor/tranquility/com.amazonaws.aws-java-sdk-support-1.10.21.jar +0 -0
  99. data/vendor/tranquility/com.amazonaws.aws-java-sdk-swf-libraries-1.10.21.jar +0 -0
  100. data/vendor/tranquility/com.amazonaws.aws-java-sdk-workspaces-1.10.21.jar +0 -0
  101. data/vendor/tranquility/com.fasterxml.classmate-1.0.0.jar +0 -0
  102. data/vendor/tranquility/com.fasterxml.jackson.core.jackson-annotations-2.4.6.jar +0 -0
  103. data/vendor/tranquility/com.fasterxml.jackson.core.jackson-core-2.4.6.jar +0 -0
  104. data/vendor/tranquility/com.fasterxml.jackson.core.jackson-databind-2.4.6.jar +0 -0
  105. data/vendor/tranquility/com.fasterxml.jackson.dataformat.jackson-dataformat-smile-2.4.6.jar +0 -0
  106. data/vendor/tranquility/com.fasterxml.jackson.datatype.jackson-datatype-guava-2.4.6.jar +0 -0
  107. data/vendor/tranquility/com.fasterxml.jackson.datatype.jackson-datatype-joda-2.4.6.jar +0 -0
  108. data/vendor/tranquility/com.fasterxml.jackson.jaxrs.jackson-jaxrs-base-2.4.6.jar +0 -0
  109. data/vendor/tranquility/com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider-2.4.6.jar +0 -0
  110. data/vendor/tranquility/com.fasterxml.jackson.jaxrs.jackson-jaxrs-smile-provider-2.4.6.jar +0 -0
  111. data/vendor/tranquility/com.fasterxml.jackson.module.jackson-module-jaxb-annotations-2.4.6.jar +0 -0
  112. data/vendor/tranquility/com.fasterxml.jackson.module.jackson-module-scala_2.11-2.4.5.jar +0 -0
  113. data/vendor/tranquility/com.google.code.findbugs.annotations-2.0.3.jar +0 -0
  114. data/vendor/tranquility/com.google.code.findbugs.jsr305-2.0.1.jar +0 -0
  115. data/vendor/tranquility/com.google.guava.guava-16.0.1.jar +0 -0
  116. data/vendor/tranquility/com.google.http-client.google-http-client-1.15.0-rc.jar +0 -0
  117. data/vendor/tranquility/com.google.http-client.google-http-client-jackson2-1.15.0-rc.jar +0 -0
  118. data/vendor/tranquility/com.google.inject.extensions.guice-multibindings-4.0.jar +0 -0
  119. data/vendor/tranquility/com.google.inject.extensions.guice-servlet-4.0.jar +0 -0
  120. data/vendor/tranquility/com.google.inject.guice-4.0.jar +0 -0
  121. data/vendor/tranquility/com.google.protobuf.protobuf-java-2.5.0.jar +0 -0
  122. data/vendor/tranquility/com.googlecode.juniversalchardet.juniversalchardet-1.0.3.jar +0 -0
  123. data/vendor/tranquility/com.h2database.h2-1.3.158.jar +0 -0
  124. data/vendor/tranquility/com.ibm.icu.icu4j-4.8.1.jar +0 -0
  125. data/vendor/tranquility/com.ircclouds.irc.irc-api-1.0-0014.jar +0 -0
  126. data/vendor/tranquility/com.jamesmurty.utils.java-xmlbuilder-1.1.jar +0 -0
  127. data/vendor/tranquility/com.jayway.jsonpath.json-path-2.1.0.jar +0 -0
  128. data/vendor/tranquility/com.maxmind.geoip2.geoip2-0.4.0.jar +0 -0
  129. data/vendor/tranquility/com.maxmind.maxminddb.maxminddb-0.2.0.jar +0 -0
  130. data/vendor/tranquility/com.metamx.bytebuffer-collections-0.2.4.jar +0 -0
  131. data/vendor/tranquility/com.metamx.emitter-0.3.6.jar +0 -0
  132. data/vendor/tranquility/com.metamx.extendedset-1.3.9.jar +0 -0
  133. data/vendor/tranquility/com.metamx.http-client-1.0.4.jar +0 -0
  134. data/vendor/tranquility/com.metamx.java-util-0.27.7.jar +0 -0
  135. data/vendor/tranquility/com.metamx.loglady_2.11-1.1.0-mmx.jar +0 -0
  136. data/vendor/tranquility/com.metamx.scala-util_2.11-1.11.6.jar +0 -0
  137. data/vendor/tranquility/com.metamx.server-metrics-0.2.8.jar +0 -0
  138. data/vendor/tranquility/com.ning.compress-lzf-1.0.3.jar +0 -0
  139. data/vendor/tranquility/com.squareup.okhttp.okhttp-1.0.2.jar +0 -0
  140. data/vendor/tranquility/com.sun.jersey.contribs.jersey-guice-1.19.jar +0 -0
  141. data/vendor/tranquility/com.sun.jersey.jersey-core-1.19.jar +0 -0
  142. data/vendor/tranquility/com.sun.jersey.jersey-server-1.19.jar +0 -0
  143. data/vendor/tranquility/com.thoughtworks.paranamer.paranamer-2.6.jar +0 -0
  144. data/vendor/tranquility/com.twitter.finagle-core_2.11-6.31.0.jar +0 -0
  145. data/vendor/tranquility/com.twitter.finagle-http_2.11-6.31.0.jar +0 -0
  146. data/vendor/tranquility/com.twitter.jsr166e-1.0.0.jar +0 -0
  147. data/vendor/tranquility/com.twitter.util-app_2.11-6.30.0.jar +0 -0
  148. data/vendor/tranquility/com.twitter.util-cache_2.11-6.30.0.jar +0 -0
  149. data/vendor/tranquility/com.twitter.util-codec_2.11-6.30.0.jar +0 -0
  150. data/vendor/tranquility/com.twitter.util-collection_2.11-6.30.0.jar +0 -0
  151. data/vendor/tranquility/com.twitter.util-core_2.11-6.30.0.jar +0 -0
  152. data/vendor/tranquility/com.twitter.util-function_2.11-6.30.0.jar +0 -0
  153. data/vendor/tranquility/com.twitter.util-hashing_2.11-6.30.0.jar +0 -0
  154. data/vendor/tranquility/com.twitter.util-jvm_2.11-6.30.0.jar +0 -0
  155. data/vendor/tranquility/com.twitter.util-lint_2.11-6.30.0.jar +0 -0
  156. data/vendor/tranquility/com.twitter.util-logging_2.11-6.30.0.jar +0 -0
  157. data/vendor/tranquility/com.twitter.util-registry_2.11-6.30.0.jar +0 -0
  158. data/vendor/tranquility/com.twitter.util-stats_2.11-6.30.0.jar +0 -0
  159. data/vendor/tranquility/com.yammer.metrics.metrics-core-2.2.0.jar +0 -0
  160. data/vendor/tranquility/commons-cli.commons-cli-1.2.jar +0 -0
  161. data/vendor/tranquility/commons-codec.commons-codec-1.9.jar +0 -0
  162. data/vendor/tranquility/commons-collections.commons-collections-3.2.1.jar +0 -0
  163. data/vendor/tranquility/commons-io.commons-io-2.4.jar +0 -0
  164. data/vendor/tranquility/commons-lang.commons-lang-2.6.jar +0 -0
  165. data/vendor/tranquility/commons-logging.commons-logging-1.1.3.jar +0 -0
  166. data/vendor/tranquility/commons-pool.commons-pool-1.6.jar +0 -0
  167. data/vendor/tranquility/eu.medsea.mimeutil.mime-util-2.1.3.jar +0 -0
  168. data/vendor/tranquility/io.airlift.airline-0.7.jar +0 -0
  169. data/vendor/tranquility/io.druid.druid-api-0.3.16.jar +0 -0
  170. data/vendor/tranquility/io.druid.druid-aws-common-0.9.0.jar +0 -0
  171. data/vendor/tranquility/io.druid.druid-common-0.9.0.jar +0 -0
  172. data/vendor/tranquility/io.druid.druid-console-0.0.2.jar +0 -0
  173. data/vendor/tranquility/io.druid.druid-processing-0.9.0.jar +0 -0
  174. data/vendor/tranquility/io.druid.druid-server-0.9.0.jar +0 -0
  175. data/vendor/tranquility/io.druid.tranquility-distribution-0.8.1.jar +0 -0
  176. data/vendor/tranquility/io.druid.tranquility-kafka-0.8.1.jar +0 -0
  177. data/vendor/tranquility/io.druid.tranquility-server-0.8.1.jar +0 -0
  178. data/vendor/tranquility/io.netty.netty-3.10.5.Final.jar +0 -0
  179. data/vendor/tranquility/io.tesla.aether.aether-connector-okhttp-0.0.9.jar +0 -0
  180. data/vendor/tranquility/io.tesla.aether.tesla-aether-0.0.5.jar +0 -0
  181. data/vendor/tranquility/javax.activation.activation-1.1.1.jar +0 -0
  182. data/vendor/tranquility/javax.el.javax.el-api-3.0.0.jar +0 -0
  183. data/vendor/tranquility/javax.inject.javax.inject-1.jar +0 -0
  184. data/vendor/tranquility/javax.servlet.javax.servlet-api-3.1.0.jar +0 -0
  185. data/vendor/tranquility/javax.validation.validation-api-1.1.0.Final.jar +0 -0
  186. data/vendor/tranquility/javax.ws.rs.jsr311-api-1.1.1.jar +0 -0
  187. data/vendor/tranquility/joda-time.joda-time-2.8.2.jar +0 -0
  188. data/vendor/tranquility/junit.junit-3.8.1.jar +0 -0
  189. data/vendor/tranquility/mysql.mysql-connector-java-5.1.18.jar +0 -0
  190. data/vendor/tranquility/net.iharder.base64-2.3.8.jar +0 -0
  191. data/vendor/tranquility/net.java.dev.jets3t.jets3t-0.9.4.jar +0 -0
  192. data/vendor/tranquility/net.jpountz.lz4.lz4-1.3.0.jar +0 -0
  193. data/vendor/tranquility/net.sf.jopt-simple.jopt-simple-3.2.jar +0 -0
  194. data/vendor/tranquility/net.sf.opencsv.opencsv-2.3.jar +0 -0
  195. data/vendor/tranquility/net.spy.spymemcached-2.11.7.jar +0 -0
  196. data/vendor/tranquility/org.abego.treelayout.org.abego.treelayout.core-1.0.1.jar +0 -0
  197. data/vendor/tranquility/org.antlr.antlr4-runtime-4.0.jar +0 -0
  198. data/vendor/tranquility/org.apache.commons.commons-dbcp2-2.0.1.jar +0 -0
  199. data/vendor/tranquility/org.apache.commons.commons-pool2-2.2.jar +0 -0
  200. data/vendor/tranquility/org.apache.curator.curator-client-2.9.1.jar +0 -0
  201. data/vendor/tranquility/org.apache.curator.curator-framework-2.9.1.jar +0 -0
  202. data/vendor/tranquility/org.apache.curator.curator-recipes-2.9.1.jar +0 -0
  203. data/vendor/tranquility/org.apache.curator.curator-x-discovery-2.9.1.jar +0 -0
  204. data/vendor/tranquility/org.apache.derby.derby-10.11.1.1.jar +0 -0
  205. data/vendor/tranquility/org.apache.derby.derbyclient-10.11.1.1.jar +0 -0
  206. data/vendor/tranquility/org.apache.derby.derbynet-10.11.1.1.jar +0 -0
  207. data/vendor/tranquility/org.apache.httpcomponents.httpclient-4.5.1.jar +0 -0
  208. data/vendor/tranquility/org.apache.httpcomponents.httpcore-4.4.3.jar +0 -0
  209. data/vendor/tranquility/org.apache.kafka.kafka-clients-0.8.2.2.jar +0 -0
  210. data/vendor/tranquility/org.apache.kafka.kafka_2.11-0.8.2.2.jar +0 -0
  211. data/vendor/tranquility/org.apache.logging.log4j.log4j-api-2.4.jar +0 -0
  212. data/vendor/tranquility/org.apache.logging.log4j.log4j-jul-2.5.jar +0 -0
  213. data/vendor/tranquility/org.apache.logging.log4j.log4j-to-slf4j-2.4.jar +0 -0
  214. data/vendor/tranquility/org.apache.maven.maven-aether-provider-3.1.1.jar +0 -0
  215. data/vendor/tranquility/org.apache.maven.maven-model-3.1.1.jar +0 -0
  216. data/vendor/tranquility/org.apache.maven.maven-model-builder-3.1.1.jar +0 -0
  217. data/vendor/tranquility/org.apache.maven.maven-repository-metadata-3.1.1.jar +0 -0
  218. data/vendor/tranquility/org.apache.maven.maven-settings-3.1.1.jar +0 -0
  219. data/vendor/tranquility/org.apache.maven.maven-settings-builder-3.1.1.jar +0 -0
  220. data/vendor/tranquility/org.apache.maven.wagon.wagon-provider-api-2.4.jar +0 -0
  221. data/vendor/tranquility/org.apache.zookeeper.zookeeper-3.4.6.jar +0 -0
  222. data/vendor/tranquility/org.bouncycastle.bcprov-jdk15on-1.52.jar +0 -0
  223. data/vendor/tranquility/org.clapper.grizzled-slf4j_2.11-1.0.2.jar +0 -0
  224. data/vendor/tranquility/org.codehaus.jackson.jackson-core-asl-1.9.13.jar +0 -0
  225. data/vendor/tranquility/org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar +0 -0
  226. data/vendor/tranquility/org.codehaus.plexus.plexus-interpolation-1.19.jar +0 -0
  227. data/vendor/tranquility/org.codehaus.plexus.plexus-utils-3.0.15.jar +0 -0
  228. data/vendor/tranquility/org.eclipse.aether.aether-api-0.9.0.M2.jar +0 -0
  229. data/vendor/tranquility/org.eclipse.aether.aether-connector-file-0.9.0.M2.jar +0 -0
  230. data/vendor/tranquility/org.eclipse.aether.aether-impl-0.9.0.M2.jar +0 -0
  231. data/vendor/tranquility/org.eclipse.aether.aether-spi-0.9.0.M2.jar +0 -0
  232. data/vendor/tranquility/org.eclipse.aether.aether-util-0.9.0.M2.jar +0 -0
  233. data/vendor/tranquility/org.eclipse.jetty.jetty-client-9.2.5.v20141112.jar +0 -0
  234. data/vendor/tranquility/org.eclipse.jetty.jetty-continuation-9.2.5.v20141112.jar +0 -0
  235. data/vendor/tranquility/org.eclipse.jetty.jetty-http-9.2.5.v20141112.jar +0 -0
  236. data/vendor/tranquility/org.eclipse.jetty.jetty-io-9.2.5.v20141112.jar +0 -0
  237. data/vendor/tranquility/org.eclipse.jetty.jetty-proxy-9.2.5.v20141112.jar +0 -0
  238. data/vendor/tranquility/org.eclipse.jetty.jetty-security-9.2.5.v20141112.jar +0 -0
  239. data/vendor/tranquility/org.eclipse.jetty.jetty-server-9.2.5.v20141112.jar +0 -0
  240. data/vendor/tranquility/org.eclipse.jetty.jetty-servlet-9.2.5.v20141112.jar +0 -0
  241. data/vendor/tranquility/org.eclipse.jetty.jetty-servlets-9.2.5.v20141112.jar +0 -0
  242. data/vendor/tranquility/org.eclipse.jetty.jetty-util-9.2.5.v20141112.jar +0 -0
  243. data/vendor/tranquility/org.glassfish.javax.el-3.0.0.jar +0 -0
  244. data/vendor/tranquility/org.hibernate.hibernate-validator-5.1.3.Final.jar +0 -0
  245. data/vendor/tranquility/org.jboss.logging.jboss-logging-3.1.3.GA.jar +0 -0
  246. data/vendor/tranquility/org.jdbi.jdbi-2.63.1.jar +0 -0
  247. data/vendor/tranquility/org.joda.joda-convert-1.7.jar +0 -0
  248. data/vendor/tranquility/org.mapdb.mapdb-1.0.8.jar +0 -0
  249. data/vendor/tranquility/org.mozilla.rhino-1.7R5.jar +0 -0
  250. data/vendor/tranquility/org.roaringbitmap.RoaringBitmap-0.5.16.jar +0 -0
  251. data/vendor/tranquility/org.scala-lang.modules.scala-parser-combinators_2.11-1.0.4.jar +0 -0
  252. data/vendor/tranquility/org.scala-lang.modules.scala-xml_2.11-1.0.3.jar +0 -0
  253. data/vendor/tranquility/org.scala-lang.scala-library-2.11.7.jar +0 -0
  254. data/vendor/tranquility/org.scala-lang.scala-reflect-2.11.2.jar +0 -0
  255. data/vendor/tranquility/org.scalaj.scalaj-time_2.11-0.5.jar +0 -0
  256. data/vendor/tranquility/org.scalatra.rl.rl_2.11-0.4.10.jar +0 -0
  257. data/vendor/tranquility/org.scalatra.scalatra-common_2.11-2.3.1.jar +0 -0
  258. data/vendor/tranquility/org.scalatra.scalatra_2.11-2.3.1.jar +0 -0
  259. data/vendor/tranquility/org.skife.config.config-magic-0.9.jar +0 -0
  260. data/vendor/tranquility/org.slf4j.jcl-over-slf4j-1.7.12.jar +0 -0
  261. data/vendor/tranquility/org.slf4j.jul-to-slf4j-1.7.12.jar +0 -0
  262. data/vendor/tranquility/org.slf4j.log4j-over-slf4j-1.7.12.jar +0 -0
  263. data/vendor/tranquility/org.slf4j.slf4j-api-1.7.12.jar +0 -0
  264. data/vendor/tranquility/org.xerial.snappy.snappy-java-1.1.1.7.jar +0 -0
  265. data/vendor/tranquility/org.yaml.snakeyaml-1.11.jar +0 -0
  266. data/vendor/tranquility/tranquility-core_2.10-0.8.2-SNAPSHOT.jar +0 -0
  267. data/vendor/tranquility/xpp3.xpp3-1.1.4c.jar +0 -0
  268. metadata +424 -0
@@ -0,0 +1,108 @@
1
+ module Druid
2
+ module Node
3
+ class Coordinator
4
+ DATASOURCES_PATH = '/druid/coordinator/v1/datasources/'.freeze
5
+
6
+ attr_reader :connection
7
+ def initialize(config)
8
+ @connection = Druid::Connection.new(config.coordinator_uri)
9
+ end
10
+
11
+ def datasource_info(datasource_name)
12
+ response = connection.get(DATASOURCES_PATH + datasource_name.to_s, full: true)
13
+ raise ConnectionError, 'Unable to retrieve datasource information.' unless response.code.to_i == 200
14
+ JSON.parse(response.body)
15
+ end
16
+
17
+ def disable_datasource(datasource_name)
18
+ # response = connection.delete(DATASOURCES_PATH + datasource_name.to_s)
19
+ # raise ConnectionError, 'Unable to disable datasource' unless response.code.to_i == 200
20
+ # return true if response.code.to_i == 200
21
+
22
+ # This is a workaround for https://github.com/druid-io/druid/issues/3154
23
+ disable_segments(datasource_name)
24
+ bounded_wait_for_segments_disable(datasource_name)
25
+ true
26
+ end
27
+
28
+ # TODO: This should either be private or moved to datasource
29
+ def datasource_enabled?(datasource_name)
30
+ list_datasources.include? datasource_name
31
+ end
32
+
33
+ # TODO: This should either be private or moved to datasource
34
+ def datasource_has_segments?(datasource_name)
35
+ list_segments(datasource_name).any?
36
+ end
37
+
38
+ def disable_segment(datasource_name, segment)
39
+ response = connection.delete(DATASOURCES_PATH + datasource_name + '/segments/' + segment)
40
+ raise ConnectionError, "Unable to disable #{segment}" unless response.code.to_i == 200
41
+ true
42
+ end
43
+
44
+ # TODO: This should either be private or moved to datasource
45
+ def disable_segments(datasource_name)
46
+ segments = list_segments(datasource_name)
47
+ segments.each{ |segment| disable_segment(datasource_name, segment) }
48
+ end
49
+
50
+ def issue_kill_task(datasource_name, interval)
51
+ response = connection.delete(DATASOURCES_PATH + datasource_name + '/intervals/' + interval)
52
+ raise ConnectionError, 'Unable to issue kill task.' unless response.code.to_i == 200
53
+ true
54
+ end
55
+
56
+ def list_datasources(url_params = {})
57
+ response = connection.get(DATASOURCES_PATH, url_params)
58
+ JSON.parse(response.body) if response.code.to_i == 200
59
+ end
60
+
61
+ def list_segments(datasource_name)
62
+ response = connection.get(DATASOURCES_PATH + datasource_name + '/segments', full: true)
63
+ case response.code.to_i
64
+ when 200
65
+ JSON.parse(response.body).map{ |segment| segment['identifier'] }
66
+ when 204
67
+ []
68
+ else
69
+ raise ConnectionError, "Unable to list segments for #{datasource_name}"
70
+ end
71
+ end
72
+
73
+ private
74
+
75
+ def bounded_wait_for_disable(datasource_name)
76
+ condition = datasource_enabled?(datasource_name)
77
+ attempts = 0
78
+ max = 10
79
+
80
+ while(condition) do
81
+ attempts += 1
82
+ sleep 1
83
+ condition = datasource_enabled?(datasource_name)
84
+ break if attempts >= max
85
+ end
86
+
87
+ raise ClientError, 'Datasource should be disabled, but is still enabled.' unless condition
88
+ true
89
+ end
90
+
91
+ def bounded_wait_for_segments_disable(datasource_name)
92
+ condition = datasource_has_segments?(datasource_name)
93
+ attempts = 0
94
+ max = 60
95
+
96
+ while(condition) do
97
+ attempts += 1
98
+ sleep 1
99
+ condition = datasource_has_segments?(datasource_name)
100
+ break if attempts >= max
101
+ end
102
+
103
+ raise ClientError, 'Segments should be disabled, but are still enabled.' if condition
104
+ true
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,51 @@
1
+ module Druid
2
+ module Node
3
+ class Overlord
4
+ INDEXER_PATH = '/druid/indexer/v1/'.freeze
5
+ RUNNING_TASKS_PATH = (INDEXER_PATH + 'runningTasks').freeze
6
+ TASK_PATH = INDEXER_PATH + 'task/'
7
+
8
+ attr_reader :connection
9
+ def initialize(config)
10
+ @connection = Druid::Connection.new(config.overlord_uri)
11
+ end
12
+
13
+ def running_tasks(datasource_name = nil)
14
+ response = connection.get(RUNNING_TASKS_PATH)
15
+ raise ConnectionError, 'Could not retrieve running tasks' unless response.code.to_i == 200
16
+ tasks = JSON.parse(response.body).map{|task| task['id']}
17
+ tasks.select!{ |task| task.include? datasource_name } if datasource_name
18
+ tasks ? tasks : []
19
+ end
20
+
21
+ def shutdown_task(task)
22
+ response = connection.post(TASK_PATH + task + '/shutdown')
23
+ raise ConnectionError, 'Unable to shutdown task' unless response.code.to_i == 200
24
+ bounded_wait_for_shutdown(task)
25
+ end
26
+
27
+ def shutdown_tasks(datasource_name = nil)
28
+ tasks = running_tasks(datasource_name)
29
+ tasks.each{|task| shutdown_task(task)}
30
+ end
31
+
32
+ private
33
+
34
+ def bounded_wait_for_shutdown(task)
35
+ condition = !(running_tasks.include? task)
36
+ attempts = 0
37
+ max = 10
38
+
39
+ until(condition) do
40
+ attempts += 1
41
+ sleep 1
42
+ condition = !(running_tasks.include? task)
43
+ break if attempts >= max
44
+ end
45
+
46
+ raise ClientError, 'Task did not shutdown.' unless condition
47
+ true
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,8 @@
1
+ module Druid
2
+ module Query
3
+ module Core
4
+ delegate :query, to: :broker
5
+ delegate :write_point, to: :writer
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,35 @@
1
+ module Druid
2
+ module Query
3
+ module Datasource
4
+ java_import org.apache.zookeeper.ZKUtil
5
+
6
+ ZOOKEEPER_BEAMS_PATH = '/tranquility/beams/druid:overlord'.freeze
7
+
8
+ delegate :datasource_enabled?,
9
+ :datasource_info,
10
+ :disable_datasource,
11
+ :list_datasources,
12
+ to: :coordinator
13
+
14
+ def delete_datasource(datasource_name)
15
+ shutdown_tasks(datasource_name)
16
+ datasource_enabled?(datasource_name) ? disable_datasource(datasource_name) : true
17
+ writer.remove_tranquilizer_for_datasource(datasource_name)
18
+ delete_zookeeper_nodes(datasource_name) if config.strong_delete
19
+ end
20
+
21
+ def delete_datasources
22
+ list_datasources.each{ |datasource_name| delete_datasource(datasource_name) }
23
+ end
24
+
25
+ private
26
+
27
+ def delete_zookeeper_nodes(datasource_name)
28
+ curator = Druid::Writer::Tranquilizer::Curator.build(config)
29
+ curator.start
30
+ zk = curator.getZookeeperClient.getZooKeeper
31
+ ZKUtil.deleteRecursive(zk, ZOOKEEPER_BEAMS_PATH + "/#{datasource_name}")
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,7 @@
1
+ module Druid
2
+ module Query
3
+ module Task
4
+ delegate :shutdown_tasks, to: :overlord
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module JrubyDruid
2
+ VERSION = '1.0.0-rc2'
3
+ end
@@ -0,0 +1,59 @@
1
+ module Druid
2
+ module Writer
3
+ class Base
4
+ attr_accessor :tranquilizers
5
+ attr_reader :config
6
+
7
+ def initialize(config)
8
+ @config = config
9
+ @tranquilizers = []
10
+ end
11
+
12
+ def remove_tranquilizer_for_datasource(datasource)
13
+ tranquilizer = tranquilizer_for_datasource(datasource)
14
+ remove_tranquilizer(tranquilizer) if tranquilizer
15
+ end
16
+
17
+ def write_point(datasource, datapoint)
18
+ datapoint = Druid::Writer::Tranquilizer::Datapoint.new(datapoint)
19
+ sender = get_tranquilizer(datasource, datapoint)
20
+ sender.send(datapoint)
21
+ end
22
+
23
+ private
24
+
25
+ def build_tranquilizer(datasource, datapoint)
26
+ Druid::Writer::Tranquilizer::Base.new({config: config, datasource: datasource, datapoint: datapoint})
27
+ end
28
+
29
+ def get_tranquilizer(datasource, datapoint)
30
+ tranquilizer = tranquilizer_for_datasource(datasource)
31
+
32
+ unless has_current_schema?(tranquilizer, datapoint)
33
+ remove_tranquilizer(tranquilizer) if tranquilizer
34
+ tranquilizer = build_tranquilizer(datasource, datapoint)
35
+ tranquilizers << tranquilizer
36
+ end
37
+
38
+ tranquilizer
39
+ end
40
+
41
+ def has_current_schema?(tranquilizer, datapoint)
42
+ return false unless tranquilizer
43
+ dimensions = tranquilizer.rollup.dimensions.specMap["dimensions"].to_a
44
+ aggregators = tranquilizer.rollup.aggregators
45
+ metrics = Java::ScalaCollection::JavaConverters.seqAsJavaListConverter(aggregators).asJava.to_a.map{ |metric| metric.getFieldName }
46
+ dimensions == datapoint.dimensions.keys && metrics == datapoint.metrics.keys
47
+ end
48
+
49
+ def remove_tranquilizer(tranquilizer)
50
+ tranquilizers.delete(tranquilizer)
51
+ tranquilizer.stop
52
+ end
53
+
54
+ def tranquilizer_for_datasource(datasource)
55
+ tranquilizers.detect{ |t| t.datasource == datasource }
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,48 @@
1
+ module Druid
2
+ module Writer
3
+ module Tranquilizer
4
+ class << self
5
+ def ch
6
+ Java::Ch
7
+ end
8
+
9
+ def io
10
+ Java::Io
11
+ end
12
+ end
13
+
14
+ java_import com.google.common.collect.ImmutableList
15
+ java_import com.google.common.collect.ImmutableMap
16
+ java_import ch.qos.logback.classic.Level
17
+ java_import ch.qos.logback.classic.encoder.PatternLayoutEncoder
18
+ java_import ch.qos.logback.core.FileAppender
19
+ java_import com.metamx.tranquility.beam.ClusteredBeamTuning
20
+ java_import io.druid.query.aggregation.LongSumAggregatorFactory
21
+ java_import io.druid.granularity.QueryGranularity
22
+ java_import io.druid.data.input.impl.TimestampSpec
23
+ java_import org.apache.curator.framework.CuratorFrameworkFactory
24
+ java_import org.slf4j.LoggerFactory
25
+ java_import org.slf4j.Logger
26
+ java_import Java::ScalaCollection::JavaConverters
27
+
28
+ logger = Druid::Writer::Tranquilizer::LoggerFactory.getLogger(Druid::Writer::Tranquilizer::Logger.ROOT_LOGGER_NAME)
29
+ logger.detachAndStopAllAppenders
30
+
31
+ appender = Druid::Writer::Tranquilizer::FileAppender.new
32
+ context = logger.getLoggerContext
33
+ encoder = Druid::Writer::Tranquilizer::PatternLayoutEncoder.new
34
+
35
+ encoder.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n")
36
+ encoder.setContext(context)
37
+ encoder.start
38
+
39
+ appender.setFile('jruby-druid.log')
40
+ appender.setEncoder(encoder)
41
+ appender.setContext(context)
42
+ appender.start
43
+
44
+ logger.addAppender(appender)
45
+ logger.setLevel(Druid::Writer::Tranquilizer::Level::TRACE)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,15 @@
1
+ module Druid
2
+ module Writer
3
+ module Tranquilizer
4
+ class Aggregators
5
+ class << self
6
+ def build(metrics)
7
+ aggs = []
8
+ metrics.keys.each{ |metric_name| aggs << LongSumAggregatorFactory.new(metric_name, metric_name) }
9
+ ImmutableList.of(*aggs)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,64 @@
1
+ # Based on Java Example below
2
+ # https://github.com/gianm/tranquility-example/blob/master/src/main/java/io/imply/tranquility/JavaExample.java
3
+
4
+ module Druid
5
+ module Writer
6
+ module Tranquilizer
7
+ class Base
8
+ attr_reader :config, :curator, :datasource, :rollup, :service, :tuning
9
+
10
+ def initialize(params)
11
+ @config = params[:config]
12
+ @datasource = params[:datasource].to_s
13
+ @rollup = Druid::Writer::Tranquilizer::Rollup.build(config, params[:datapoint])
14
+ @tuning = Druid::Writer::Tranquilizer::Tuning.build(config)
15
+ @curator = Druid::Writer::Tranquilizer::Curator.build(config)
16
+ @service = create_service
17
+
18
+ start
19
+ end
20
+
21
+ def send(datapoint)
22
+ service.send(argument_map(datapoint)).addEventListener(EventListener.new)
23
+ end
24
+
25
+ def start
26
+ curator.start
27
+ service.start
28
+ end
29
+
30
+ def stop
31
+ service.flush
32
+ service.stop
33
+ curator.close
34
+ end
35
+
36
+ private
37
+
38
+ def argument_map(datapoint)
39
+ args = datapoint.timestamp.
40
+ merge(datapoint.dimensions).
41
+ merge(datapoint.metrics)
42
+
43
+ ImmutableMap.builder.putAll(args).build
44
+ end
45
+
46
+ def create_service
47
+ timestamper = Timestamper.new
48
+ timestamp_spec = TimestampSpec.new("timestamp", "auto", nil)
49
+
50
+ builder = DruidBeams.
51
+ timestamper_builder(timestamper).
52
+ curator(curator).
53
+ discoveryPath(config.discovery_path).
54
+ location(com.metamx.tranquility.druid.DruidLocation.create(config.index_service, datasource)).
55
+ timestampSpec(timestamp_spec).
56
+ rollup(rollup).
57
+ tuning(tuning)
58
+ builder = builder.druidBeamConfig(DruidBeamConfig.build(true)) if config.strong_delete
59
+ builder.buildTranquilizer
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,18 @@
1
+ module Druid
2
+ module Writer
3
+ module Tranquilizer
4
+ class Curator
5
+ class << self
6
+ def build(config)
7
+ bounded_retry = org.apache.curator.retry.BoundedExponentialBackoffRetry.new(100, 30000, 29)
8
+ CuratorFrameworkFactory.
9
+ builder.
10
+ connectString(config.curator_uri).
11
+ retryPolicy(bounded_retry).
12
+ build
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,24 @@
1
+ module Druid
2
+ module Writer
3
+ module Tranquilizer
4
+ class Datapoint
5
+ TIMESTAMP_LABEL = 'timestamp'.freeze
6
+
7
+ attr_reader :dimensions, :timestamp, :metrics
8
+
9
+ def initialize(datapoint)
10
+ @timestamp = build_time(datapoint[:timestamp])
11
+ @dimensions = datapoint[:dimensions].with_indifferent_access
12
+ @metrics = datapoint[:metrics].with_indifferent_access
13
+ end
14
+
15
+ private
16
+
17
+ def build_time(time)
18
+ time = Time.now.utc unless time
19
+ Hash[TIMESTAMP_LABEL, time.iso8601]
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end