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

[BUG] MissingRequiredPropertyException: Missing required property 'ResourceStats.average' when polling _tasks API

Abierto Apto para principiantes
#2,008 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
72/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
java
Área
api, backend

Línea de trabajo

Comience con spec/schemas/_common.yaml y compare los requisitos de ResourceStats con la respuesta _tasks de OpenSearch 1.3 que se muestra aquí. Consulte la matriz de compatibilidad antes de cambiar la especificación y, después, verifique que se pueda gestionar una respuesta en curso que contenga únicamente resource_stats.total y que las pruebas existentes del cliente pasen.

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

Descripción

untriaged
What is the bug?

The ResourceStats schema in spec/schemas/_common.yaml of the opensearch-api-specification marks average, max, min, thread_info, and total as all required. However, the _tasks API on OpenSearch 1.3 only returns total in the resource_stats block when a task is in-flight.

Per the compatibility matrix, opensearch-java 3.x supports OpenSearch 1.x-3.x, so the spec should reflect what 1.x actually returns.

This causes the opensearch-java 3.8.0 client to throw:

org.opensearch.client.util.MissingRequiredPropertyException: Missing required property 'ResourceStats.average'
    at org.opensearch.client.util.ApiTypeHelper.requireNonNull(ApiTypeHelper.java:90)
    at org.opensearch.client.opensearch._types.ResourceStats.<init>(ResourceStats.java:82)
    at org.opensearch.client.opensearch._types.ResourceStats$Builder.build(ResourceStats.java:302)
    at org.opensearch.client.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:92)
How can one reproduce the bug?

1. Index test documents (100k+):

POST /test-index/_bulk
{"index":{"_id":"1"}}
{"date":"2020-01-01T00:00:00Z","status":"OPEN"}
{"index":{"_id":"2"}}
{"date":"2020-01-01T00:00:00Z","status":"OPEN"}
... (repeat to 100k+ documents)

2. Submit async delete-by-query:

POST /test-index/_delete_by_query?wait_for_completion=false&conflicts=proceed
{
  "query": {
    "range": {
      "date": {
        "lt": "now-6M/d"
      }
    }
  }
}

Response:

{
  "task": "nodeId:1234567"
}

3. Poll the task while it's still running:

GET /_tasks/nodeId:1234567

In-flight response (before task completes):

{
  "completed": false,
  "task": {
    "node": "nodeId",
    "id": 1234567,
    "type": "transport",
    "action": "indices:data/write/delete/byquery",
    "status": {
      "total": 100000,
      "updated": 0,
      "created": 0,
      "deleted": 11000,
      "batches": 12,
      "version_conflicts": 0,
      "noops": 0,
      "retries": {
        "bulk": 0,
        "search": 0
      },
      "throttled_millis": 0,
      "requests_per_second": -1.0,
      "throttled_until_millis": 0
    },
    "description": "delete-by-query [test-index]",
    "start_time_in_millis": 1781528541973,
    "running_time_in_nanos": 587603829,
    "cancellable": true,
    "cancelled": false,
    "headers": {},
    "resource_stats": {
      "total": {
        "cpu_time_in_nanos": 0,
        "memory_in_bytes": 0
      }
    }
  }
}

Note: resource_stats contains only total. The fields average, max, min, and thread_info are absent. The opensearch-java 3.8.0 client fails to deserialize this response because ResourceStats marks all five fields as required.

4. After task completes, resource_stats is no longer present in the response, which is why this only surfaces when polling in-flight tasks with large enough data volumes for the task to take seconds.

Environment
  • opensearch-java client version: 3.8.0
  • OpenSearch server: 1.3
  • Java version: 17
Lenguaje dominante
Java
Estrellas
165
Forks
257
Merge medio
1 d 1 h
PR fusionados (30 d)
44

Preparar el entorno

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 opensearch-project/opensearch-java

Todos los issues de opensearch-project/opensearch-java

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.