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/07/03 01:12:19 UTC

(skywalking-banyandb) branch main updated: Lifecycle only handle stream/measure/trace snapshots (#1202)

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 2c9946197 Lifecycle only handle stream/measure/trace snapshots (#1202)
2c9946197 is described below

commit 2c9946197a9df91dd02cffdeb880aa00a12f837d
Author: mrproliu <74...@qq.com>
AuthorDate: Fri Jul 3 09:12:15 2026 +0800

    Lifecycle only handle stream/measure/trace snapshots (#1202)
---
 CHANGES.md                        | 1 +
 banyand/backup/lifecycle/steps.go | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/CHANGES.md b/CHANGES.md
index 60bb76767..bcaee768d 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -126,6 +126,7 @@ Release Notes.
 - Consolidate lifecycle migration report errors into a single flat list of structured, stage-aware entries.
 - Fix backup container OOM from overlapping scheduled runs; serialize runs and upload small snapshot files concurrently.
 - Fix block metadata reset before unmarshal for stream and trace.
+- Lifecycle only handles stream/measure/trace snapshots, skipping other catalogs.
 
 ### Document
 
diff --git a/banyand/backup/lifecycle/steps.go b/banyand/backup/lifecycle/steps.go
index 72d4d5b30..0c3f1d9a3 100644
--- a/banyand/backup/lifecycle/steps.go
+++ b/banyand/backup/lifecycle/steps.go
@@ -60,6 +60,15 @@ func (l *lifecycleService) getSnapshots(ctx context.Context, groups []*commonv1.
 		return "", "", "", err
 	}
 	for _, snp := range snn {
+		// A data node broadcasts the snapshot request to every catalog listener it runs, so the
+		// response also carries property and schema-property snapshots. The lifecycle only migrates
+		// stream/measure/trace and has no property/schema root configured, so skip the rest to avoid
+		// resolving them against an empty root (which fails os.Stat and logs a spurious error).
+		switch snp.Catalog {
+		case commonv1.Catalog_CATALOG_STREAM, commonv1.Catalog_CATALOG_MEASURE, commonv1.Catalog_CATALOG_TRACE:
+		default:
+			continue
+		}
 		snapshotDir, errDir := snapshot.Dir(snp, l.streamRoot, l.measureRoot, "", l.traceRoot, "")
 		if errDir != nil {
 			l.l.Error().Err(errDir).Msgf("Failed to get snapshot directory for %s", snp.Name)