influxdata / influxdata/influxdb-client-java

Wrong column type when use wildcard with @Measurement

Ouverte
#609 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Java
Étoiles
477
Forks
129
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Steps to reproduce:

@Getter
public abstract class InfluxDbDefaultPoint<T> {

    @Column(timestamp = true)
    private final Instant time;
    @Column(tag = true)
    private final Long deviceId;
    @Column
    private final T value;

    public InfluxDbDefaultPoint(final Long deviceId, final T value) {
        this.time = Instant.now();
        this.deviceId = deviceId;
        this.value = value;
    }
}

@Measurement(name = "temperature")
public class InfluxDbTemperaturePoint extends InfluxDbDefaultPoint<Double> {

    public InfluxDbTemperaturePoint(Long deviceId, Double value) {
        super(deviceId, value);
    }
}

public static void main(String[] args) {
        final InfluxDBClient database = InfluxDBClientFactory.create("http://localhost:8200","<token>".toCharArray(),"<org>","<bucket>");
        database.getWriteApiBlocking().writeMeasurement(WritePrecision.S, new InfluxDbTemperaturePoint(0L,30.0));
    }

When I try to send such a prepared model to influxdb, I get an error: HTTP status code: 422; Message: failure writing points to database: partial write: field type conflict: input field "value" on measurement "temperature" is type string, already exists as type float dropped=1.

Previously I had an InfluxDbTemperaturePoint object without wildcard and it worked fine - it saved double

Expected behavior:
It should save the value 30.0 as float/dobule.

Actual behavior:
It tries to save the value 30.0 as a string.

Specifications:

  • Client Version: 6.9.0
  • InfluxDB Version: v2.7.1
  • JDK Version: Java(TM) SE Runtime Environment (build 19.0.2+7-44)
  • Platform: Windows

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire le problème avec l’exemple de @Measurement, @Column, InfluxDbDefaultPoint et InfluxDbTemperaturePoint via writeMeasurement. Suivez la manière dont la valeur du champ générique wildcard est classifiée avant la sérialisation, puis vérifiez que 30.0 est écrit comme un champ numérique plutôt que comme une chaîne, sans casser le cas non-wildcard.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
databases
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.