druid.segmentCache.locations - may not be empty

Hi everyone,
I need your help, because I set I new server for develop environment and I have the flowing error.
My environment:

  • Druid 0.8.0
  • AWS Ubuntu 14.04 (Full updated) Flavor: c4.xlarge (4 cores, 16GB RAM)
    # tailf /var/log/supervisor/program_druid-historical_0_stdout.log

    2015-09-06T18:16:52,280 ERROR [main] io.druid.cli.CliHistorical - Error when starting up. Failing.
    com.google.inject.ProvisionException: Guice provision errors:
  1. druid.segmentCache.locations - may not be empty
    at io.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:112)
    at io.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:112)
    while locating com.google.common.base.Supplier<io.druid.segment.loading.SegmentLoaderConfig>
    at io.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:113)
    while locating io.druid.segment.loading.SegmentLoaderConfig
    for parameter 1 at io.druid.segment.loading.SegmentLoaderLocalCacheManager.(SegmentLoaderLocalCacheManager.java:57)
    while locating io.druid.segment.loading.SegmentLoaderLocalCacheManager
    at io.druid.guice.LocalDataStorageDruidModule.configure(LocalDataStorageDruidModule.java:47)
    while locating io.druid.segment.loading.SegmentLoader
    for parameter 0 at io.druid.server.coordination.ServerManager.(ServerManager.java:105)
    at io.druid.cli.CliHistorical$1.configure(CliHistorical.java:76)
    while locating io.druid.server.coordination.ServerManager
    at io.druid.cli.CliHistorical$1.configure(CliHistorical.java:78)
    while locating io.druid.query.QuerySegmentWalker
    for parameter 3 at io.druid.server.QueryResource.(QueryResource.java:90)
    while locating io.druid.server.QueryResource
    1 error
    at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:1014) ~[guice-4.0-beta.jar:?]
    at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1036) ~[guice-4.0-beta.jar:?]
    at io.druid.guice.LifecycleModule$2.start(LifecycleModule.java:134) ~[druid-api-0.3.8.jar:0.8.0]
    at io.druid.cli.GuiceRunnable.initLifecycle(GuiceRunnable.java:71) [druid-services-0.8.0.jar:0.8.0]
    at io.druid.cli.ServerRunnable.run(ServerRunnable.java:38) [druid-services-0.8.0.jar:0.8.0]
    at io.druid.cli.Main.main(Main.java:91) [druid-services-0.8.0.jar:0.8.0]
    Heap
    par new generation total 118016K, used 20712K [0x00000000b5a00000, 0x00000000bda00000, 0x00000000bda00000)
    eden space 104960K, 7% used [0x00000000b5a00000, 0x00000000b62127c0, 0x00000000bc080000)
    from space 13056K, 95% used [0x00000000bc080000, 0x00000000bcca7968, 0x00000000bcd40000)
    to space 13056K, 0% used [0x00000000bcd40000, 0x00000000bcd40000, 0x00000000bda00000)
    concurrent mark-sweep generation total 917504K, used 3032K [0x00000000bda00000, 0x00000000f5a00000, 0x00000000f5a00000)
    concurrent-mark-sweep perm gen total 29696K, used 29564K [0x00000000f5a00000, 0x00000000f7700000, 0x0000000100000000)
    2015-09-06T18:16:54,816 INFO [main] io.druid.guice.PropertiesModule - Loading properties from common.runtime.properties
    3.658: [GC3.658: [ParNew: 104960K->10516K(118016K), 0.0188280 secs] 104960K->10516K(1035520K), 0.0188820 secs] [Times: user=0.04 sys=0.01, real=0.02 secs]
    2015-09-06T18:16:56,379 INFO [main] io.druid.guice.JsonConfigurator - Loaded class[class io.druid.guice.ExtensionsConfig] from props[druid.extensions.] as [ExtensionsConfig{searchCurrentClassloader=true, coordinates=[io.druid.extensions:druid-s3-extensions, io.druid.extensions:druid-histogram, io.druid.extensions:druid-kafka-eight, io.druid.extensions:mysql-metadata-storage], defaultVersion=‘0.8.0’, localRepository=’/opt/druid/.m2/repository’, remoteRepositories=[https://repo1.maven.org/maven2/, https://metamx.artifactoryonline.com/metamx/pub-libs-releases-local]}]

    My config:
    # cat /etc/druid/historical/historical.runtime.properties
    druid.host = druid-01-pre
    druid.port = 8083
    druid.service = druid:historical
    druid.server.maxSize = 10000000000
    druid.server.tier = _default_tier
    druid.server.priority = 50
    druid.segmentCache.locations = [{“path”: “/mnt/druid/segmentCache”, “maxSize”: 10000000000}]
    druid.segmentCache.deleteOnRemove = true
    druid.segmentCache.dropSegmentDelayMillis = 30000
    druid.segmentCache.infoDir = /mnt/druid/infoDir
    druid.segmentCache.announceIntervalMillis = 5000
    druid.segmentCache.numLoadingThreads = 1
    druid.server.http.numThreads = 10
    druid.server.http.maxIdleTime = PT5M
    druid.historical.cache.useCache = true
    druid.historical.cache.populateCache = true
    druid.historical.cache.unCacheable = [“groupBy”, “select”]
    druid.processing.buffer.sizeBytes = 100000000
    druid.processing.formatString = processing-%s
    druid.processing.numThreads = 1
    druid.processing.columnCache.sizeBytes = 0
    druid.query.groupBy.singleThreaded = false
    druid.query.groupBy.maxIntermediateRows = 50000
    druid.query.groupBy.maxResults = 500000
    druid.query.search.maxSearchLimit = 1000
    # cat /etc/druid/_common/common.runtime.properties
    druid.monitoring.monitors = [“com.metamx.metrics.JvmMonitor”]
    druid.extensions.coordinates = [“io.druid.extensions:druid-s3-extensions”, “io.druid.extensions:druid-histogram”, “io.druid.extensions:druid-kafka-eight”,“io.druid.extensions:mysql-metadata-storage”]
    druid.zk.service.host = zk-01-pre:2181,zk-02-pre:2181,zk-03-pre:2181
    druid.metadata.storage.type = mysql
    druid.storage.type = s3
    druid.storage.storageDirectory = /tmp/druid/storage
    druid.cache.type = local
    druid.cache.sizeInBytes = 0
    druid.cache.initialSize = 500000
    druid.cache.logEvictionCount = 0
    druid.cache.expiration = 2592000
    druid.cache.timeout = 500
    druid.cache.hosts =
    druid.cache.maxObjectSize = 52428800
    druid.cache.memcachedPrefix = druid
    druid.selectors.indexing.serviceName = druid:overlord
    druid.metadata.storage.connector.user = aaaaaaa
    druid.metadata.storage.connector.password = aaaaaaaa
    druid.metadata.storage.connector.connectURI = jdbc:mysql://aaaaaaaaaaa:3306/druid?characterEncoding=UTF-8
    druid.s3.accessKey = aaaaaa
    druid.s3.secretKey = aaaaaa
    druid.storage.bucket = druid-pre
    druid.storage.baseKey = data/logs/v1
    My supervisor command:
    command=/usr/bin/java -server -Xmx1g -Xms1g -XX:NewSize=128m -XX:MaxNewSize=128m -XX:MaxDirectMemorySize=8g -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Duser.timezone=UTC -Dfile.encoding=UTF-8 -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Djava.io.tmpdir=/mnt/tmp -classpath /etc/druid/_common:/etc/druid/historical:/opt/druid/lib/* io.druid.cli.Main server historical

FIXED!

The problem was the name of the configuration file: **/etc/druid/historical/historical.runtime.properties -> **/etc/druid/historical/runtime.properties

Druid only read configuration files called runtime.properties!

Hi christian,
you can also specify which file to read configuration from through command line.

Adding -Ddruid.properties.file=/etc/druid/historical/historical.runtime.properties should also work.

Thank you Nishant for your advice