//  This file tells Drill to consider this module when class path scanning.
//  This file can also include any supplementary configuration information.
//  This file is in HOCON format, see https://github.com/typesafehub/config/blob/master/HOCON.md for more information.

drill: {
  classpath.scanning: {
    packages += "org.apache.drill.exec.expr.fn.impl"
    packages += "org.apache.drill.exec.physical.config"
    packages += "org.apache.drill.exec.store"
  },
  exec: {
  cluster-id: "drillbits1"
  rpc: {
    user: {
      server: {
        port: 31010
        threads: 1
      }
      client: {
        threads: 1
      }
    },
    bit: {
      server: {
        port : 31011,
        retry:{
          count: 7200,
          delay: 500
        },
        threads: 1
      }
    },
    use.ip : false
  },
  optimizer: {
    implementation: "org.apache.drill.exec.opt.IdentityOptimizer"
  },
  functions: ["org.apache.drill.expr.fn.impl"],
  metrics : {
    context: "drillbit",
    jmx: {
      enabled : true
    },
    log: {
      enabled : false,
      interval : 60
    }
  },
  zk: {
    connect: "localhost:2181",
    root: "/drill",
    refresh: 500,
    timeout: 5000,
    retry: {
      count: 7200,
      delay: 500
    }
  },
  functions: ["org.apache.drill.expr.fn.impl"],
  network: {
    start: 35000
  },
  work: {
    max.width.per.endpoint: 1,
    global.max.width: 100,
    executor.threads: 1
  },
  trace: {
    directory: "/var/log/drill",
    filesystem: "file:///"
  },
  tmp: {
    directories: ["/tmp/drill"],
    filesystem: "drill-local:///"
  },
  spooling: {
    impl: "org.apache.drill.exec.work.batch.SpoolingRawBatchBuffer",
    delete: false,
    size: 0
  }
  }
}
