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.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +21 -0
- data/README.md +9 -0
- data/Rakefile +6 -0
- data/benchmark.rb +43 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/jruby-druid.gemspec +31 -0
- data/lib/druid/README.md +20 -0
- data/lib/druid/client.rb +21 -0
- data/lib/druid/configuration.rb +51 -0
- data/lib/druid/connection.rb +64 -0
- data/lib/druid/errors.rb +21 -0
- data/lib/druid/logging.rb +1 -0
- data/lib/druid/node/broker.rb +18 -0
- data/lib/druid/node/coordinator.rb +108 -0
- data/lib/druid/node/overlord.rb +51 -0
- data/lib/druid/query/core.rb +8 -0
- data/lib/druid/query/datasource.rb +35 -0
- data/lib/druid/query/task.rb +7 -0
- data/lib/druid/version.rb +3 -0
- data/lib/druid/writer/base.rb +59 -0
- data/lib/druid/writer/tranquilizer.rb +48 -0
- data/lib/druid/writer/tranquilizer/aggregators.rb +15 -0
- data/lib/druid/writer/tranquilizer/base.rb +64 -0
- data/lib/druid/writer/tranquilizer/curator.rb +18 -0
- data/lib/druid/writer/tranquilizer/datapoint.rb +24 -0
- data/lib/druid/writer/tranquilizer/dimensions.rb +16 -0
- data/lib/druid/writer/tranquilizer/druid_beam_config.rb +40 -0
- data/lib/druid/writer/tranquilizer/druid_beams.rb +12 -0
- data/lib/druid/writer/tranquilizer/event_listener.rb +17 -0
- data/lib/druid/writer/tranquilizer/rollup.rb +23 -0
- data/lib/druid/writer/tranquilizer/timestamper.rb +13 -0
- data/lib/druid/writer/tranquilizer/tuning.rb +25 -0
- data/lib/jruby-druid.rb +35 -0
- data/vendor/quarantine/io.druid.tranquility-core-0.8.1.jar +0 -0
- data/vendor/quarantine/jline.jline-0.9.94.jar +0 -0
- data/vendor/tranquility/aopalliance.aopalliance-1.0.jar +0 -0
- data/vendor/tranquility/c3p0.c3p0-0.9.1.2.jar +0 -0
- data/vendor/tranquility/ch.qos.logback.logback-classic-1.1.2.jar +0 -0
- data/vendor/tranquility/ch.qos.logback.logback-core-1.1.2.jar +0 -0
- data/vendor/tranquility/com.101tec.zkclient-0.3.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-autoscaling-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudformation-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudfront-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudhsm-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudsearch-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudtrail-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudwatch-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-cloudwatchmetrics-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-codecommit-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-codedeploy-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-codepipeline-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-cognitoidentity-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-cognitosync-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-config-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-core-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-datapipeline-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-devicefarm-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-directconnect-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-directory-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-dynamodb-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-ec2-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-ecs-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-efs-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-elasticache-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-elasticbeanstalk-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-elasticloadbalancing-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-elastictranscoder-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-emr-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-glacier-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-iam-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-importexport-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-kinesis-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-kms-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-lambda-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-logs-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-machinelearning-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-opsworks-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-rds-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-redshift-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-route53-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-s3-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-ses-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-simpledb-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-simpleworkflow-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-sns-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-sqs-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-ssm-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-storagegateway-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-sts-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-support-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-swf-libraries-1.10.21.jar +0 -0
- data/vendor/tranquility/com.amazonaws.aws-java-sdk-workspaces-1.10.21.jar +0 -0
- data/vendor/tranquility/com.fasterxml.classmate-1.0.0.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.core.jackson-annotations-2.4.6.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.core.jackson-core-2.4.6.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.core.jackson-databind-2.4.6.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.dataformat.jackson-dataformat-smile-2.4.6.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.datatype.jackson-datatype-guava-2.4.6.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.datatype.jackson-datatype-joda-2.4.6.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.jaxrs.jackson-jaxrs-base-2.4.6.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider-2.4.6.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.jaxrs.jackson-jaxrs-smile-provider-2.4.6.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.module.jackson-module-jaxb-annotations-2.4.6.jar +0 -0
- data/vendor/tranquility/com.fasterxml.jackson.module.jackson-module-scala_2.11-2.4.5.jar +0 -0
- data/vendor/tranquility/com.google.code.findbugs.annotations-2.0.3.jar +0 -0
- data/vendor/tranquility/com.google.code.findbugs.jsr305-2.0.1.jar +0 -0
- data/vendor/tranquility/com.google.guava.guava-16.0.1.jar +0 -0
- data/vendor/tranquility/com.google.http-client.google-http-client-1.15.0-rc.jar +0 -0
- data/vendor/tranquility/com.google.http-client.google-http-client-jackson2-1.15.0-rc.jar +0 -0
- data/vendor/tranquility/com.google.inject.extensions.guice-multibindings-4.0.jar +0 -0
- data/vendor/tranquility/com.google.inject.extensions.guice-servlet-4.0.jar +0 -0
- data/vendor/tranquility/com.google.inject.guice-4.0.jar +0 -0
- data/vendor/tranquility/com.google.protobuf.protobuf-java-2.5.0.jar +0 -0
- data/vendor/tranquility/com.googlecode.juniversalchardet.juniversalchardet-1.0.3.jar +0 -0
- data/vendor/tranquility/com.h2database.h2-1.3.158.jar +0 -0
- data/vendor/tranquility/com.ibm.icu.icu4j-4.8.1.jar +0 -0
- data/vendor/tranquility/com.ircclouds.irc.irc-api-1.0-0014.jar +0 -0
- data/vendor/tranquility/com.jamesmurty.utils.java-xmlbuilder-1.1.jar +0 -0
- data/vendor/tranquility/com.jayway.jsonpath.json-path-2.1.0.jar +0 -0
- data/vendor/tranquility/com.maxmind.geoip2.geoip2-0.4.0.jar +0 -0
- data/vendor/tranquility/com.maxmind.maxminddb.maxminddb-0.2.0.jar +0 -0
- data/vendor/tranquility/com.metamx.bytebuffer-collections-0.2.4.jar +0 -0
- data/vendor/tranquility/com.metamx.emitter-0.3.6.jar +0 -0
- data/vendor/tranquility/com.metamx.extendedset-1.3.9.jar +0 -0
- data/vendor/tranquility/com.metamx.http-client-1.0.4.jar +0 -0
- data/vendor/tranquility/com.metamx.java-util-0.27.7.jar +0 -0
- data/vendor/tranquility/com.metamx.loglady_2.11-1.1.0-mmx.jar +0 -0
- data/vendor/tranquility/com.metamx.scala-util_2.11-1.11.6.jar +0 -0
- data/vendor/tranquility/com.metamx.server-metrics-0.2.8.jar +0 -0
- data/vendor/tranquility/com.ning.compress-lzf-1.0.3.jar +0 -0
- data/vendor/tranquility/com.squareup.okhttp.okhttp-1.0.2.jar +0 -0
- data/vendor/tranquility/com.sun.jersey.contribs.jersey-guice-1.19.jar +0 -0
- data/vendor/tranquility/com.sun.jersey.jersey-core-1.19.jar +0 -0
- data/vendor/tranquility/com.sun.jersey.jersey-server-1.19.jar +0 -0
- data/vendor/tranquility/com.thoughtworks.paranamer.paranamer-2.6.jar +0 -0
- data/vendor/tranquility/com.twitter.finagle-core_2.11-6.31.0.jar +0 -0
- data/vendor/tranquility/com.twitter.finagle-http_2.11-6.31.0.jar +0 -0
- data/vendor/tranquility/com.twitter.jsr166e-1.0.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-app_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-cache_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-codec_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-collection_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-core_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-function_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-hashing_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-jvm_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-lint_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-logging_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-registry_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.twitter.util-stats_2.11-6.30.0.jar +0 -0
- data/vendor/tranquility/com.yammer.metrics.metrics-core-2.2.0.jar +0 -0
- data/vendor/tranquility/commons-cli.commons-cli-1.2.jar +0 -0
- data/vendor/tranquility/commons-codec.commons-codec-1.9.jar +0 -0
- data/vendor/tranquility/commons-collections.commons-collections-3.2.1.jar +0 -0
- data/vendor/tranquility/commons-io.commons-io-2.4.jar +0 -0
- data/vendor/tranquility/commons-lang.commons-lang-2.6.jar +0 -0
- data/vendor/tranquility/commons-logging.commons-logging-1.1.3.jar +0 -0
- data/vendor/tranquility/commons-pool.commons-pool-1.6.jar +0 -0
- data/vendor/tranquility/eu.medsea.mimeutil.mime-util-2.1.3.jar +0 -0
- data/vendor/tranquility/io.airlift.airline-0.7.jar +0 -0
- data/vendor/tranquility/io.druid.druid-api-0.3.16.jar +0 -0
- data/vendor/tranquility/io.druid.druid-aws-common-0.9.0.jar +0 -0
- data/vendor/tranquility/io.druid.druid-common-0.9.0.jar +0 -0
- data/vendor/tranquility/io.druid.druid-console-0.0.2.jar +0 -0
- data/vendor/tranquility/io.druid.druid-processing-0.9.0.jar +0 -0
- data/vendor/tranquility/io.druid.druid-server-0.9.0.jar +0 -0
- data/vendor/tranquility/io.druid.tranquility-distribution-0.8.1.jar +0 -0
- data/vendor/tranquility/io.druid.tranquility-kafka-0.8.1.jar +0 -0
- data/vendor/tranquility/io.druid.tranquility-server-0.8.1.jar +0 -0
- data/vendor/tranquility/io.netty.netty-3.10.5.Final.jar +0 -0
- data/vendor/tranquility/io.tesla.aether.aether-connector-okhttp-0.0.9.jar +0 -0
- data/vendor/tranquility/io.tesla.aether.tesla-aether-0.0.5.jar +0 -0
- data/vendor/tranquility/javax.activation.activation-1.1.1.jar +0 -0
- data/vendor/tranquility/javax.el.javax.el-api-3.0.0.jar +0 -0
- data/vendor/tranquility/javax.inject.javax.inject-1.jar +0 -0
- data/vendor/tranquility/javax.servlet.javax.servlet-api-3.1.0.jar +0 -0
- data/vendor/tranquility/javax.validation.validation-api-1.1.0.Final.jar +0 -0
- data/vendor/tranquility/javax.ws.rs.jsr311-api-1.1.1.jar +0 -0
- data/vendor/tranquility/joda-time.joda-time-2.8.2.jar +0 -0
- data/vendor/tranquility/junit.junit-3.8.1.jar +0 -0
- data/vendor/tranquility/mysql.mysql-connector-java-5.1.18.jar +0 -0
- data/vendor/tranquility/net.iharder.base64-2.3.8.jar +0 -0
- data/vendor/tranquility/net.java.dev.jets3t.jets3t-0.9.4.jar +0 -0
- data/vendor/tranquility/net.jpountz.lz4.lz4-1.3.0.jar +0 -0
- data/vendor/tranquility/net.sf.jopt-simple.jopt-simple-3.2.jar +0 -0
- data/vendor/tranquility/net.sf.opencsv.opencsv-2.3.jar +0 -0
- data/vendor/tranquility/net.spy.spymemcached-2.11.7.jar +0 -0
- data/vendor/tranquility/org.abego.treelayout.org.abego.treelayout.core-1.0.1.jar +0 -0
- data/vendor/tranquility/org.antlr.antlr4-runtime-4.0.jar +0 -0
- data/vendor/tranquility/org.apache.commons.commons-dbcp2-2.0.1.jar +0 -0
- data/vendor/tranquility/org.apache.commons.commons-pool2-2.2.jar +0 -0
- data/vendor/tranquility/org.apache.curator.curator-client-2.9.1.jar +0 -0
- data/vendor/tranquility/org.apache.curator.curator-framework-2.9.1.jar +0 -0
- data/vendor/tranquility/org.apache.curator.curator-recipes-2.9.1.jar +0 -0
- data/vendor/tranquility/org.apache.curator.curator-x-discovery-2.9.1.jar +0 -0
- data/vendor/tranquility/org.apache.derby.derby-10.11.1.1.jar +0 -0
- data/vendor/tranquility/org.apache.derby.derbyclient-10.11.1.1.jar +0 -0
- data/vendor/tranquility/org.apache.derby.derbynet-10.11.1.1.jar +0 -0
- data/vendor/tranquility/org.apache.httpcomponents.httpclient-4.5.1.jar +0 -0
- data/vendor/tranquility/org.apache.httpcomponents.httpcore-4.4.3.jar +0 -0
- data/vendor/tranquility/org.apache.kafka.kafka-clients-0.8.2.2.jar +0 -0
- data/vendor/tranquility/org.apache.kafka.kafka_2.11-0.8.2.2.jar +0 -0
- data/vendor/tranquility/org.apache.logging.log4j.log4j-api-2.4.jar +0 -0
- data/vendor/tranquility/org.apache.logging.log4j.log4j-jul-2.5.jar +0 -0
- data/vendor/tranquility/org.apache.logging.log4j.log4j-to-slf4j-2.4.jar +0 -0
- data/vendor/tranquility/org.apache.maven.maven-aether-provider-3.1.1.jar +0 -0
- data/vendor/tranquility/org.apache.maven.maven-model-3.1.1.jar +0 -0
- data/vendor/tranquility/org.apache.maven.maven-model-builder-3.1.1.jar +0 -0
- data/vendor/tranquility/org.apache.maven.maven-repository-metadata-3.1.1.jar +0 -0
- data/vendor/tranquility/org.apache.maven.maven-settings-3.1.1.jar +0 -0
- data/vendor/tranquility/org.apache.maven.maven-settings-builder-3.1.1.jar +0 -0
- data/vendor/tranquility/org.apache.maven.wagon.wagon-provider-api-2.4.jar +0 -0
- data/vendor/tranquility/org.apache.zookeeper.zookeeper-3.4.6.jar +0 -0
- data/vendor/tranquility/org.bouncycastle.bcprov-jdk15on-1.52.jar +0 -0
- data/vendor/tranquility/org.clapper.grizzled-slf4j_2.11-1.0.2.jar +0 -0
- data/vendor/tranquility/org.codehaus.jackson.jackson-core-asl-1.9.13.jar +0 -0
- data/vendor/tranquility/org.codehaus.jackson.jackson-mapper-asl-1.9.13.jar +0 -0
- data/vendor/tranquility/org.codehaus.plexus.plexus-interpolation-1.19.jar +0 -0
- data/vendor/tranquility/org.codehaus.plexus.plexus-utils-3.0.15.jar +0 -0
- data/vendor/tranquility/org.eclipse.aether.aether-api-0.9.0.M2.jar +0 -0
- data/vendor/tranquility/org.eclipse.aether.aether-connector-file-0.9.0.M2.jar +0 -0
- data/vendor/tranquility/org.eclipse.aether.aether-impl-0.9.0.M2.jar +0 -0
- data/vendor/tranquility/org.eclipse.aether.aether-spi-0.9.0.M2.jar +0 -0
- data/vendor/tranquility/org.eclipse.aether.aether-util-0.9.0.M2.jar +0 -0
- data/vendor/tranquility/org.eclipse.jetty.jetty-client-9.2.5.v20141112.jar +0 -0
- data/vendor/tranquility/org.eclipse.jetty.jetty-continuation-9.2.5.v20141112.jar +0 -0
- data/vendor/tranquility/org.eclipse.jetty.jetty-http-9.2.5.v20141112.jar +0 -0
- data/vendor/tranquility/org.eclipse.jetty.jetty-io-9.2.5.v20141112.jar +0 -0
- data/vendor/tranquility/org.eclipse.jetty.jetty-proxy-9.2.5.v20141112.jar +0 -0
- data/vendor/tranquility/org.eclipse.jetty.jetty-security-9.2.5.v20141112.jar +0 -0
- data/vendor/tranquility/org.eclipse.jetty.jetty-server-9.2.5.v20141112.jar +0 -0
- data/vendor/tranquility/org.eclipse.jetty.jetty-servlet-9.2.5.v20141112.jar +0 -0
- data/vendor/tranquility/org.eclipse.jetty.jetty-servlets-9.2.5.v20141112.jar +0 -0
- data/vendor/tranquility/org.eclipse.jetty.jetty-util-9.2.5.v20141112.jar +0 -0
- data/vendor/tranquility/org.glassfish.javax.el-3.0.0.jar +0 -0
- data/vendor/tranquility/org.hibernate.hibernate-validator-5.1.3.Final.jar +0 -0
- data/vendor/tranquility/org.jboss.logging.jboss-logging-3.1.3.GA.jar +0 -0
- data/vendor/tranquility/org.jdbi.jdbi-2.63.1.jar +0 -0
- data/vendor/tranquility/org.joda.joda-convert-1.7.jar +0 -0
- data/vendor/tranquility/org.mapdb.mapdb-1.0.8.jar +0 -0
- data/vendor/tranquility/org.mozilla.rhino-1.7R5.jar +0 -0
- data/vendor/tranquility/org.roaringbitmap.RoaringBitmap-0.5.16.jar +0 -0
- data/vendor/tranquility/org.scala-lang.modules.scala-parser-combinators_2.11-1.0.4.jar +0 -0
- data/vendor/tranquility/org.scala-lang.modules.scala-xml_2.11-1.0.3.jar +0 -0
- data/vendor/tranquility/org.scala-lang.scala-library-2.11.7.jar +0 -0
- data/vendor/tranquility/org.scala-lang.scala-reflect-2.11.2.jar +0 -0
- data/vendor/tranquility/org.scalaj.scalaj-time_2.11-0.5.jar +0 -0
- data/vendor/tranquility/org.scalatra.rl.rl_2.11-0.4.10.jar +0 -0
- data/vendor/tranquility/org.scalatra.scalatra-common_2.11-2.3.1.jar +0 -0
- data/vendor/tranquility/org.scalatra.scalatra_2.11-2.3.1.jar +0 -0
- data/vendor/tranquility/org.skife.config.config-magic-0.9.jar +0 -0
- data/vendor/tranquility/org.slf4j.jcl-over-slf4j-1.7.12.jar +0 -0
- data/vendor/tranquility/org.slf4j.jul-to-slf4j-1.7.12.jar +0 -0
- data/vendor/tranquility/org.slf4j.log4j-over-slf4j-1.7.12.jar +0 -0
- data/vendor/tranquility/org.slf4j.slf4j-api-1.7.12.jar +0 -0
- data/vendor/tranquility/org.xerial.snappy.snappy-java-1.1.1.7.jar +0 -0
- data/vendor/tranquility/org.yaml.snakeyaml-1.11.jar +0 -0
- data/vendor/tranquility/tranquility-core_2.10-0.8.2-SNAPSHOT.jar +0 -0
- data/vendor/tranquility/xpp3.xpp3-1.1.4c.jar +0 -0
- 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,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,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
|