Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

JiraIssueChangelogItems primary key collision when Jira reports multiple items with the same field in one changelog entry

Abierto
#9,057 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
64/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
go

Línea de trabajo

Comienza con backend/plugins/jira/models/issue_changelog.go y luego sigue la ruta de upsert del extractor de Jira para JiraIssueChangelogItems. Reproduce los dos elementos con el mismo campo e inspecciona las implicaciones del cambio de esquema; se considera terminado cuando ambos elementos persisten sin colisiones después de volver a extraer, con cobertura de regresión para el caso reportado.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

JiraIssueChangelogItems has a composite primary key of (ConnectionId, ChangelogId, Field). When Jira returns multiple items with the same Field value within a single changelog history entry, the second item silently overwrites the first on upsert.

Steps to reproduce
  1. Have a Jira issue where a single-value field (e.g. fixVersions) is changed from value A to value B in one action
  2. Jira's API represents this as two changelog items in the same history entry:
    • Fix Version: null → B (add)
    • Fix Version: A → null (remove)
  3. Both items share the same ChangelogId and Field = "Fix Version"
  4. Run the Jira extractor — only one item survives in _tool_jira_issue_changelog_items
Expected behavior

Both changelog items should be stored — the add and the remove.

Actual behavior

The second item overwrites the first because they collide on the primary key (ConnectionId, ChangelogId, Field).

Impact

Any downstream query that relies on changelog items to detect whether a specific value was ever added to a field (e.g. filtering issues by historical fixVersions) will produce incorrect results. This affects fixVersions, labels, components, affectedVersions, and any other field where Jira emits multiple items with the same field name in one history entry.

Suggested fix

Add a disambiguating column to the primary key — for example an item ordinal/index within the changelog entry. The model is in backend/plugins/jira/models/issue_changelog.go:

type JiraIssueChangelogItems struct {
    ConnectionId uint64 `gorm:"primaryKey"`
    ChangelogId  uint64 `gorm:"primaryKey"`
    Field        string `gorm:"primaryKey"`
    // no item-level disambiguator
}

Existing data would need re-extraction after the schema change, since collided rows already lost one of the two items.

Version

Verified on v1.0.3-beta10 and confirmed the PK is unchanged on main as of 2026-08-17.

Lenguaje dominante
Go
Estrellas
3.1k
Forks
812
Merge medio
1 d 23 h
PR fusionados (30 d)
51

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/devlake

Todos los issues de apache/devlake

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.