You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2026/08/19 01:51:38 UTC

(skywalking-banyandb) branch main updated: Fix flaky schema-merge tests near midnight (#1288)

This is an automated email from the ASF dual-hosted git repository.

hanahmily pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git


The following commit(s) were added to refs/heads/main by this push:
     new dcc10d4fc Fix flaky schema-merge tests near midnight (#1288)
dcc10d4fc is described below

commit dcc10d4fc2c783d099512af0b81fd1e8dc01f4d2
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Wed Aug 19 09:51:34 2026 +0800

    Fix flaky schema-merge tests near midnight (#1288)
---
 banyand/measure/metadata_test.go |  6 ++++--
 banyand/stream/metadata_test.go  | 13 +++++++++++--
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/banyand/measure/metadata_test.go b/banyand/measure/metadata_test.go
index 2eddc691b..e2d97ce1e 100644
--- a/banyand/measure/metadata_test.go
+++ b/banyand/measure/metadata_test.go
@@ -521,14 +521,16 @@ var _ = Describe("Schema Change", func() {
 			if elapsed := now.Sub(midnight); elapsed <= firstOffset {
 				firstOffset, secondOffset = elapsed/2, elapsed/4
 			}
+			firstBatchTime := now.Add(-firstOffset).Truncate(time.Millisecond)
+			secondBatchTime := now.Add(-secondOffset).Truncate(time.Millisecond)
 
 			env := setupSchemaChangeMeasure(svcs, measureName, measureSetupOptions{withExtraTag: true})
-			writeSchemaChangeMeasureData(svcs, measureName, now.Add(-firstOffset), 5,
+			writeSchemaChangeMeasureData(svcs, measureName, firstBatchTime, 5,
 				measureWriteDataOptions{withExtraTag: true})
 			filePartCountAfterFirstBatch, filePartCountErr := getMeasureFilePartCount(svcs, groupName)
 			Expect(filePartCountErr).ShouldNot(HaveOccurred())
 			changeExtraMeasureTagType(svcs, measureName)
-			writeSchemaChangeMeasureData(svcs, measureName, now.Add(-secondOffset), 3,
+			writeSchemaChangeMeasureData(svcs, measureName, secondBatchTime, 3,
 				measureWriteDataOptions{withExtraTagString: true, entityIDPrefix: "entity_new_"})
 			// Wait for the second batch to flush to disk, creating additional
 			// file parts that the merge loop can pick up. Without this gate the
diff --git a/banyand/stream/metadata_test.go b/banyand/stream/metadata_test.go
index 619636105..9c028fa07 100644
--- a/banyand/stream/metadata_test.go
+++ b/banyand/stream/metadata_test.go
@@ -509,12 +509,21 @@ var _ = Describe("Schema Change", func() {
 		It("querying data should return correct values after parts with different types are merged", func() {
 			streamName := "schema_change_tag_type_merge"
 			now := timestamp.NowMilli()
+			// Keep both batches in today's segment when the test runs near midnight;
+			// parts from different day segments cannot be merged.
+			firstOffset, secondOffset := 2*time.Hour, time.Hour
+			midnight := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
+			if elapsed := now.Sub(midnight); elapsed <= firstOffset {
+				firstOffset, secondOffset = elapsed/2, elapsed/4
+			}
+			firstBatchTime := now.Add(-firstOffset).Truncate(time.Millisecond)
+			secondBatchTime := now.Add(-secondOffset).Truncate(time.Millisecond)
 
 			env := setupSchemaChangeStream(svcs, streamName, groupName, streamSetupOptions{withExtraTag: true})
-			writeSchemaChangeData(svcs, streamName, groupName, now.Add(-2*time.Hour), 5,
+			writeSchemaChangeData(svcs, streamName, groupName, firstBatchTime, 5,
 				writeDataOptions{extraTag: extraTagInt})
 			changeExtraTagType(svcs, streamName, groupName)
-			writeSchemaChangeData(svcs, streamName, groupName, now.Add(-1*time.Hour), 3,
+			writeSchemaChangeData(svcs, streamName, groupName, secondBatchTime, 3,
 				writeDataOptions{extraTag: extraTagString, traceIDPrefix: "trace_new_", elementIDOffset: 5})
 			partCountBeforeMerge, partCountErr := getTotalStreamPartCount(svcs, groupName)
 			Expect(partCountErr).ShouldNot(HaveOccurred())