-
Notifications
You must be signed in to change notification settings - Fork 647
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Influxdb connector #1680
Merged
Merged
Influxdb connector #1680
Changes from 28 commits
Commits
Show all changes
95 commits
Select commit
Hold shift + click to select a range
0bc6432
Added reference and build.sbt files
gkatzioura 190ae83
Added result mapper helper and source for influxdb
gkatzioura 55a3a39
Fixed influxdb source
gkatzioura f7ba613
Added models for influxdb write operations
gkatzioura 778c91c
Added influxdb source stage
gkatzioura f4d9f30
Added influxdb flow stage
gkatzioura c4a420b
Added influxdb source implementation for scala
gkatzioura 2786a12
Added settings for influxdb database
gkatzioura c9a0b06
Added scala flow for influxdb connector
gkatzioura dfcce7f
Added scala dsl sink for influxdb connector
gkatzioura 9f49657
Added influxdb flow sink and source for java dsl
gkatzioura 4e4a3ee
Influxdb connector tests and utils for java dsl
gkatzioura 0c30e8b
Influxdb connector tests for scala dsl
gkatzioura 6ccf9b2
Added influxdb
gkatzioura 32b94c4
Influxdb connector result mapper helper
gkatzioura dc20c1a
Influxdb connector reference
gkatzioura 777b2b7
Influxdb Dependencies
gkatzioura 8230b65
Applied formatting on Influxdb connector
gkatzioura 9f92fe1
Fixed source stage
gkatzioura 6694915
InfluxDB connector compile for 2.11.12
huntc 9241e6f
Merge branch 'master' into influxdb.issue.1054
gkatzioura d9d4c19
Merge branch 'master' into influxdb.issue.1054
gkatzioura 8ccb0f8
InfluxDB connector disabled MimaPlugin
gkatzioura 6883fa2
InfluxDB connector added test to travis
gkatzioura 25e8171
InfluxDB connector added test to travis
gkatzioura ada72bb
InfluxDB connector added test to travis
gkatzioura 51f1e5b
Merge branch 'master' into influxdb.issue.1054
gkatzioura b165f25
Removed println
gkatzioura d7f10b8
Changed typos on spec for InfluxDB connector
gkatzioura 4ca0611
Changed to scala constants for InfluxDB connector
gkatzioura e356055
Add final to constants for InfluxDB connector
gkatzioura 66988af
Fixed typo for InfluxDB connector
gkatzioura 4f039ca
Fixed typo for InfluxDB connector
gkatzioura 3b5bbda
Added spaces on select statements for InfluxDB connector
gkatzioura 58209e2
Changed to hostname for InfluxDB connector
gkatzioura 14a4cfe
Switched settings class to case for InfluxDB connector
gkatzioura 501d708
Fixed reference spacing for InfluxDB connector
gkatzioura eabe031
Changed option to Some/None for InfluxDB connector
gkatzioura 9ba5263
Changed to (_ :+ _) from (seq, wm) => seq :+ wm on InfluxDB connector
gkatzioura 54c09c8
Added imports to clean flow for InfluxDB connector
gkatzioura 308a64d
Changed Option.empty() to None and used match cases for InfluxDB conn…
gkatzioura a6b9070
Changed to one liners
gkatzioura c50fd19
Changed to None for InfluxDB connector
gkatzioura 12cf067
Changed from option to some for InfluxDB connector
gkatzioura d5f984b
Changed on alpakka.influxdb on reference for InfluxDB connector
gkatzioura a12867c
Added information on database and retention policy on InfluxDBWriteMe…
gkatzioura a464927
Added result mapper utility for InfluxDB connector
gkatzioura 162b897
Changed flow to avoid batching for InfluxDB connector
gkatzioura dc61972
Set IODispatcher on InfluxDBFlowStage for InfluxDB connector
gkatzioura 395f373
Chnaged to val for InfluxDB connector
gkatzioura 4000c84
Removed unecessary variables InfluxDB connector
gkatzioura eaf6060
Applied formatting on InfluxDB connector
gkatzioura 1701901
Update influxdb/src/main/scala/akka/stream/alpakka/influxdb/impl/Infl…
gkatzioura a150cc4
Removed reference on InfluxDB connector
gkatzioura b50c5c4
Removed case class on settings for InfluxDB connector
gkatzioura 2f9fbe4
Merge branch 'master' into influxdb.issue.1054
gkatzioura 953738e
Changed to InfluxDb for InfluxDb connector
gkatzioura fb3f93d
Separated logic on flow for InfluxDb connector
gkatzioura fe55ee8
Added @InternalApi on InfluxDbFlowStage for InfluxDb connector
gkatzioura 364cdd9
Refactored file name for InfluxDb connector
gkatzioura 92e6943
Set source queries to be executed on the IODispatcher for InfluxDb co…
gkatzioura a249573
Set source queries to be executed on the IODispatcher for InfluxDb co…
gkatzioura 80d1489
Set query to run on IO Dispatcher, added test on query failure on Inf…
gkatzioura 8876c26
Fail stage on error for source on InfluxDb connector
gkatzioura ac63395
Added error handling per source on InfluxDb connector
gkatzioura 7b82e2d
Optimized imports on InfluxDb connector
gkatzioura 92f93d1
Changed the name for the result mapper on InfluxDb connector
gkatzioura f995ab9
Made no typed streams to points on InfluxDb connector
gkatzioura fe299a1
Made more functional retention policy check on InfluxDb connector
gkatzioura 8ee2a6d
Added @InternalApi on InfluxDb connector
gkatzioura 7d7ad27
Added read and write settings on InfluxDb connector
gkatzioura 018b2ab
excluding 2.11 scala version for influxdb connector
gkatzioura 7c59653
Fixing copy paste error for InfluxDb connector
gkatzioura dab160e
Added toString on InfluxDBWriteMessage for InfluxDb connector
gkatzioura 659e1a3
Added toString methods on InfluxDb connector
gkatzioura 54bc4d7
Refactored from apply to create on InfluDb connector
gkatzioura 19af35b
Formatted sbt for InfluxDb connector
gkatzioura f65689a
Removed logs test on InfluxDb connector
gkatzioura 14e692d
Changed to databaseName.orNull on InfluxDb connector
gkatzioura 32aa72c
Removed batch, in order for the user to submit immutable.Seq on Influ…
gkatzioura 5462a58
Merge branch 'master' into influxdb.issue.1054
gkatzioura 9d9412e
formatted InfluxDBSpec for InfluxDB connector
gkatzioura 045d84a
formatted Dependencies for InfluxDB connector
gkatzioura 77104f3
Removed influxDB.enableBatch(BatchOptions.DEFAULTS) and influxDB.clos…
gkatzioura 475142a
Moved runQuery to preStart so that there is data available on the fir…
gkatzioura 2bc55c3
Applied formatting on InfluxDb connector
gkatzioura 6a83218
Implemented base class for InfluxDbSourceLogic and InfluxDbSourceRawL…
gkatzioura b7bed8f
Added documentation for InfluxDb connector
gkatzioura fe70b98
Merge branch 'master' into influxdb.issue.1054
gkatzioura f5dd3d8
Formatted InfluxDbFlow for InfluxDb connector
gkatzioura 4185743
Added to project-info
gkatzioura de06fd6
Typo fix
gkatzioura efdb553
Added #init-client on InfluxdbSPec for InfluxDB connector
gkatzioura d96e68b
Added #init-client on InfluxDB connector
gkatzioura 441125d
Documentation fixes on InfluxDB connector
gkatzioura File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
60 changes: 60 additions & 0 deletions
60
influxdb/src/main/java/org/influxdb/impl/InfluxDBResultMapperHelper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
/* | ||
* Copyright (C) 2016-2019 Lightbend Inc. <http://www.lightbend.com> | ||
*/ | ||
|
||
package org.influxdb.impl; | ||
|
||
import java.lang.reflect.Field; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.concurrent.ConcurrentMap; | ||
import java.util.concurrent.TimeUnit; | ||
import java.util.stream.Collectors; | ||
|
||
import org.influxdb.InfluxDBMapperException; | ||
import org.influxdb.dto.QueryResult; | ||
|
||
public class InfluxDBResultMapperHelper { | ||
|
||
private final InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); | ||
|
||
public void cacheClassFields(final Class<?> clazz) { | ||
influxDBResultMapper.cacheMeasurementClass(clazz); | ||
} | ||
|
||
public <T> List<T> parseSeriesAs( | ||
final Class<T> clazz, final QueryResult.Series series, final TimeUnit precision) { | ||
influxDBResultMapper.cacheMeasurementClass(clazz); | ||
return series | ||
.getValues() | ||
.stream() | ||
.map(v -> parseRowAs(clazz, series.getColumns(), v, precision)) | ||
.collect(Collectors.toList()); | ||
} | ||
|
||
public <T> T parseRowAs( | ||
final Class<T> clazz, List<String> columns, final List<Object> values, TimeUnit precision) { | ||
|
||
try { | ||
ConcurrentMap<String, Field> fieldMap = influxDBResultMapper.getColNameAndFieldMap(clazz); | ||
|
||
T object = null; | ||
|
||
for (int i = 0; i < columns.size(); i++) { | ||
Field correspondingField = fieldMap.get(columns.get(i)); | ||
|
||
if (correspondingField != null) { | ||
if (object == null) { | ||
object = clazz.newInstance(); | ||
} | ||
|
||
influxDBResultMapper.setFieldValue(object, correspondingField, values.get(i), precision); | ||
} | ||
} | ||
|
||
return object; | ||
} catch (InstantiationException | IllegalAccessException e) { | ||
throw new InfluxDBMapperException(e); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
akka.stream.alpakka.influxdb{ | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
#batch write size | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
batchSize = 10 | ||
|
||
# The InfluxDB write precision | ||
precision = MILLISECONDS | ||
|
||
} |
33 changes: 33 additions & 0 deletions
33
influxdb/src/main/scala/akka/stream/alpakka/influxdb/InfluxDBSettings.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/* | ||
* Copyright (C) 2016-2019 Lightbend Inc. <http://www.lightbend.com> | ||
*/ | ||
|
||
package akka.stream.alpakka.influxdb | ||
|
||
import java.util.concurrent.TimeUnit | ||
|
||
import scala.concurrent.duration.TimeUnit | ||
|
||
object InfluxDBSettings { | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
val Default = new InfluxDBSettings(batchSize = 10, TimeUnit.MILLISECONDS) | ||
|
||
def apply(): InfluxDBSettings = Default | ||
|
||
} | ||
|
||
final class InfluxDBSettings private ( | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
val batchSize: Int, | ||
val precision: TimeUnit | ||
) { | ||
|
||
def withBatchSize(value: Int): InfluxDBSettings = copy(batchSize = value) | ||
|
||
private def copy( | ||
batchSize: Int = batchSize, | ||
precision: TimeUnit = precision | ||
): InfluxDBSettings = new InfluxDBSettings( | ||
batchSize = batchSize, | ||
precision = precision | ||
) | ||
|
||
} |
25 changes: 25 additions & 0 deletions
25
influxdb/src/main/scala/akka/stream/alpakka/influxdb/InfluxDBWriteMessage.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
/* | ||
* Copyright (C) 2016-2019 Lightbend Inc. <http://www.lightbend.com> | ||
*/ | ||
|
||
package akka.stream.alpakka.influxdb | ||
|
||
import akka.NotUsed | ||
|
||
object InfluxDBWriteMessage { | ||
// Apply method to use when not using passThrough | ||
def apply[T](point: T): InfluxDBWriteMessage[T, NotUsed] = | ||
InfluxDBWriteMessage(point, NotUsed) | ||
|
||
// Java-api - without passThrough | ||
def create[T](point: T): InfluxDBWriteMessage[T, NotUsed] = | ||
InfluxDBWriteMessage(point, NotUsed) | ||
|
||
// Java-api - with passThrough | ||
def create[T, C](point: T, passThrough: C) = | ||
InfluxDBWriteMessage(point, passThrough) | ||
} | ||
|
||
final case class InfluxDBWriteMessage[T, C](point: T, passThrough: C) | ||
|
||
final case class InfluxDBWriteResult[T, C](writeMessage: InfluxDBWriteMessage[T, C], error: Option[String]) |
85 changes: 85 additions & 0 deletions
85
influxdb/src/main/scala/akka/stream/alpakka/influxdb/impl/InfluxDBFlowStage.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/* | ||
* Copyright (C) 2016-2019 Lightbend Inc. <http://www.lightbend.com> | ||
*/ | ||
|
||
package akka.stream.alpakka.influxdb.impl | ||
|
||
import akka.stream.{Attributes, FlowShape, Inlet, Outlet} | ||
import akka.stream.alpakka.influxdb.{InfluxDBWriteMessage, InfluxDBWriteResult} | ||
import akka.stream.stage.{GraphStage, GraphStageLogic, InHandler, OutHandler} | ||
import org.influxdb.InfluxDB | ||
import org.influxdb.impl.InfluxDBMapper | ||
|
||
import scala.collection.immutable | ||
import org.influxdb.BatchOptions | ||
import org.influxdb.dto.Point | ||
|
||
/** | ||
* INTERNAL API | ||
*/ | ||
private[influxdb] class InfluxDBFlowStage[T, C]( | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
clazz: Option[Class[T]], | ||
influxDB: InfluxDB | ||
) extends GraphStage[FlowShape[immutable.Seq[InfluxDBWriteMessage[T, C]], immutable.Seq[InfluxDBWriteResult[T, C]]]] { | ||
private val in = Inlet[immutable.Seq[InfluxDBWriteMessage[T, C]]]("in") | ||
private val out = Outlet[immutable.Seq[InfluxDBWriteResult[T, C]]]("out") | ||
|
||
override val shape = FlowShape(in, out) | ||
|
||
override def createLogic(inheritedAttributes: Attributes): GraphStageLogic = | ||
clazz match { | ||
case Some(c) => new InfluxDBMapperRecordLogic | ||
case None => new InfluxDBRecordLogic | ||
} | ||
|
||
sealed abstract class InfluxDBLogic extends GraphStageLogic(shape) with InHandler with OutHandler { | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
protected def write(messages: immutable.Seq[InfluxDBWriteMessage[T, C]]): Unit | ||
|
||
setHandlers(in, out, this) | ||
|
||
override def onPull(): Unit = if (!isClosed(in) && !hasBeenPulled(in)) pull(in) | ||
|
||
override def onPush(): Unit = { | ||
val messages = grab(in) | ||
if (messages.nonEmpty) { | ||
|
||
influxDB.enableBatch(BatchOptions.DEFAULTS) | ||
write(messages) | ||
val writtenMessages = messages.map(m => new InfluxDBWriteResult(m, Option.empty)) | ||
influxDB.close() | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
push(out, writtenMessages) | ||
} | ||
|
||
tryPull(in) | ||
} | ||
} | ||
|
||
final class InfluxDBRecordLogic extends InfluxDBLogic { | ||
|
||
override protected def write(messages: immutable.Seq[InfluxDBWriteMessage[T, C]]): Unit = | ||
messages.foreach { | ||
case InfluxDBWriteMessage(point: Point, _) => { | ||
influxDB.write(point) | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
case InfluxDBWriteMessage(others: AnyRef, _) => | ||
failStage(new RuntimeException(s"unexpected type Point or annotated with Measurement required")) | ||
} | ||
|
||
} | ||
|
||
final class InfluxDBMapperRecordLogic extends InfluxDBLogic { | ||
|
||
protected var influxDBMapper: InfluxDBMapper = _ | ||
|
||
override def preStart(): Unit = | ||
influxDBMapper = new InfluxDBMapper(influxDB) | ||
|
||
override protected def write(messages: immutable.Seq[InfluxDBWriteMessage[T, C]]): Unit = | ||
messages.foreach { | ||
case InfluxDBWriteMessage(typeMetric: Any, _) => | ||
influxDBMapper.save(typeMetric) | ||
} | ||
} | ||
|
||
} |
128 changes: 128 additions & 0 deletions
128
influxdb/src/main/scala/akka/stream/alpakka/influxdb/impl/InfluxDBSourceStage.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
/* | ||
* Copyright (C) 2016-2019 Lightbend Inc. <http://www.lightbend.com> | ||
*/ | ||
|
||
package akka.stream.alpakka.influxdb.impl | ||
|
||
import java.util.concurrent.TimeUnit | ||
|
||
import akka.annotation.InternalApi | ||
import akka.stream.alpakka.influxdb.InfluxDBSettings | ||
import akka.stream.{Attributes, Outlet, SourceShape} | ||
import akka.stream.stage.{GraphStage, GraphStageLogic, OutHandler} | ||
import org.influxdb.InfluxDB | ||
import org.influxdb.dto.{Query, QueryResult} | ||
import org.influxdb.impl.InfluxDBResultMapperHelper | ||
|
||
import scala.collection.JavaConverters._ | ||
|
||
/** | ||
* INTERNAL API | ||
*/ | ||
@InternalApi | ||
private[influxdb] final class InfluxDBSourceStage[T](clazz: Class[T], | ||
settings: InfluxDBSettings, | ||
influxDB: InfluxDB, | ||
query: Query) | ||
extends GraphStage[SourceShape[T]] { | ||
|
||
val out: Outlet[T] = Outlet("InfluxDB.out") | ||
override val shape = SourceShape(out) | ||
|
||
override def createLogic(inheritedAttributes: Attributes): GraphStageLogic = | ||
new InfluxDBSourceLogic[T](clazz, settings, influxDB, query, out, shape) | ||
|
||
} | ||
|
||
/** | ||
* INTERNAL API | ||
*/ | ||
@InternalApi | ||
private[influxdb] final class InfluxDBSourceLogic[T](clazz: Class[T], | ||
settings: InfluxDBSettings, | ||
influxDB: InfluxDB, | ||
query: Query, | ||
outlet: Outlet[T], | ||
shape: SourceShape[T]) | ||
extends GraphStageLogic(shape) | ||
with OutHandler { | ||
|
||
setHandler(outlet, this) | ||
|
||
var dataRetrieved: Option[QueryResult] = Option.empty | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
var resultMapperHelper: InfluxDBResultMapperHelper = _ | ||
|
||
override def preStart(): Unit = { | ||
resultMapperHelper = new InfluxDBResultMapperHelper | ||
resultMapperHelper.cacheClassFields(clazz) | ||
|
||
val queryResult = influxDB.query(query) | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
if (!queryResult.hasError) { | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
dataRetrieved = Option(queryResult) | ||
} | ||
} | ||
|
||
override def onPull(): Unit = | ||
if (dataRetrieved.isEmpty) | ||
gkatzioura marked this conversation as resolved.
Show resolved
Hide resolved
|
||
completeStage() | ||
else { | ||
val queryResult = dataRetrieved.get | ||
for { | ||
result <- queryResult.getResults.asScala | ||
series <- result.getSeries.asScala | ||
}( | ||
emitMultiple(outlet, | ||
resultMapperHelper.parseSeriesAs(clazz, series, settings.precision).asScala.toIterator) | ||
) | ||
|
||
dataRetrieved = Option.empty | ||
} | ||
|
||
} | ||
|
||
/** | ||
* INTERNAL API | ||
*/ | ||
@InternalApi | ||
private[influxdb] final class InfluxDBRawSourceStage(query: Query, influxDB: InfluxDB) | ||
extends GraphStage[SourceShape[QueryResult]] { | ||
|
||
val out: Outlet[QueryResult] = Outlet("InfluxDB.out") | ||
override val shape = SourceShape(out) | ||
|
||
override def createLogic(inheritedAttributes: Attributes): GraphStageLogic = | ||
new InfluxDBSourceRawLogic(query, influxDB, out, shape) | ||
|
||
} | ||
|
||
/** | ||
* INTERNAL API | ||
*/ | ||
@InternalApi | ||
private[influxdb] final class InfluxDBSourceRawLogic(query: Query, | ||
influxDB: InfluxDB, | ||
outlet: Outlet[QueryResult], | ||
shape: SourceShape[QueryResult]) | ||
extends GraphStageLogic(shape) | ||
with OutHandler { | ||
|
||
setHandler(outlet, this) | ||
|
||
var dataRetrieved: Option[QueryResult] = Option.empty | ||
|
||
override def preStart(): Unit = { | ||
val queryResult = influxDB.query(query) | ||
if (!queryResult.hasError) { | ||
dataRetrieved = Option(queryResult) | ||
} | ||
} | ||
|
||
override def onPull(): Unit = | ||
if (dataRetrieved.isEmpty) { | ||
completeStage() | ||
} else { | ||
emit(outlet, dataRetrieved.get) | ||
dataRetrieved = Option.empty | ||
} | ||
|
||
} |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why does this class live in that package?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has to do with some package-private methods the influxdb-java driver contains which are used. I can extract them and put them in another class if needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is unfortunate to need the package-private methods. The least you can do is to name the class Alpakka-specific so that it won't collide with something in any dependencies.
Put an explanation in the class comment, please.