├── .gitattributes ├── .github ├── COMMIT_TEMPLATE ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE └── workflows │ ├── runtests.sh │ └── scala.yml ├── .gitignore ├── .travis.yml ├── CONTRIBUTING.md ├── Dantat.jpg ├── LICENSE ├── README.md ├── akka-bootstrapper └── src │ ├── main │ ├── resources │ │ └── reference.conf │ └── scala │ │ └── filodb │ │ └── akkabootstrapper │ │ ├── AkkaBootstrapper.scala │ │ ├── AkkaBootstrapperSettings.scala │ │ ├── ClusterMembershipTracker.scala │ │ ├── ClusterSeedDiscovery.scala │ │ ├── ConsulClient.scala │ │ ├── DnsSrvClusterSeedDiscovery.scala │ │ ├── ExplicitListClusterSeedDiscovery.scala │ │ └── SeedValidator.scala │ ├── multi-jvm │ ├── resources │ │ └── logback-test.xml │ └── scala │ │ └── filodb │ │ └── akkabootstrapper │ │ └── multijvm │ │ ├── BaseAkkaBootstrapperSpec.scala │ │ ├── ConsulBootstrapperSpec.scala │ │ ├── ConsulBootstrapperSpecMultiJvmNode1.opts │ │ ├── ConsulBootstrapperSpecMultiJvmNode2.opts │ │ ├── ConsulBootstrapperSpecMultiJvmNode3.opts │ │ ├── ExplicitListBootstrapperSpec.scala │ │ ├── ExplicitListBootstrapperSpecMultiJvmNode1.opts │ │ ├── ExplicitListBootstrapperSpecMultiJvmNode2.opts │ │ └── ExplicitListBootstrapperSpecMultiJvmNode3.opts │ └── test │ └── scala │ └── filodb │ └── akkabootstrapper │ ├── SeedNodeAddressSortingSpec.scala │ ├── SeedNodeDiscoverySpec.scala │ └── SeedValidatorSpec.scala ├── build.sbt ├── cassandra └── src │ ├── main │ └── scala │ │ └── filodb.cassandra │ │ ├── CassandraTSStoreFactory.scala │ │ ├── FiloCassandraConnector.scala │ │ ├── FiloSessionProvider.scala │ │ ├── Util.scala │ │ ├── columnstore │ │ ├── BaseDatasetTable.scala │ │ ├── CassandraColumnStore.scala │ │ ├── IngestionTimeIndexTable.scala │ │ ├── PartKeyPublishedUpdatesTable.scala │ │ ├── PartitionKeysByUpdateTimeTable.scala │ │ ├── PartitionKeysTable.scala │ │ ├── PartitionKeysV2Table.scala │ │ └── TimeSeriesChunksTable.scala │ │ └── metastore │ │ ├── CassandraMetaStore.scala │ │ └── CheckpointTable.scala │ └── test │ └── scala │ └── filodb.cassandra │ ├── AllTablesTest.scala │ ├── MemstoreCassandraSinkSpec.scala │ ├── columnstore │ ├── CassandraColumnStoreSpec.scala │ └── OdpSpec.scala │ └── metastore │ └── CassandraMetaStoreSpec.scala ├── cli └── src │ ├── main │ ├── resources │ │ └── logback.xml │ └── scala │ │ └── filodb.cli │ │ └── CliMain.scala │ └── test │ └── scala │ └── filodb │ └── cli │ └── FilodbCliSpec.scala ├── conf ├── downsample-filodb-server.conf ├── downsampler-dev-log4j.properties ├── histogram-dev-source.conf ├── logback-dev.xml ├── logback-perf.xml ├── promperf-filodb-server.conf ├── promperf-source.conf ├── telegraf.conf ├── timeseries-128shards-source.conf ├── timeseries-dev-buddy.conf ├── timeseries-dev-preagg-source.conf ├── timeseries-dev-source.conf ├── timeseries-durable-downsample-index-dev-source.conf ├── timeseries-filodb-durable-downsample-index-server.conf ├── timeseries-filodb-server-consul.conf ├── timeseries-filodb-server-ds.conf ├── timeseries-filodb-server.conf └── timeseries-standalonetest-source.conf ├── coordinator └── src │ ├── main │ └── scala │ │ ├── filodb.coordinator │ │ ├── ActorPlanDispatcher.scala │ │ ├── ActorSystemHolder.scala │ │ ├── BaseActor.scala │ │ ├── ClusterRole.scala │ │ ├── FilodbCluster.scala │ │ ├── FilodbSettings.scala │ │ ├── GrpcPlanDispatcher.scala │ │ ├── IngestionActor.scala │ │ ├── IngestionStream.scala │ │ ├── KamonLogger.scala │ │ ├── NodeClusterActor.scala │ │ ├── NodeConfiguration.scala │ │ ├── NodeCoordinatorActor.scala │ │ ├── NodeGuardian.scala │ │ ├── NodeLifecycleStrategy.scala │ │ ├── QueryActor.scala │ │ ├── QueryScheduler.scala │ │ ├── ResultActor.scala │ │ ├── ShardAssignmentStrategy.scala │ │ ├── ShardHealthStats.scala │ │ ├── ShardManager.scala │ │ ├── ShardMapper.scala │ │ ├── ShardStatus.scala │ │ ├── ShardSubscriptions.scala │ │ ├── StatusActor.scala │ │ ├── StoreFactory.scala │ │ ├── TenantIngestionMetering.scala │ │ ├── client │ │ │ ├── Client.scala │ │ │ ├── ClusterOps.scala │ │ │ ├── FiloKryoSerializers.scala │ │ │ ├── NodeCommands.scala │ │ │ ├── QueryCommands.scala │ │ │ ├── QueryOps.scala │ │ │ └── Serializer.scala │ │ ├── queryengine │ │ │ └── Utils.scala │ │ ├── queryplanner │ │ │ ├── ActiveShardMapperProvider.scala │ │ │ ├── DefaultPlanner.scala │ │ │ ├── FailureProvider.scala │ │ │ ├── FailureRoutingStrategy.scala │ │ │ ├── HighAvailabilityPlanner.scala │ │ │ ├── LogicalPlanParser.scala │ │ │ ├── LogicalPlanUtils.scala │ │ │ ├── LongTimeRangePlanner.scala │ │ │ ├── MultiPartitionPlanner.scala │ │ │ ├── PartitionLocationPlanner.scala │ │ │ ├── QueryPlanner.scala │ │ │ ├── ShardKeyRegexPlanner.scala │ │ │ ├── SingleClusterPlanner.scala │ │ │ └── SinglePartitionPlanner.scala │ │ └── sources │ │ │ └── CsvStream.scala │ │ └── filodb │ │ └── coordinator │ │ ├── ProtoConverters.scala │ │ ├── RemoteActorPlanDispatcher.scala │ │ └── v2 │ │ ├── FiloDbClusterDiscovery.scala │ │ └── NewNodeCoordinatorActor.scala │ ├── multi-jvm │ ├── resources │ │ ├── logback-multijvm-test.xml │ │ └── logback-test.xml │ └── scala │ │ └── filodb.coordinator │ │ ├── ClusterMultiNodeSpec.scala │ │ ├── ClusterRecoverySpec.scala │ │ ├── ClusterRecoverySpecMultiJvmNode1.opts │ │ ├── ClusterRecoverySpecMultiJvmNode2.opts │ │ ├── ClusterSpec.scala │ │ ├── FilodbClusterStateSpec.scala │ │ ├── FilodbClusterStateSpecMultiJvmNode1.opts │ │ ├── FilodbClusterStateSpecMultiJvmNode2.opts │ │ ├── FilodbClusterStateSpecMultiJvmNode3.opts │ │ ├── FilodbClusterStateSpecMultiJvmNode4.opts │ │ ├── NodeClusterSpec.scala │ │ ├── NodeClusterSpecMultiJvmNode1.opts │ │ ├── NodeClusterSpecMultiJvmNode2.opts │ │ └── NodeClusterSpecMultiJvmNode3.opts │ └── test │ └── scala │ └── filodb.coordinator │ ├── ActorSpecConfig.scala │ ├── ClusterRoleSpec.scala │ ├── FiloDBSettingsSpec.scala │ ├── FiloDbClusterDiscoverySpec.scala │ ├── FilodbClusterNodeSpec.scala │ ├── FilodbClusterSpec.scala │ ├── IngestionStreamSpec.scala │ ├── NamingAwareBaseActorSpec.scala │ ├── NodeCoordinatorActorSpec.scala │ ├── ProtoConvertersSpec.scala │ ├── ReassignShardsSpec.scala │ ├── ShardAssignmentStrategySpec.scala │ ├── ShardManagerSpec.scala │ ├── ShardMapperSpec.scala │ ├── ShardSubscriptionsSpec.scala │ ├── StreamingResultsExecSpec.scala │ ├── SupervisorSpec.scala │ ├── client │ └── SerializationSpec.scala │ └── queryplanner │ ├── FailureProviderSpec.scala │ ├── FindMyShards.scala │ ├── HighAvailabilityPlannerSpec.scala │ ├── LogicalPlanParserSpec.scala │ ├── LogicalPlanUtilsSpec.scala │ ├── LongTimeRangePlannerSpec.scala │ ├── MultiPartitionPlannerSpec.scala │ ├── PlannerHierarchySpec.scala │ ├── PlannerUtilSpec.scala │ ├── ScalarQueriesSpec.scala │ ├── ShardKeyRegexPlannerSpec.scala │ ├── SingleClusterPlannerSpec.scala │ ├── SingleClusterPlannerSplitSpec.scala │ └── SinglePartitionPlannerSpec.scala ├── core └── src │ ├── main │ ├── java │ │ └── filodb │ │ │ └── core │ │ │ └── memstore │ │ │ └── DownsampleIndexCheckpointer.java │ ├── resources │ │ └── filodb-defaults.conf │ └── scala │ │ └── filodb.core │ │ ├── FutureUtils.scala │ │ ├── GlobalConfig.scala │ │ ├── GlobalScheduler.scala │ │ ├── IngestionKeys.scala │ │ ├── Instance.scala │ │ ├── Iterators.scala │ │ ├── KeyType.scala │ │ ├── Messages.scala │ │ ├── NodeCommand.scala │ │ ├── Perftools.scala │ │ ├── RateLimiter.scala │ │ ├── SpreadProvider.scala │ │ ├── TargetSchemaProvider.scala │ │ ├── Types.scala │ │ ├── Utils.scala │ │ ├── binaryrecord2 │ │ ├── RecordBuilder.scala │ │ ├── RecordComparator.scala │ │ ├── RecordContainer.scala │ │ └── RecordSchema.scala │ │ ├── downsample │ │ ├── ChunkDownsampler.scala │ │ ├── DownsampleConfig.scala │ │ ├── DownsamplePeriodMarker.scala │ │ ├── DownsampledTimeSeriesShard.scala │ │ ├── DownsampledTimeSeriesStore.scala │ │ ├── OffHeapMemory.scala │ │ └── ShardDownsampler.scala │ │ ├── memstore │ │ ├── BitmapIndex.scala │ │ ├── DemandPagedChunkStore.scala │ │ ├── EvictablePartIdQueueSet.scala │ │ ├── FiloSchedulers.scala │ │ ├── IndexBootstrapper.scala │ │ ├── IndexMetadataStore.scala │ │ ├── IndexWriterPlus.scala │ │ ├── OnDemandPagingShard.scala │ │ ├── PagedReadablePartition.scala │ │ ├── PartKeyIndex.scala │ │ ├── PartKeyLuceneIndex.scala │ │ ├── PartKeyTantivyIndex.scala │ │ ├── PartitionEvictionPolicy.scala │ │ ├── PartitionKeyIndex.scala │ │ ├── PartitionSet.scala │ │ ├── PublishIntervalFinder.scala │ │ ├── TimeSeriesMemStore.scala │ │ ├── TimeSeriesPartition.scala │ │ ├── TimeSeriesShard.scala │ │ ├── TimeSeriesStore.scala │ │ ├── WriteBufferPool.scala │ │ ├── ratelimit │ │ │ ├── CardinalityManager.scala │ │ │ ├── CardinalityStore.scala │ │ │ ├── CardinalityTracker.scala │ │ │ ├── QuotaExceededProtocol.scala │ │ │ ├── QuotaSource.scala │ │ │ └── RocksDbCardinalityStore.scala │ │ └── synchronization │ │ │ ├── CassandraPartKeyUpdatesPublisher.scala │ │ │ └── PartKeyUpdatesPublisher.scala │ │ ├── metadata │ │ ├── Column.scala │ │ ├── ComputedColumn.scala │ │ ├── Dataset.scala │ │ ├── Schemas.scala │ │ ├── SimpleComputations.scala │ │ └── TimeComputations.scala │ │ ├── package.scala │ │ ├── query │ │ ├── BuddyShardMapper.scala │ │ ├── ColumnFilterMap.scala │ │ ├── KeyFilter.scala │ │ ├── PartitionTimeRangeReader.scala │ │ ├── QueryConfig.scala │ │ ├── QueryContext.scala │ │ ├── QueryUtils.scala │ │ ├── RangeVector.scala │ │ ├── RangeVectorCursor.scala │ │ ├── ResultTypes.scala │ │ └── TransientRow.scala │ │ └── store │ │ ├── ChunkSetInfo.scala │ │ ├── ChunkSetInfoReader.scala │ │ ├── ChunkSink.scala │ │ ├── ChunkSource.scala │ │ ├── ColumnStore.scala │ │ ├── InMemoryMetaStore.scala │ │ ├── IngestionConfig.scala │ │ ├── MetaStore.scala │ │ ├── ReadablePartition.scala │ │ └── package.scala │ ├── rust │ ├── Cargo.lock │ ├── Cargo.toml │ ├── clippy.toml │ ├── filodb_core │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── errors.rs │ │ │ ├── exec.rs │ │ │ ├── index.rs │ │ │ ├── ingestion.rs │ │ │ ├── ingestion │ │ │ └── fields.rs │ │ │ ├── jnienv.rs │ │ │ ├── lib.rs │ │ │ ├── parser.rs │ │ │ ├── profile.rs │ │ │ ├── query_parser.rs │ │ │ ├── query_parser │ │ │ └── filodb_query.rs │ │ │ ├── reader.rs │ │ │ └── state.rs │ └── tantivy_utils │ │ ├── Cargo.toml │ │ └── src │ │ ├── collectors.rs │ │ ├── collectors │ │ ├── column_cache.rs │ │ ├── index_collector.rs │ │ ├── limited_collector.rs │ │ ├── limited_collector │ │ │ ├── limit_counter.rs │ │ │ └── unlimited_collector.rs │ │ ├── part_id_collector.rs │ │ ├── part_key_collector.rs │ │ ├── part_key_record_collector.rs │ │ ├── string_field_collector.rs │ │ ├── time_collector.rs │ │ └── time_range_filter.rs │ │ ├── field_constants.rs │ │ ├── lib.rs │ │ ├── query.rs │ │ ├── query │ │ ├── bitset_weight.rs │ │ ├── cache.rs │ │ ├── prefix_query.rs │ │ ├── range_aware_regex.rs │ │ └── shared_doc_set.rs │ │ └── test_utils.rs │ └── test │ ├── resources │ ├── GDELT-sample-test-200.csv │ ├── GDELT-sample-test-errors.csv │ ├── GDELT-sample-test.csv │ ├── GDELT-sample-test2.csv │ ├── GDELT-sample-test3.csv │ ├── GDELT-unique-samples.csv │ ├── application_test.conf │ ├── logback-test.xml │ ├── test_dataset.conf │ └── test_dataset_not_prometheus.conf │ └── scala │ └── filodb.core │ ├── AbstractSpec.scala │ ├── RateLimiterSpec.scala │ ├── TestData.scala │ ├── TypesSpec.scala │ ├── binaryrecord2 │ ├── BinaryRecordSpec.scala │ └── HashRandomnessSpec.scala │ ├── downsample │ └── ShardDownsamplerSpec.scala │ ├── memstore │ ├── DemandPagedChunkStoreSpec.scala │ ├── DownsampleIndexCheckpointerSpec.scala │ ├── EphemeralIndexMetadataStoreSpec.scala │ ├── EvictablePartIdQueueSetSpec.scala │ ├── FileSystemBasedIndexMetadataStoreSpec.scala │ ├── PartKeyIndexRawSpec.scala │ ├── PartKeyLuceneIndexSpec.scala │ ├── PartKeyQueryBuilderSpec.scala │ ├── PartKeyTantivyIndexSpec.scala │ ├── PartitionKeyIndexSpec.scala │ ├── PartitionSetSpec.scala │ ├── PublishIntervalFinderSpec.scala │ ├── TimeSeriesMemStoreForMetadataSpec.scala │ ├── TimeSeriesMemStoreSpec.scala │ ├── TimeSeriesPartitionSpec.scala │ └── ratelimit │ │ ├── CardinalityManagerSpec.scala │ │ ├── CardinalityTrackerSpec.scala │ │ ├── RocksDbCardinalityStoreMemoryCapSpec.scala │ │ └── RocksDbCardinalityStoreSpec.scala │ ├── metadata │ ├── ColumnSpec.scala │ ├── DatasetSpec.scala │ └── SchemasSpec.scala │ ├── query │ ├── ColumnFilterMapSpec.scala │ ├── KeyFilterSpec.scala │ ├── QueryContextSpec.scala │ ├── QueryUtilsSpec.scala │ ├── RangeVectorSpec.scala │ └── SerializedRangeVectorSpec.scala │ └── store │ ├── ChunkSetInfoSpec.scala │ ├── ColumnStoreSpec.scala │ ├── InMemoryMetaStoreSpec.scala │ ├── MetaStoreSpec.scala │ └── ReadablePartitionSpec.scala ├── dev-gateway.sh ├── doc ├── FAQ.md ├── FiloDB_GDELT.snb ├── FiloDB_Taxi_Geo_demo.snb ├── QueryEngine-AggregationAcrossRangeVectors.png ├── QueryEngine-RangeFunctions.png ├── akka-bootstrapper.md ├── architecture.md ├── binaryrecord-spec.md ├── compression.md ├── downsampling.md ├── http_api.md ├── indexing.md ├── ingestion.md ├── mermaid │ ├── br-classes.mermaid │ ├── br-classes.mermaid.png │ ├── chunked-iteration.mermaid │ ├── chunked-iteration.png │ ├── ingest-flush-recovery.mermaid │ ├── ingest-flush-recovery.mermaid.png │ ├── shard-coordination.mermaid │ ├── shard-coordination.mermaid.png │ ├── sortedintervals.mermaid │ ├── sortedintervals.mermaid.png │ ├── wireprotocol.mermaid │ └── wireprotocol.mermaid.png ├── query-engine.md ├── sharding.md ├── spark-oldold.md └── spark-streaming-exactly-once.png ├── filo-cli ├── filodb-dev-start.sh ├── filodb-dev-stop.sh ├── gateway └── src │ ├── main │ ├── resources │ │ └── logback.xml │ └── scala │ │ └── filodb │ │ ├── gateway │ │ ├── GatewayServer.scala │ │ ├── KafkaContainerSink.scala │ │ ├── NettySocketHandler.scala │ │ └── conversion │ │ │ ├── InfluxProtocolParser.scala │ │ │ ├── InfluxRecord.scala │ │ │ └── InputRecord.scala │ │ └── timeseries │ │ ├── TestTimeseriesConsumer.scala │ │ └── TestTimeseriesProducer.scala │ └── test │ └── scala │ └── filodb │ └── gateway │ └── conversion │ ├── InfluxRecordSpec.scala │ ├── InputRecordBuilderSpec.scala │ └── PrometheusInputRecordSpec.scala ├── gatling └── src │ └── test │ └── scala │ └── filodb │ └── gatling │ ├── GatlingDriver.scala │ └── QueryRangeSimulation.scala ├── grpc └── src │ └── main │ ├── protobuf │ ├── exec_plan.proto │ ├── query_service.proto │ └── range_vector.proto │ └── scala │ └── filodb │ └── grpc │ └── GrpcCommonUtils.scala ├── http └── src │ ├── main │ ├── resources │ │ └── reference.conf │ └── scala │ │ └── filodb │ │ └── http │ │ ├── AdminRoutes.scala │ │ ├── ClusterApiRoute.scala │ │ ├── FiloHttpServer.scala │ │ ├── HealthRoute.scala │ │ ├── HttpSettings.scala │ │ ├── PromQLGrpcServer.scala │ │ ├── PrometheusApiRoute.scala │ │ └── apiv1 │ │ └── HttpSchema.scala │ └── test │ └── scala │ └── filodb │ ├── http │ ├── ClusterApiRouteSpec.scala │ ├── HealthRouteSpec.scala │ └── PrometheusApiRouteSpec.scala │ └── prom │ └── downsample │ └── GaugeDownsampleValidator.scala ├── jmh └── src │ └── main │ ├── resources │ └── log4j.properties │ └── scala │ └── filodb.jmh │ ├── Base2ExponentialHistogramQueryBenchmark.scala │ ├── BasicFiloBenchmark.scala │ ├── DictStringBenchmark.scala │ ├── EncodingBenchmark.scala │ ├── GatewayBenchmark.scala │ ├── HistVectorBenchmark.scala │ ├── HistogramIngestBenchmark.scala │ ├── HistogramQueryBenchmark.scala │ ├── IngestionBenchmark.scala │ ├── IntSumReadBenchmark.scala │ ├── PartKeyIndexBenchmark.scala │ ├── PartKeyIndexExternalBenchmark.scala │ ├── PartKeyIndexIngestionBenchmark.scala │ ├── PartitionListBenchmark.scala │ ├── PlannerBenchmark.scala │ ├── QueryAndIngestBenchmark.scala │ ├── QueryHiCardInMemoryBenchmark.scala │ ├── QueryInMemoryBenchmark.scala │ ├── QueryOnDemandBenchmark.scala │ └── UTF8StringBenchmark.scala ├── kafka └── src │ ├── main │ ├── resources │ │ └── filodb-defaults.conf │ └── scala │ │ └── filodb │ │ └── kafka │ │ ├── KafkaIngestionStream.scala │ │ ├── KafkaSerdes.scala │ │ ├── KafkaSettings.scala │ │ ├── RecordContainerSerde.scala │ │ ├── TestConsumer.scala │ │ └── package.scala │ └── test │ ├── resources │ ├── example-source.conf │ └── sourceconfig.conf │ └── scala │ └── filodb │ └── kafka │ ├── KafkaConsumerConfigSpec.scala │ ├── KafkaProducerConfigSpec.scala │ └── KafkaSettingsSpec.scala ├── memory └── src │ ├── main │ ├── java │ │ └── filodb │ │ │ └── memory │ │ │ └── Latch.java │ └── scala │ │ └── filodb.memory │ │ ├── BinaryRegion.scala │ │ ├── Block.scala │ │ ├── BlockDetective.scala │ │ ├── BlockManager.scala │ │ ├── BlockMemFactoryPool.scala │ │ ├── EvictionLock.scala │ │ ├── MemFactory.scala │ │ ├── UTF8String.scala │ │ ├── data │ │ ├── ChunkMap.scala │ │ ├── ElementIterator.scala │ │ └── Shutdown.scala │ │ └── format │ │ ├── BinaryVector.scala │ │ ├── DefaultValues.scala │ │ ├── Encodings.scala │ │ ├── FastBufferReader.scala │ │ ├── FiloRowReader.scala │ │ ├── MemoryLogger.scala │ │ ├── MemoryReader.scala │ │ ├── NibblePack.scala │ │ ├── Ptr.scala │ │ ├── RowReader.scala │ │ ├── RowToVectorBuilder.scala │ │ ├── Section.scala │ │ ├── TypedBufferReader.scala │ │ ├── UnsafeUtils.scala │ │ ├── WireFormat.scala │ │ ├── ZeroCopyBinary.scala │ │ └── vectors │ │ ├── ConstVector.scala │ │ ├── DeltaDeltaVector.scala │ │ ├── DictUTF8Vector.scala │ │ ├── DoubleVector.scala │ │ ├── ExpHistogramVector.scala │ │ ├── Histogram.scala │ │ ├── HistogramCompressor.scala │ │ ├── HistogramVector.scala │ │ ├── IntBinaryVector.scala │ │ ├── LongBinaryVector.scala │ │ └── UTF8Vector.scala │ └── test │ ├── resources │ ├── timeseries_bug1.txt │ └── timeseries_samples.txt │ └── scala │ └── filodb.memory │ ├── BlockMemFactorySpec.scala │ ├── BlockSpec.scala │ ├── NativeMemoryManagerSpec.scala │ ├── PageAlignedBlockManagerConcurrentSpec.scala │ ├── PageAlignedBlockManagerSpec.scala │ ├── UTF8StringTest.scala │ ├── data │ └── ChunkMapTest.scala │ └── format │ ├── EncodingPropertiesTest.scala │ ├── NibblePackTest.scala │ ├── RealTimeseriesEncodingTest.scala │ ├── RowReaderTest.scala │ ├── ZeroCopyBinaryTest.scala │ └── vectors │ ├── DoubleVectorTest.scala │ ├── ExpHistogramVectorTest.scala │ ├── HistogramTest.scala │ ├── HistogramVectorTest.scala │ ├── IntBinaryVectorTest.scala │ ├── LongVectorTest.scala │ ├── NativeVectorTest.scala │ └── UTF8VectorTest.scala ├── project ├── Dependencies.scala ├── FiloBuild.scala ├── FiloSettings.scala ├── RustPlugin.scala ├── build.properties ├── build.sbt ├── plugins.sbt └── protoc.sbt ├── prometheus └── src │ ├── main │ ├── java │ │ ├── filodb │ │ │ └── prometheus │ │ │ │ └── antlr │ │ │ │ ├── PromQL.g4 │ │ │ │ ├── PromQL.interp │ │ │ │ ├── PromQL.tokens │ │ │ │ ├── PromQLBaseVisitor.java │ │ │ │ ├── PromQLLexer.interp │ │ │ │ ├── PromQLLexer.java │ │ │ │ ├── PromQLLexer.tokens │ │ │ │ ├── PromQLParser.java │ │ │ │ └── PromQLVisitor.java │ │ └── remote │ │ │ └── RemoteStorage.java │ ├── proto │ │ └── remote-storage.proto │ └── scala │ │ └── filodb │ │ └── prometheus │ │ ├── ast │ │ ├── Aggregates.scala │ │ ├── Base.scala │ │ ├── Expressions.scala │ │ ├── Functions.scala │ │ ├── Operators.scala │ │ ├── Scalars.scala │ │ ├── SubqueryUtils.scala │ │ ├── TimeUnits.scala │ │ └── Vectors.scala │ │ ├── parse │ │ ├── AntlrParser.scala │ │ ├── LegacyParser.scala │ │ └── Parser.scala │ │ └── query │ │ └── PrometheusModel.scala │ └── test │ └── scala │ └── filodb │ └── prometheus │ └── parse │ └── ParserSpec.scala ├── query └── src │ ├── main │ └── scala │ │ └── filodb │ │ └── query │ │ ├── LogicalPlan.scala │ │ ├── PlanEnums.scala │ │ ├── PromCirceSupport.scala │ │ ├── PromQueryResponse.scala │ │ ├── ProtoConverters.scala │ │ ├── Query.scala │ │ ├── ResultTypes.scala │ │ ├── exec │ │ ├── AggrOverRangeVectors.scala │ │ ├── BinaryJoinExec.scala │ │ ├── DistConcatExec.scala │ │ ├── EmptyResultExec.scala │ │ ├── ExecPlan.scala │ │ ├── GenericRemoteExec.scala │ │ ├── HistogramQuantileMapper.scala │ │ ├── InProcessPlanDispatcher.scala │ │ ├── InternalRangeFunction.scala │ │ ├── MetadataExecPlan.scala │ │ ├── MetadataRemoteExec.scala │ │ ├── MultiSchemaPartitionsExec.scala │ │ ├── PeriodicSamplesMapper.scala │ │ ├── PlanDispatcher.scala │ │ ├── PromQLGrpcRemoteExec.scala │ │ ├── PromQlRemoteExec.scala │ │ ├── RangeVectorTransformer.scala │ │ ├── RemoteExec.scala │ │ ├── ScalarBinaryOperationExec.scala │ │ ├── ScalarFixedDoubleExec.scala │ │ ├── SelectChunkInfosExec.scala │ │ ├── SelectRawPartitionsExec.scala │ │ ├── SetOperatorExec.scala │ │ ├── StitchRvsExec.scala │ │ ├── TimeScalarGeneratorExec.scala │ │ ├── aggregator │ │ │ ├── AvgRowAggregator.scala │ │ │ ├── CountRowAggregator.scala │ │ │ ├── CountValuesRowAggregator.scala │ │ │ ├── GroupRowAggregator.scala │ │ │ ├── HistMaxMinSumAggregator.scala │ │ │ ├── HistSumRowAggregator.scala │ │ │ ├── MaxRowAggregator.scala │ │ │ ├── MinRowAggregator.scala │ │ │ ├── QuantileRowAggregator.scala │ │ │ ├── RowAggregator.scala │ │ │ ├── StddevRowAggregator.scala │ │ │ ├── StdvarRowAggregator.scala │ │ │ ├── SumRowAggregator.scala │ │ │ └── TopBottomKRowAggregator.scala │ │ ├── binaryOp │ │ │ └── BinaryOperatorFunction.scala │ │ └── rangefn │ │ │ ├── AggrOverTimeFunctions.scala │ │ │ ├── InstantFunction.scala │ │ │ ├── MiscellaneousFunction.scala │ │ │ ├── RangeFunction.scala │ │ │ ├── RangeInstantFunctions.scala │ │ │ └── RateFunctions.scala │ │ └── util │ │ ├── HierarchicalQueryExperience.scala │ │ └── IndexedArrayQueue.scala │ └── test │ └── scala │ └── filodb │ └── query │ ├── LogicalPlanSpec.scala │ ├── PlanValidationSpec.scala │ ├── PromCirceSupportSpec.scala │ ├── ProtoConvertersSpec.scala │ ├── ResultTypesSpec.scala │ ├── exec │ ├── AggrOverRangeVectorsSpec.scala │ ├── BinaryJoinExecSpec.scala │ ├── BinaryJoinGroupingSpec.scala │ ├── BinaryJoinSetOperatorSpec.scala │ ├── BufferableCounterCorrectionIteratorSpec.scala │ ├── ExecPlanSpec.scala │ ├── HistToPromSeriesMapperSpec.scala │ ├── HistogramQuantileMapperSpec.scala │ ├── InProcessPlanDispatcherSpec.scala │ ├── LastSampleFunctionSpec.scala │ ├── LocalPartitionDistConcatExecSpec.scala │ ├── MetadataExecSpec.scala │ ├── MultiSchemaPartitionsExecSpec.scala │ ├── PeriodicSamplesMapperSpec.scala │ ├── PromQLGrpcRemoteExecSpec.scala │ ├── PromQlRemoteExecSpec.scala │ ├── RemoteMetadataExecSpec.scala │ ├── SplitLocalPartitionDistConcatExecSpec.scala │ ├── StitchRvsExecSpec.scala │ ├── TimestampFunctionSpec.scala │ ├── WindowIteratorSpec.scala │ └── rangefn │ │ ├── AbsentFunctionSpec.scala │ │ ├── AggrOverTimeFunctionsSpec.scala │ │ ├── BinaryOperatorSpec.scala │ │ ├── ChangesFunctionSpec.scala │ │ ├── InstantFunctionSpec.scala │ │ ├── LabelReplaceSpec.scala │ │ ├── LableJoinSpec.scala │ │ ├── PeriodicRateFunctionsSpec.scala │ │ ├── QuantileOverTimeSpec.scala │ │ ├── RateFunctionsSpec.scala │ │ ├── ScalarFunctionSpec.scala │ │ └── SortFunctionSpec.scala │ └── util │ ├── HierarchicalQueryExperienceSpec.scala │ └── IndexedArrayQueueSpec.scala ├── run_benchmarks.sh ├── scalastyle-config.xml ├── scalastyle-test-config.xml ├── scripts ├── prom_compare_timeseries.sh ├── schema-create.sh └── schema-truncate.sh ├── spark-jobs └── src │ ├── main │ └── scala │ │ └── filodb │ │ ├── cardbuster │ │ ├── CadinalityBusterMain.scala │ │ └── PerShardCardinalityBuster.scala │ │ ├── downsampler │ │ ├── DownsamplerContext.scala │ │ ├── Utils.scala │ │ ├── chunk │ │ │ ├── BatchDownsampler.scala │ │ │ ├── BatchExporter.scala │ │ │ ├── DownsamplerMain.scala │ │ │ ├── DownsamplerSettings.scala │ │ │ └── ExportConstants.scala │ │ └── index │ │ │ ├── DSIndexJob.scala │ │ │ ├── DSIndexJobMain.scala │ │ │ └── DSIndexJobSettings.scala │ │ └── repair │ │ ├── ChunkCopier.scala │ │ ├── ChunkCopierValidator.scala │ │ ├── PartitionKeysCopier.scala │ │ └── PartitionKeysCopierValidator.scala │ └── test │ ├── resources │ └── timeseries-filodb-buddy-server.conf │ └── scala │ └── filodb │ ├── downsampler │ └── DownsamplerMainSpec.scala │ └── repair │ ├── ChunkCopierSpec.scala │ ├── ChunkCopierValidatorSpec.scala │ ├── PartitionKeysCopierSpec.scala │ └── PartitionKeysCopierValidatorSpec.scala ├── spark └── src │ ├── it │ └── scala │ │ └── filodb.spark │ │ ├── ClusterIngestTest.scala │ │ └── SparkTestBase.scala │ ├── main │ ├── java │ │ └── filodb.spark │ │ │ └── JavaExample.java │ └── scala │ │ ├── filodb.spark │ │ ├── DefaultSource.scala │ │ ├── FiloContext.scala │ │ ├── FiloRelation.scala │ │ ├── FiloSetup.scala │ │ ├── TypeConverters.scala │ │ └── package.scala │ │ └── org.apache.spark.sql.hive.filodb │ │ └── MetaStoreSync.scala │ └── test │ └── scala │ └── filodb.spark │ ├── InMemoryStoreTest.scala │ ├── SaveAsFiloTest.scala │ ├── SparkTestBase.scala │ └── StreamingTest.scala ├── standalone └── src │ ├── main │ ├── java │ │ └── filodb │ │ │ └── standalone │ │ │ └── SimpleProfiler.java │ ├── resources │ │ ├── log4j.properties │ │ └── logback.xml │ └── scala │ │ └── filodb.standalone │ │ ├── FiloServer.scala │ │ └── NewFiloServerMain.scala │ └── multi-jvm │ ├── resources │ └── logback-multijvm-test.xml │ └── scala │ └── filodb │ └── standalone │ ├── ClusterSingletonFailoverSpec.scala │ ├── ClusterSingletonFailoverSpecMultiJvmNode1.opts │ ├── ClusterSingletonFailoverSpecMultiJvmNode2.opts │ ├── ClusterSingletonFailoverSpecMultiJvmNode3.opts │ ├── IngestionAndRecoverySpec.scala │ ├── IngestionAndRecoverySpecMultiJvmNode1.opts │ ├── IngestionAndRecoverySpecMultiJvmNode2.opts │ └── StandaloneMultiJvmSpec.scala ├── stress ├── README.md └── src │ └── main │ ├── resources │ ├── 1000medallions.csv │ └── log4j.properties │ └── scala │ └── filodb.stress │ ├── BatchIngestion.scala │ ├── InMemoryQueryStress.scala │ ├── IngestionStress.scala │ ├── MemStoreStress.scala │ ├── RowReplaceStress.scala │ └── StreamingStress.scala ├── travis └── jvmopts └── version.sbt /.gitattributes: -------------------------------------------------------------------------------- 1 | version.sbt merge=ours -------------------------------------------------------------------------------- /.github/COMMIT_TEMPLATE: -------------------------------------------------------------------------------- 1 | 2 | ## Use the following template for commits 3 | ## tip: the following command adds this template and helps whenever you do a `git commit` 4 | ## `git config --replace-all commit.template .github/COMMIT_TEMPLATE` 5 | ## 6 | ## type: defines the type of change. can be one of: 7 | ### - fix: for general fixes 8 | ### - bug: for bug fixes 9 | ### - feat: for features 10 | ### - misc: for miscellaneous items 11 | ## 12 | ## scope: defines the scope of the change. e.g.: 13 | ### - query 14 | ### - coordinator 15 | ### - memory 16 | ### - core 17 | ### - coord 18 | ## 19 | ## subject: a short description of the change 20 | (): 21 | 22 | ## explain the change in greater detail. 23 | 24 | 25 | ## any footer notes (optional) 26 |