From f48d18eb50e927aa14af43282b25ac12fd5eb40d Mon Sep 17 00:00:00 2001 From: Radhakrishnan Pachyappan Date: Sun, 5 Jul 2026 14:05:00 +0530 Subject: [PATCH 1/2] Fix ISM/flow-framework/SM timestamp fields using integer instead of int64 Epoch-millisecond timestamps were typed as plain integer in the spec, causing the codegen to emit Integer (max ~2.1B) instead of Long for: - IsmTemplate.lastUpdatedTime (fixes #1717, #1898) - Policy.lastUpdatedTime (fixes #1717, #1898) - flow_framework created_time / last_updated_time (same root cause) - SM policy last_updated_time Any timestamp after ~2038-01-19 in milliseconds overflows int and Jackson raises: Numeric value out of range of int. Add format: int64 to all affected last_updated_time / created_time fields in opensearch-openapi.yaml and update the two generated ISM Java classes from Integer/integerDeserializer to Long/longDeserializer. Fixes #1717 Fixes #1898 Signed-off-by: Radhakrishnan Pachyappan --- .../opensearch/client/opensearch/ism/IsmTemplate.java | 10 +++++----- .../org/opensearch/client/opensearch/ism/Policy.java | 10 +++++----- java-codegen/opensearch-openapi.yaml | 5 +++++ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/java-client/src/generated/java/org/opensearch/client/opensearch/ism/IsmTemplate.java b/java-client/src/generated/java/org/opensearch/client/opensearch/ism/IsmTemplate.java index 8140035e18..a127dbaae9 100644 --- a/java-client/src/generated/java/org/opensearch/client/opensearch/ism/IsmTemplate.java +++ b/java-client/src/generated/java/org/opensearch/client/opensearch/ism/IsmTemplate.java @@ -65,7 +65,7 @@ public class IsmTemplate implements PlainJsonSerializable, ToCopyableBuilder indexPatterns; @Nullable - private final Integer lastUpdatedTime; + private final Long lastUpdatedTime; @Nullable private final Number priority; @@ -100,7 +100,7 @@ public final List indexPatterns() { *

*/ @Nullable - public final Integer lastUpdatedTime() { + public final Long lastUpdatedTime() { return this.lastUpdatedTime; } @@ -166,7 +166,7 @@ public static class Builder extends ObjectBuilderBase implements CopyableBuilder @Nullable private List indexPatterns; @Nullable - private Integer lastUpdatedTime; + private Long lastUpdatedTime; @Nullable private Number priority; @@ -229,7 +229,7 @@ public final Builder indexPatterns(String value, String... values) { *

*/ @Nonnull - public final Builder lastUpdatedTime(@Nullable Integer value) { + public final Builder lastUpdatedTime(@Nullable Long value) { this.lastUpdatedTime = value; return this; } @@ -272,7 +272,7 @@ public IsmTemplate build() { protected static void setupIsmTemplateDeserializer(ObjectDeserializer op) { op.add(Builder::indexPatterns, JsonpDeserializer.arrayDeserializer(JsonpDeserializer.stringDeserializer()), "index_patterns"); - op.add(Builder::lastUpdatedTime, JsonpDeserializer.integerDeserializer(), "last_updated_time"); + op.add(Builder::lastUpdatedTime, JsonpDeserializer.longDeserializer(), "last_updated_time"); op.add(Builder::priority, JsonpDeserializer.numberDeserializer(), "priority"); } diff --git a/java-client/src/generated/java/org/opensearch/client/opensearch/ism/Policy.java b/java-client/src/generated/java/org/opensearch/client/opensearch/ism/Policy.java index 4fa6fc9f5d..6e7bceb3bc 100644 --- a/java-client/src/generated/java/org/opensearch/client/opensearch/ism/Policy.java +++ b/java-client/src/generated/java/org/opensearch/client/opensearch/ism/Policy.java @@ -77,7 +77,7 @@ public class Policy implements PlainJsonSerializable, ToCopyableBuilder ismTemplate; @Nullable - private final Integer lastUpdatedTime; + private final Long lastUpdatedTime; @Nullable private final String policyId; @@ -156,7 +156,7 @@ public final List ismTemplate() { *

*/ @Nullable - public final Integer lastUpdatedTime() { + public final Long lastUpdatedTime() { return this.lastUpdatedTime; } @@ -279,7 +279,7 @@ public static class Builder extends ObjectBuilderBase implements CopyableBuilder @Nullable private List ismTemplate; @Nullable - private Integer lastUpdatedTime; + private Long lastUpdatedTime; @Nullable private String policyId; @Nullable @@ -418,7 +418,7 @@ public final Builder ismTemplate(Function */ @Nonnull - public final Builder lastUpdatedTime(@Nullable Integer value) { + public final Builder lastUpdatedTime(@Nullable Long value) { this.lastUpdatedTime = value; return this; } @@ -523,7 +523,7 @@ protected static void setupPolicyDeserializer(ObjectDeserializer op.add(Builder::description, JsonpDeserializer.stringDeserializer(), "description"); op.add(Builder::errorNotification, ErrorNotification._DESERIALIZER, "error_notification"); op.add(Builder::ismTemplate, JsonpDeserializer.arrayDeserializer(IsmTemplate._DESERIALIZER), "ism_template"); - op.add(Builder::lastUpdatedTime, JsonpDeserializer.integerDeserializer(), "last_updated_time"); + op.add(Builder::lastUpdatedTime, JsonpDeserializer.longDeserializer(), "last_updated_time"); op.add(Builder::policyId, JsonpDeserializer.stringDeserializer(), "policy_id"); op.add(Builder::schemaVersion, JsonpDeserializer.numberDeserializer(), "schema_version"); op.add(Builder::states, JsonpDeserializer.arrayDeserializer(States._DESERIALIZER), "states"); diff --git a/java-codegen/opensearch-openapi.yaml b/java-codegen/opensearch-openapi.yaml index b4829f72a0..c5afb13c19 100644 --- a/java-codegen/opensearch-openapi.yaml +++ b/java-codegen/opensearch-openapi.yaml @@ -56686,9 +56686,11 @@ components: $ref: '#/components/schemas/flow_framework.common___user' created_time: type: integer + format: int64 description: When the workflow was created. last_updated_time: type: integer + format: int64 description: When the workflow was last updated. last_provisioned_time: type: number @@ -61772,6 +61774,7 @@ components: description: The priority of the ISM template. last_updated_time: type: integer + format: int64 description: When the ISM template was last updated. ism._common___Metadata: type: object @@ -61797,6 +61800,7 @@ components: description: The description of the policy. last_updated_time: type: integer + format: int64 description: When the policy was last updated. schema_version: type: number @@ -70265,6 +70269,7 @@ components: type: boolean last_updated_time: type: integer + format: int64 description: When the policy was last modified. enabled_time: type: integer From b53cdbcc9b2677b1a95823452ee6d5e255a09ed7 Mon Sep 17 00:00:00 2001 From: Radhakrishnan Pachyappan Date: Sun, 5 Jul 2026 15:41:08 +0530 Subject: [PATCH 2/2] Add CHANGELOG entry for #2039 Signed-off-by: Radhakrishnan Pachyappan --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f85eaecf78..5df82fc59d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Add document lifecycle guide and runnable sample ([#2017](https://github.com/opensearch-project/opensearch-java/pull/2017)) ### Fixed +- Fix ISM timestamp fields typed as `Integer` instead of `Long` causing numeric overflow for epoch-millisecond values ([#2039](https://github.com/opensearch-project/opensearch-java/pull/2039)) ## [Unreleased 3.x] ### Added