Druid is not surfacing results for IST timezone properly

We are in IST timezone which is +05:30 but Druid creates segment intervals in UTC, so when we create a data source with HOUR segment granularity, it creates the new hourly segment exactly at HH:30 minutes interval. Example,

  • (UTC) 13:00:00.000Z to 14:00:00.000Z segment is created at 18:30 IST
  • (UTC) 14:00:00.000Z to 15:00:00.000Z segment is created at 19:30 IST
    Because of this, our reporting which is at hour level (superset) doesn’t start displaying results for 18:00-19:00 IST until 18:30 IST.

The ingestion spec is provided below:

{
  "type": "kafka",
  "ioConfig": {
    "type": "kafka",
    "consumerProperties": {
      "bootstrap.servers": "10.x.x.x:9092"
    },
    "topic": "input_topic",
    "inputFormat": {
      "type": "json"
    },
    "useEarliestOffset": false,
    "taskCount": 3,
    "lateMessageRejectionPeriod": "PT24H"
  },
  "tuningConfig": {
    "type": "kafka",
    "maxBytesInMemory": 4294967296
  },
  "dataSchema": {
    "dataSource": "ds_hourly_live",
    "granularitySpec": {
      "type": "uniform",
      "queryGranularity": "HOUR",
      "segmentGranularity": "HOUR",
      "rollup": true
    },
    "timestampSpec": {
      "column": "event_time",
      "format": "millis"
    },
    "dimensionsSpec": {
      "dimensions": [
        "..."        
      ]
    },
    "metricsSpec": [
      "..."
    ]
  }
}

``

Druid processes are running in UTC (-Duser.timezone=UTC). We query using something like:

{
  "queryType": "topN",
  "dataSource": "ds_hourly_live",
  "aggregations": [
    {
      "type": "thetaSketch",
      "fieldName": "m1",
      "name": "m1"
    }
  ],
  "granularity": {"type": "period", "period": "PT1H", "timeZone": "Asia/Kolkata"},
  "postAggregations": [],
  "intervals": "2020-05-17T12:00:00+05:30/2020-05-18T00:00:00+05:30",
  "context": {
    "skipEmptyBuckets": true
  },
  "threshold": 10000,
  "metric": "m1",
  "dimension": "d1"
}

``