Skip to content

ivfflat memory escape to heap#23826

Merged
mergify[bot] merged 26 commits intomatrixorigin:mainfrom
cpegeric:ivf_escapeheap
Mar 16, 2026
Merged

ivfflat memory escape to heap#23826
mergify[bot] merged 26 commits intomatrixorigin:mainfrom
cpegeric:ivf_escapeheap

Conversation

@cpegeric
Copy link
Copy Markdown
Contributor

@cpegeric cpegeric commented Mar 9, 2026

What type of PR is this?

  • API-change
  • BUG
  • Improvement
  • Documentation
  • Feature
  • Test and CI
  • Code Refactoring

Which issue(s) this PR fixes:

issue #23712

What this PR does / why we need it:

  1. fix the memory escape to heap in kmeans, brute force index
  2. use sample() in ivf_create
  3. remove get slow centroid stats in ivf search

@qodo-code-review
Copy link
Copy Markdown

ⓘ You are approaching your monthly quota for Qodo. Upgrade your plan

Review Summary by Qodo

🐞 Bug fix

Grey Divider

Walkthroughs

Description
• Fix memory escape to heap in kmeans and brute force index
• Use object pools for temporary allocations in vector operations
• Replace RAND() with SAMPLE() function for IVF index creation
• Remove centroid statistics tracking and small centroid threshold logic
• Migrate to math/rand/v2 and use stack-allocated temporary buffers
Diagram
flowchart LR
  A["Memory Allocations"] -->|"Use sync.Pool"| B["Brute Force Index"]
  A -->|"Use sync.Pool"| C["Product L2 Operator"]
  A -->|"Use malloc allocator"| D["KMeans Clustering"]
  E["IVF Index Creation"] -->|"Replace RAND with SAMPLE"| F["Sampling"]
  G["IVF Search"] -->|"Remove centroid stats"| H["Simplified Logic"]
  I["Random Generation"] -->|"Migrate to math/rand/v2"| J["New RNG API"]
Loading

Grey Divider

File Changes

1. pkg/common/util/unsafe.go ✨ Enhancement +5/-0

Add UnsafeSizeOf generic helper function

pkg/common/util/unsafe.go


2. pkg/frontend/variables.go ⚙️ Configuration changes +0/-8

Remove ivf_small_centroid_threshold system variable

pkg/frontend/variables.go


3. pkg/sql/colexec/productl2/product_l2.go 🐞 Bug fix +104/-40

Implement object pools for vector allocations

pkg/sql/colexec/productl2/product_l2.go


View more (11)
4. pkg/sql/colexec/productl2/types.go 🐞 Bug fix +8/-0

Add pool-based fields for center and null vectors

pkg/sql/colexec/productl2/types.go


5. pkg/sql/colexec/table_function/ivf_create.go ✨ Enhancement +11/-2

Replace RAND with SAMPLE and add logging

pkg/sql/colexec/table_function/ivf_create.go


6. pkg/vectorindex/brute_force/brute_force.go 🐞 Bug fix +102/-13

Implement sync.Pool for dataset and result allocations

pkg/vectorindex/brute_force/brute_force.go


7. pkg/vectorindex/brute_force/cpu.go ✨ Enhancement +2/-1

Add nthread parameter to NewBruteForceIndex

pkg/vectorindex/brute_force/cpu.go


8. pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go 🐞 Bug fix +93/-23

Use malloc allocator and pre-allocated buffers in kmeans

pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go


9. pkg/vectorindex/ivfflat/kmeans/elkans/clusterer_bench_test.go 🧪 Tests +2/-2

Update to math/rand/v2 API

pkg/vectorindex/ivfflat/kmeans/elkans/clusterer_bench_test.go


10. pkg/vectorindex/ivfflat/kmeans/elkans/clusterer_test.go 🧪 Tests +17/-9

Update tests for new random and allocation behavior

pkg/vectorindex/ivfflat/kmeans/elkans/clusterer_test.go


11. pkg/vectorindex/ivfflat/kmeans/elkans/initializer.go 🐞 Bug fix +9/-11

Migrate to math/rand/v2 and remove stored rand field

pkg/vectorindex/ivfflat/kmeans/elkans/initializer.go


12. pkg/vectorindex/ivfflat/kmeans/elkans/initializer_test.go 🧪 Tests +5/-8

Update expected values for new random initialization

pkg/vectorindex/ivfflat/kmeans/elkans/initializer_test.go


13. pkg/vectorindex/ivfflat/search.go 🐞 Bug fix +23/-94

Remove centroid stats and simplify bloom filter logic

pkg/vectorindex/ivfflat/search.go


14. pkg/vectorindex/ivfflat/search_test.go 🧪 Tests +0/-55

Remove tests for merged centroids functionality

pkg/vectorindex/ivfflat/search_test.go


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented Mar 9, 2026

Code Review by Qodo

🐞 Bugs (5) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider


Action required

1. Centroid scratch aliases dataset 🐞 Bug ✓ Correctness
Description
In Elkan kmeans, km.nextCentroids is swapped with km.centroids and then reused as the mutable
scratch buffer, but InitCentroids returns centroid slices that alias km.vectorList entries. This
makes recalculateCentroids overwrite the original training vectors in later iterations, yielding
incorrect centroids and corrupting the input dataset.
Code

pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go[R287-292]

+		newCentroids := km.recalculateCentroids(ctx, rnd, km.nextCentroids, km.membersCount) // step 4

-		km.updateBounds(ctx, newCentroids) // step 5 and 6
+		km.updateBounds(ctx, newCentroids, km.centroidShiftDist) // step 5 and 6

-		km.centroids = newCentroids // step 7
+		km.centroids, km.nextCentroids = newCentroids, km.centroids // step 7
Evidence
elkansCluster computes newCentroids into km.nextCentroids and then swaps km.nextCentroids to the
previous km.centroids; because initial km.centroids elements are direct references to km.vectorList
vectors, the next iteration’s recalculateCentroids zeroing/writes will mutate those underlying
vectors.

pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go[275-292]
pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go[552-560]
pkg/vectorindex/ivfflat/kmeans/elkans/initializer.go[44-63]
pkg/vectorindex/ivfflat/kmeans/elkans/initializer.go[93-100]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`InitCentroids` returns centroid slices that alias `km.vectorList` vectors. After the first iteration, `elkansCluster` swaps `km.nextCentroids` with `km.centroids`, causing the next call to `recalculateCentroids` to use those aliased slices as the writable scratch buffer and overwrite the training data.

### Issue Context
`recalculateCentroids` explicitly zeroes and accumulates into the provided `newCentroids` buffer.

### Fix Focus Areas
- pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go[275-292]
- pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go[552-560]
- pkg/vectorindex/ivfflat/kmeans/elkans/initializer.go[44-63]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Go slice stored in C 🐞 Bug ⛯ Reliability
Description
NewKMeans allocates km.nextCentroids backing storage via a C allocator and unsafe slice casts, but
recalculateCentroids can assign a Go-heap slice (randVector) into newCentroids[c] for empty
clusters. This stores an untracked Go pointer in non-Go memory, risking GC use-after-free and memory
corruption.
Code

pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go[R578-583]

			randVector := make([]T, len(km.vectorList[0]))
			for l := range randVector {
-				randVector[l] = T(km.rand.Float32())
+				randVector[l] = T(rnd.Float32())
			}
			newCentroids[c] = randVector
Evidence
nextCentroids is backed by memory returned from malloc.NewCAllocator().Allocate(...) and cast to
[][]T. Writing a Go-allocated slice header (randVector) into that non-Go backing array makes the
GC unaware of the reference to Go heap memory.

pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go[107-173]
pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go[548-583]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
Empty-cluster handling assigns a Go-heap slice (`randVector`) into `newCentroids[c]`, but `newCentroids` can be backed by C-allocated memory. This stores a Go pointer in non-Go memory and can lead to GC unsafety and memory corruption.

### Issue Context
`nextCentroids` is built from `malloc.NewCAllocator().Allocate` memory and converted with `UnsafeSliceCastToLength`.

### Fix Focus Areas
- pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go[107-173]
- pkg/vectorindex/ivfflat/kmeans/elkans/clusterer.go[571-588]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. GPU build API mismatch 🐞 Bug ✓ Correctness
Description
The !gpu brute_force.NewBruteForceIndex signature was changed to add an nthread parameter and call
sites were updated, but the gpu-tagged implementation still uses the old 4-argument signature.
Building with -tags gpu will fail due to this signature mismatch.
Code

pkg/vectorindex/brute_force/cpu.go[R25-31]

func NewBruteForceIndex[T types.RealNumbers](dataset [][]T,
	dimension uint,
	m metric.MetricType,
-	elemsz uint) (cache.VectorIndexSearchIf, error) {
+	elemsz uint,
+	nthread uint) (cache.VectorIndexSearchIf, error) {

	return NewCpuBruteForceIndex[T](dataset, dimension, m, elemsz)
Evidence
The cpu build variant now requires 5 arguments, and non-tagged call sites (e.g., ivfflat/search.go)
pass 5 arguments; under -tags gpu, the gpu build variant defines a 4-argument function with the
same name, causing compile-time mismatch.

pkg/vectorindex/brute_force/cpu.go[25-32]
pkg/vectorindex/brute_force/gpu.go[45-49]
pkg/vectorindex/ivfflat/search.go[239-244]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
CPU and GPU build variants expose different `NewBruteForceIndex` function signatures, breaking `-tags gpu` builds.

### Issue Context
Non-tagged call sites now pass 5 args.

### Fix Focus Areas
- pkg/vectorindex/brute_force/cpu.go[25-32]
- pkg/vectorindex/brute_force/gpu.go[45-60]
- pkg/vectorindex/ivfflat/search.go[238-244]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (1)
4. Stats count ignores version 🐞 Bug ✓ Correctness
Description
IvfflatSearchIndex.LoadStats now counts all rows in the entries table without filtering by
idx.Version. This makes Meta.DataSize inconsistent with version-scoped entry queries and can
mis-size bloom filters and other heuristics.
Code

pkg/vectorindex/ivfflat/search.go[R78-83]

+	logutil.Infof("IVFFLAT START: gets data size")
+	sql := fmt.Sprintf("SELECT COUNT(1) FROM `%s`.`%s`",
		tblcfg.DbName, tblcfg.EntriesTable,
-		catalog.SystemSI_IVFFLAT_TblCol_Entries_version,
-		idx.Version,
-		catalog.SystemSI_IVFFLAT_TblCol_Entries_id,
	)

	res, err := runSql(sqlproc, sql)
Evidence
Entries are clearly versioned (other queries include entries_version = idx.Version), but
LoadStats’ COUNT query no longer filters by version, so it overcounts when multiple versions exist.

pkg/vectorindex/ivfflat/search.go[78-95]
pkg/vectorindex/ivfflat/search.go[158-165]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`LoadStats` counts entries across all versions, but subsequent operations are version-filtered, making `Meta.DataSize` incorrect.

### Issue Context
The entries table is versioned and queries elsewhere use `entries_version = idx.Version`.

### Fix Focus Areas
- pkg/vectorindex/ivfflat/search.go[72-97]
- pkg/vectorindex/ivfflat/search.go[154-166]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

5. Pools pin batch buffers 🐞 Bug ➹ Performance
Description
productl2 returns pooled [][]float32/[][]float64 slices to sync.Pool without clearing elements or
shrinking length, even though each element is a zero-copy slice over batch bytes. This can retain
references to large batch buffers in the pool and prevent timely memory reclamation.
Code

pkg/sql/colexec/productl2/product_l2.go[R290-304]

+	if ctr.centersF32 != nil {
+		put1D(&pool2DF32, ctr.centersF32)
+		ctr.centersF32 = nil
+	}
+	if ctr.centersF64 != nil {
+		put1D(&pool2DF64, ctr.centersF64)
+		ctr.centersF64 = nil
+	}
+	if ctr.nullvecF32 != nil {
+		put1D(&pool1DF32, ctr.nullvecF32)
+		ctr.nullvecF32 = nil
+	}
+	if ctr.nullvecF64 != nil {
+		put1D(&pool1DF64, ctr.nullvecF64)
+		ctr.nullvecF64 = nil
Evidence
Centroid/probe vectors come from types.BytesToArray, which is a zero-copy unsafe cast over the
input bytes. Those inner slices are stored into the pooled outer slice and then the outer slice
pointer is returned to sync.Pool as-is, keeping those references alive while the pooled object
remains reachable.

pkg/sql/colexec/productl2/product_l2.go[152-160]
pkg/sql/colexec/productl2/product_l2.go[226-248]
pkg/sql/colexec/productl2/product_l2.go[285-305]
pkg/container/types/encoding.go[62-72]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
Pooled outer slices keep references to zero-copy inner slices backed by batch bytes, pinning those buffers until overwritten.

### Issue Context
`BytesToArray`/`DecodeSlice` is a zero-copy unsafe cast, so retaining the resulting slices retains the underlying batch buffers.

### Fix Focus Areas
- pkg/sql/colexec/productl2/product_l2.go[135-173]
- pkg/sql/colexec/productl2/product_l2.go[219-248]
- pkg/sql/colexec/productl2/product_l2.go[285-306]
- pkg/container/types/encoding.go[62-72]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

@matrix-meow matrix-meow added the size/L Denotes a PR that changes [500,999] lines label Mar 9, 2026
@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented Mar 13, 2026

Merge Queue Status

  • Entered queue2026-03-13 10:44 UTC · Rule: main
  • Checks started · in-place
  • 🚫 Left the queue2026-03-13 11:07 UTC · at 5a05e1497bce58deddaccd4b08c26275f71a6a2e

This pull request spent 23 minutes 49 seconds in the queue, with no time running CI.

Required conditions to merge
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Compose CI / multi cn e2e bvt test docker compose(PESSIMISTIC)
    • check-skipped = Matrixone Compose CI / multi cn e2e bvt test docker compose(PESSIMISTIC)
    • check-success = Matrixone Compose CI / multi cn e2e bvt test docker compose(PESSIMISTIC)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Standlone CI / Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY)
    • check-skipped = Matrixone Standlone CI / Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY)
    • check-success = Matrixone Standlone CI / Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC)
    • check-skipped = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC)
    • check-success = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone CI / UT Test on Ubuntu/x86
    • check-skipped = Matrixone CI / UT Test on Ubuntu/x86
    • check-success = Matrixone CI / UT Test on Ubuntu/x86
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Compose CI / multi cn e2e bvt test docker compose(Optimistic/PUSH)
    • check-skipped = Matrixone Compose CI / multi cn e2e bvt test docker compose(Optimistic/PUSH)
    • check-success = Matrixone Compose CI / multi cn e2e bvt test docker compose(Optimistic/PUSH)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH,Optimistic)
    • check-skipped = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH,Optimistic)
    • check-success = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH,Optimistic)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Upgrade CI / Compatibility Test With Target on Linux/x64(LAUNCH)
    • check-skipped = Matrixone Upgrade CI / Compatibility Test With Target on Linux/x64(LAUNCH)
    • check-success = Matrixone Upgrade CI / Compatibility Test With Target on Linux/x64(LAUNCH)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Utils CI / Coverage
    • check-skipped = Matrixone Utils CI / Coverage
    • check-success = Matrixone Utils CI / Coverage
  • #approved-reviews-by >= 1 [🛡 GitHub branch protection]
  • #changes-requested-reviews-by = 0 [🛡 GitHub branch protection]
  • #review-threads-unresolved = 0 [🛡 GitHub branch protection]
  • branch-protection-review-decision = APPROVED [🛡 GitHub branch protection]
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone CI / SCA Test on Ubuntu/x86
    • check-neutral = Matrixone CI / SCA Test on Ubuntu/x86
    • check-skipped = Matrixone CI / SCA Test on Ubuntu/x86

Reason

The merge conditions cannot be satisfied due to failing checks

Hint

You may have to fix your CI before adding the pull request to the queue again.
If you update this pull request, to fix the CI, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio queue comment.

@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented Mar 14, 2026

Merge Queue Status

  • Entered queue2026-03-14 09:28 UTC · Rule: main
  • Checks started · in-place
  • 🚫 Left the queue2026-03-14 09:50 UTC · at d1e82709164b9c17c689a32e7bbed9d6d47e29bd

This pull request spent 21 minutes 58 seconds in the queue, with no time running CI.

Required conditions to merge
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Compose CI / multi cn e2e bvt test docker compose(PESSIMISTIC)
    • check-skipped = Matrixone Compose CI / multi cn e2e bvt test docker compose(PESSIMISTIC)
    • check-success = Matrixone Compose CI / multi cn e2e bvt test docker compose(PESSIMISTIC)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Standlone CI / Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY)
    • check-skipped = Matrixone Standlone CI / Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY)
    • check-success = Matrixone Standlone CI / Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC)
    • check-skipped = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC)
    • check-success = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone CI / UT Test on Ubuntu/x86
    • check-skipped = Matrixone CI / UT Test on Ubuntu/x86
    • check-success = Matrixone CI / UT Test on Ubuntu/x86
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Compose CI / multi cn e2e bvt test docker compose(Optimistic/PUSH)
    • check-skipped = Matrixone Compose CI / multi cn e2e bvt test docker compose(Optimistic/PUSH)
    • check-success = Matrixone Compose CI / multi cn e2e bvt test docker compose(Optimistic/PUSH)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH,Optimistic)
    • check-skipped = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH,Optimistic)
    • check-success = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH,Optimistic)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Upgrade CI / Compatibility Test With Target on Linux/x64(LAUNCH)
    • check-skipped = Matrixone Upgrade CI / Compatibility Test With Target on Linux/x64(LAUNCH)
    • check-success = Matrixone Upgrade CI / Compatibility Test With Target on Linux/x64(LAUNCH)
  • any of [🛡 GitHub branch protection]:
    • check-neutral = Matrixone Utils CI / Coverage
    • check-skipped = Matrixone Utils CI / Coverage
    • check-success = Matrixone Utils CI / Coverage
  • #approved-reviews-by >= 1 [🛡 GitHub branch protection]
  • #changes-requested-reviews-by = 0 [🛡 GitHub branch protection]
  • #review-threads-unresolved = 0 [🛡 GitHub branch protection]
  • branch-protection-review-decision = APPROVED [🛡 GitHub branch protection]
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone CI / SCA Test on Ubuntu/x86
    • check-neutral = Matrixone CI / SCA Test on Ubuntu/x86
    • check-skipped = Matrixone CI / SCA Test on Ubuntu/x86

Reason

The merge conditions cannot be satisfied due to failing checks

Hint

You may have to fix your CI before adding the pull request to the queue again.
If you update this pull request, to fix the CI, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio queue comment.

@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented Mar 16, 2026

Merge Queue Status

  • Entered queue2026-03-16 10:48 UTC · Rule: main
  • Checks passed · in-place
  • Merged2026-03-16 10:48 UTC · at dd54724e6ca4ef34432a1f06c58a17097b51872c

This pull request spent 13 seconds in the queue, with no time running CI.

Required conditions to merge
  • #approved-reviews-by >= 1 [🛡 GitHub branch protection]
  • #changes-requested-reviews-by = 0 [🛡 GitHub branch protection]
  • #review-threads-unresolved = 0 [🛡 GitHub branch protection]
  • branch-protection-review-decision = APPROVED [🛡 GitHub branch protection]
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone Compose CI / multi cn e2e bvt test docker compose(PESSIMISTIC)
    • check-neutral = Matrixone Compose CI / multi cn e2e bvt test docker compose(PESSIMISTIC)
    • check-skipped = Matrixone Compose CI / multi cn e2e bvt test docker compose(PESSIMISTIC)
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone Standlone CI / Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY)
    • check-neutral = Matrixone Standlone CI / Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY)
    • check-skipped = Matrixone Standlone CI / Multi-CN e2e BVT Test on Linux/x64(LAUNCH, PROXY)
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC)
    • check-neutral = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC)
    • check-skipped = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH, PESSIMISTIC)
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone CI / SCA Test on Ubuntu/x86
    • check-neutral = Matrixone CI / SCA Test on Ubuntu/x86
    • check-skipped = Matrixone CI / SCA Test on Ubuntu/x86
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone CI / UT Test on Ubuntu/x86
    • check-neutral = Matrixone CI / UT Test on Ubuntu/x86
    • check-skipped = Matrixone CI / UT Test on Ubuntu/x86
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone Compose CI / multi cn e2e bvt test docker compose(Optimistic/PUSH)
    • check-neutral = Matrixone Compose CI / multi cn e2e bvt test docker compose(Optimistic/PUSH)
    • check-skipped = Matrixone Compose CI / multi cn e2e bvt test docker compose(Optimistic/PUSH)
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH,Optimistic)
    • check-neutral = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH,Optimistic)
    • check-skipped = Matrixone Standlone CI / e2e BVT Test on Linux/x64(LAUNCH,Optimistic)
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone Upgrade CI / Compatibility Test With Target on Linux/x64(LAUNCH)
    • check-neutral = Matrixone Upgrade CI / Compatibility Test With Target on Linux/x64(LAUNCH)
    • check-skipped = Matrixone Upgrade CI / Compatibility Test With Target on Linux/x64(LAUNCH)
  • any of [🛡 GitHub branch protection]:
    • check-success = Matrixone Utils CI / Coverage
    • check-neutral = Matrixone Utils CI / Coverage
    • check-skipped = Matrixone Utils CI / Coverage

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/bug Something isn't working size/XL Denotes a PR that changes [1000, 1999] lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants