On Tuesday, October 18, 2016 at 1:17:22 PM UTC-4, [email protected] wrote: > The precision as specified in the query string[1] is treated as truth. If you > provide a timestamp at millisecond resolution, but don't specify the > precision or specify it as nanoseconds, the timestamp will be interpreted as > nanoseconds. (The current unix time in milliseconds, interpreted as > nanoseconds, will be about 24 minutes into Jan 1 1970.) > > A couple relevant places in the code are setting the precision of a point [2] > and handling precision and writing points in the HTTP handler [3]. > > [1] > https://docs.influxdata.com/influxdb/v1.0/tools/api/#query-string-parameters-1 > [2] > https://github.com/influxdata/influxdb/blob/cea7690b728a23a7a196020ea411707d2807d176/models/points.go#L1364-L1378 > [3] > https://github.com/influxdata/influxdb/blob/cea7690b728a23a7a196020ea411707d2807d176/services/httpd/handler.go#L645-L692 > > On Tuesday, October 18, 2016 at 10:02:15 AM UTC-7, [email protected] wrote: > > I'm looking to fix the influxdb-java client library as it forces all point > > timestamps to nanosecond precision, which is a waste of space and hit in > > performance when only captured in millisecond precision. One of the > > questions however is understanding what InfluxDB does whenever the > > measurement timestamp precision doesn't match what was specified in the > > /write. > > > > Any clarity and links to code base would be very welcome!
Thanks for the links and clarification; makes sense. Since one of the best practices I've heard regarding InfluxDB is having lower precision as needed. The two issues I was alluding to were: 1) influxdb-java library org.influxdb.dto.Point.formatedTime() converts all timestamps to nanoseconds Source: https://github.com/influxdata/influxdb-java/blob/master/src/main/java/org/influxdb/dto/Point.java private StringBuilder formatedTime() { final StringBuilder sb = new StringBuilder(); if (null == this.time) { this.time = this.precision.convert(System.currentTimeMillis(),TimeUnit.MILLISECONDS); } sb.append(" ").append(TimeUnit.NANOSECONDS.convert(this.time, this.precision)); return sb; } 2) influxdb-java library org.influxdb.impl.InfluxDBImpl.write() methods forces nanosecond precision Source: https://github.com/influxdata/influxdb-java/blob/master/src/main/java/org/influxdb/impl/InfluxDBImpl.java execute(this.influxDBService.writePoints( this.username, this.password, batchPoints.getDatabase(), batchPoints.getRetentionPolicy(), TimeUtil.toTimePrecision(TimeUnit.NANOSECONDS), batchPoints.getConsistency().value(), lineProtocol)); Thanks again Sean / Mark! -- Remember to include the version number! --- You received this message because you are subscribed to the Google Groups "InfluxData" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/influxdb. To view this discussion on the web visit https://groups.google.com/d/msgid/influxdb/7a9587e5-fae9-460f-9a81-8a91632d7ab9%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
