Sync fork#1
Open
kislaykishore wants to merge 1445 commits into
Open
Conversation
…ive writer tracking (#4383) * Prevent metadata prefetch race conditions with write operations Implemented Context-Based Cancellation and Centralized Locking (active writer tracking) to prevent the background prefetcher from overwriting fresh metadata cache with stale data during concurrent write operations. Key changes: - Added `activeWriters` (atomic.Int32) to `DirInode` to track ongoing write operations. - Updated `MetadataPrefetcher` to skip execution if `activeWriters > 0`. - Updated `fs.go` write operations (`CreateFile`, `SyncFile`, `FlushFile`, `Rename`, `Unlink`, etc.) to: 1. Cancel the parent directory's current prefetch. 2. Increment `activeWriters` before the operation. 3. Decrement `activeWriters` after the operation. - Implemented recursive cancellation for `RenameFolder` and `DeleteChildDir` to stop prefetchers in the entire subtree. - Added helper `cancelParentPrefetchAndIncWriters` in `fs.go` to handle parent lookup and writer tracking. - Updated `baseDirInode` to satisfy the updated `DirInode` interface. - Added unit tests in `internal/fs/inode` to verify active writer checking and recursive cancellation. Co-authored-by: ashmeenkaur <57195160+ashmeenkaur@users.noreply.github.com> * fixes * add test * review comments * fix changes --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
* fix: Upgrade jacobsa/fuse for handling large page sizes This change brings this fix to GCSFuse: jacobsa/fuse@f1ba38d which adds handling for page sizes > 4KiB.
* Setting directConnectivityEnforced option for grpc * returning error if setting env variable fails * removed timeout
* added directpath strategy param * using directPathStrategy as type instead of string * fixed review comments
…e) and override local metadata in case of rapid appends (#4409) * do not overwrite latest metadata with stale server response in case of rapid appends * unit tests for appropriate cache eviction * unit test for init bwh if eligible method * explicit negative assertion in unit test : zonal * integration test for open-write-close-reopen * nits * improve comment clartiy * explanatory comment for stat call during bwh initialization * retrict relying on kernel obs in append mode only * remove redundant check for empty err * update test case * update comment about zb overwrites also requiring stat call * nit for comment
* remove type cache profile changes * unit tests fix * add warning for enable-nonexistent-type-cache * unit tests fix * review comments * review comments * review comments * review comment
#4423) * adding flag for symbolic link updated support * make flag experimental * fmt fix * fix tests flag to experimental
Added a known issue regarding premature EOF on A4X and A4X Max machines with 64KiB page-size kernels when setting a high read-ahead value. Included the workaround to disable streaming writes or not set read-ahead, and noted that the issue is present from v3.0 onwards and fixed in v3.7.2.
…t doesn't work (#4439) * added a stat call to check if dp is possible * added a stat call to check if dp is possible * more changes * more changes * gemini comments * review comments * reverting the test * fixing the directPath detector * fixing the directPath detector * added logs * using random names for files/directories in tests * fixing tests
* Move file_info_test.go to stretchr/testify
…configuration of chunk deadline (#4457) * add chunk retry deadline hidden flag for configuration of chunk deadline * fix gemini comments * fix gemini comments
…g being passed (#4426) * fix implicit directory issue with deprecation * gemini review * add e2e test * add positive test for implicit dir stat
* test: disable flaky Test_validateCRC_WheContextIsCancelled Disabled Test_validateCRC_WheContextIsCancelled in internal/cache/file/downloader/job_test.go because it is flaky.
* modify package installations & logging changes * Update perfmetrics/scripts/os_utils.sh Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * place log file debug before the test has started * fix indendation --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.5.0 to 2.6.3. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](urllib3/urllib3@2.5.0...2.6.3) --- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.6.3 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix(grpc): update grpc dependency to v1.79.2 and remove disabled client metrics option * fix(deps): update cloud.google.com/go/storage to v1.61.0 * fix(params): enable experimental gRPC metrics by default * fix(params): enable experimental gRPC metrics by default * Restoring params file * fix(deps): downgrade cloud.google.com/go/auth to v0.18.2 and update cloud.google.com/go/storage to v1.61.2
This adds a new flag, -wire-log=<path>, that enables the wire log that was recently added to jacobsa/fuse. When enabled, this will serialize every FUSE operation as a JSON object and append it to the specified file. The wire log is useful when analyzing workload patterns.
…4470) Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 6.33.1 to 6.33.5. - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Commits](https://github.com/protocolbuffers/protobuf/commits) --- updated-dependencies: - dependency-name: protobuf dependency-version: 6.33.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…_file package to avoid 429 errors (#4472) * using unique file names in each test to avoid 429 errors * review comments
…representation (#4424) * adding flag for symbolic link updated support * make flag experimental * CreateSymlink changes for new symlink supprt * adding unit tests
* feat(metrics): enable gRPC metrics by default in configuration * feat(metrics): enable gRPC metrics by default in configuration
…g validation to prevent invalid flag formats (#4834) Co-authored-by: Mohit Yadav <mohitkyadav@google.com>
…4803) * add memory and CPU workload benchmarks for MapLRU and StatCache * fixed license headers and path generation * fixed generatePaths and linter issues * modernize benchmark loops and document path shuffling * enforce path memory retention and cleanup
…ization (#4805) * feat(native-retries): add custom should-retry logic for mount initialization ### Description - Implemented `ShouldRetryOnMount`, `ShouldRetryOnMountWithRetryContext`, and `ShouldRetryOnMountWithMonitoringAndRetryContext` in `internal/storage/storageutil/custom_retry.go`. - Scoped mount initialization retries to standard transient errors (`ShouldRetryWithoutLogging`), missing buckets (`404` / `NotFound` with "bucket does not exist", case-insensitive), and `403` / `PermissionDenied`. - Configured retry logging in `ShouldRetryOnMountWithRetryContext` to use `logger.Errorf` to ensure visibility across standard error logs and GKE error files. ### Link to the issue in case of a bug fix. NA ### Testing details 1. Manual - NA 2. Unit tests - Added 5 table-driven test suites (19 cases) in `custom_retry_test.go` verifying nil guards, standard transient errors, thread-safe `logBuffer` concurrency, ERROR-level log output, case-insensitive missing bucket matching, and error categorization (`STALLED_READ_REQUEST` vs `OTHER_ERRORS`). Ran full package tests (`go test ./internal/storage/storageutil/...`). 3. Integration tests - NA ### Any backward incompatible change? If so, please explain. No * test(storageutil): add unit tests for wrapped gRPC and permanent errors on mount * refactor(native-retries): centralize mount retry error classification in determineRetryAction
…stify (#4809) * feat(Refactor): Migrate gcsx bucket_manager and temp_file tests to testify Helps in standard IDE integration, moving away from unmaintained library and unifying testing styles. * test: Remove unused Context from temp_file_test.go * test: Add nil checks to GetStorageLayout mock matchers
### Description The test: TestRmDirOutOfBandDeletedExplicitDirReturnsENOENT is failing for TPC environment for hns buckets. The RCA is as follows: In an HNS (Hierarchical Namespace) bucket, explicit directory operations (creating and deleting folders) are backed by GCS Folder resources via the Storage Control gRPC API. During TestRmDirOutOfBandDeletedExplicitDirReturnsENOENT: 1. The test creates a directory oob_deleted_explicit_dir on the GCSFuse mount. 2. It attempts an out-of-band (OOB) deletion on GCS via client.DeleteDirOnGCS(ctx, storageClient, ...). 3. Inside DeleteDirOnGCS (control_client.go), it calls CreateControlClient(ctx) and then DeleteFolderInBucket(ctx, controlClient, relativeDirPath). The Bug: CreateControlClient in tools/integration_tests/util/client/control_client.go was calling control.NewStorageControlClient(ctx) with default options—without passing the TPC endpoint (storage.apis-tpczero.goog:443) or the TPC authentication token source (/tmp/sa.key.json) when setup.TestOnTPCEndPoint() was enabled. As a result: * In TPC test runs, CreateControlClient failed or targeted commercial GCP endpoints (storagecontrol.googleapis.com), causing DeleteFolderInBucket to fail. * DeleteDirOnGCS ignored the error (_ = DeleteFolderInBucket(...)), so the folder was never actually deleted on GCS. * When the test subsequently called os.Remove(dirPath), GCSFuse (which was properly initialized with TPC endpoints) deleted the still-existing folder on GCS and returned nil (Success). * The test asserted if !os.IsNotExist(err) and failed because it expected ENOENT (os.ErrNotExist). ### Link to the issue in case of a bug fix. b/530389977 b/530757458 ### Testing details 1. Manual - NA 2. Unit tests - NA 3. Integration tests - Tested by running tests using tpc_build.sh with the fix and without fix and verified fix works. ### Any backward incompatible change? If so, please explain. N/A
…eader (#4845) Adding support for vectored read in Kernel Range reader implementation.
### Description Migrates the `operations` integration tests on the TPC endpoint to execute from the common configuration file (`test_config.yaml`) rather than relying on hardcoded test runner logic. **Key Changes:** * Adds a new `TPC` boolean property to `ConfigItem` in `config.go` to identify TPC-specific configurations. * Declares standard `flat`/`hns`/`zonal` compatibility for TPC configurations in `test_config.yaml`, combined with `tpc: true`. * Modifies `BuildFlagSets()` in `setup.go` to correctly filter configurations by matching the active endpoint with the config (`tpcMatches := (TestOnTPCEndPoint() == testCase.TPC)`). * Configures `setup.go` to use specific TPC credentials (`/tmp/sa.key.json`), endpoint (`storage.apis-tpczero.goog:443`), and universe domain (`apis-tpczero.goog`) when `TestOnTPCEndPoint()` is true. * Conditionally initializes the storage client using standard `storage.NewClient` for TPC endpoints, while retaining `storage.NewGRPCClient` for others. * Deletes the custom/hardcoded `RunTestOnTPCEndPoint` flow in `operations_test.go` and transitions it to the standard config setup. * Cleans up redundant local helpers in `operations_test.go` in favor of using package-level ones instead. ### Link to the issue in case of a bug fix. Fixes b/469970353 ### Testing details 1. Manual - Checked local compilation using `go test -c ./tools/integration_tests/operations` and checked general repo lint/compilation using `make buildTest`. 2. Unit tests - N/A 3. Integration tests - N/A (requires TPC endpoint and credentials) ### Any backward incompatible change? If so, please explain. N/A
… to testify and improvements (#4828) * feat(Improvements): Migrate caching, base_dir, util, and symlink tests to testify * test: Clean up imports and fix context leak in Batch 6 * test: Address PR feedback (defer Close in util_test, use UTC for clocks) * fix: ignore errors in defer calls in util_test to satisfy errcheck * fix: restore file.Close() assertions inside defer blocks * fix: resolve Test_getObjectPath bug and use idiomatic assertions
…rrors (#4840) BufferedReader.ReadAt IncRef's prefetch blocks for each zero-copy slice it returns and defers their release to the FUSE resp.Callback. The defer only wired that callback on success/EOF and only eagerly released blocks for gcsx.FallbackToAnotherReader. For any other non-EOF error raised after an earlier block in the same read was already consumed (a later block's BlockStateDownloadFailed, or a ctx cancellation while awaiting a later block), neither branch ran: resp was returned zero-valued, the callback never fired, and the IncRef'd blocks leaked along with their permits on the shared read-global-max-blocks semaphore. Repeated transient read errors thus shrink the global block budget mount-wide, grow RSS, and make Destroy() block on its 10s timeout. Collapse the fallback branch and the missing general-error branch into a single else that calls releaseInflightBlocks(entriesToCallback) and clears resp, so every IncRef / inflightCallbackWg.Add is balanced on all exit paths. Behavior on success/EOF and on FallbackToAnotherReader is unchanged. Adds TestReadAtReleasesInflightBlocksOnMidReadDownloadFailure, which fails on the pre-fix code (Destroy() blocks ~10s) and passes after the fix.
* build(deps): bump the go-dependencies group across 1 directory with 5 updates Bumps the go-dependencies group with 5 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric](https://github.com/GoogleCloudPlatform/opentelemetry-operations-go) | `0.56.0` | `0.57.0` | | [github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace](https://github.com/GoogleCloudPlatform/opentelemetry-operations-go) | `1.32.0` | `1.33.0` | | [golang.org/x/sync](https://github.com/golang/sync) | `0.20.0` | `0.21.0` | | [golang.org/x/sys](https://github.com/golang/sys) | `0.45.0` | `0.46.0` | | [golang.org/x/text](https://github.com/golang/text) | `0.37.0` | `0.38.0` | Updates `github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric` from 0.56.0 to 0.57.0 - [Release notes](https://github.com/GoogleCloudPlatform/opentelemetry-operations-go/releases) - [Commits](GoogleCloudPlatform/opentelemetry-operations-go@v0.56.0...v0.57.0) Updates `github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace` from 1.32.0 to 1.33.0 - [Release notes](https://github.com/GoogleCloudPlatform/opentelemetry-operations-go/releases) - [Commits](GoogleCloudPlatform/opentelemetry-operations-go@detectors/gcp/v1.32.0...detectors/gcp/v1.33.0) Updates `golang.org/x/sync` from 0.20.0 to 0.21.0 - [Commits](golang/sync@v0.20.0...v0.21.0) Updates `golang.org/x/sys` from 0.45.0 to 0.46.0 - [Commits](golang/sys@v0.45.0...v0.46.0) Updates `golang.org/x/text` from 0.37.0 to 0.38.0 - [Release notes](https://github.com/golang/text/releases) - [Commits](golang/text@v0.37.0...v0.38.0) --- updated-dependencies: - dependency-name: github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric dependency-version: 0.57.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-dependencies - dependency-name: github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace dependency-version: 1.33.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-dependencies - dependency-name: golang.org/x/sync dependency-version: 0.21.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-dependencies - dependency-name: golang.org/x/sys dependency-version: 0.46.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-dependencies - dependency-name: golang.org/x/text dependency-version: 0.38.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> * Trigger CI --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…issing files (#4729) * feat(caching): implement negative stat cache to optimize polling of missing files This change adds negative caching to StatCache, short-circuits LookUpChild on negative hits, and adds metrics/integration tests to verify. * docs(fs): add detailed comment explaining LookUpChild short-circuit logic * style: fix formatting in bucket_manager.go * fix(caching): address review comments and resolve data races/deadlocks blocking CI - Remove speculative negative caching from listing path to avoid pagination bugs (addressed review comment). - Add warning about infinite negative TTL usage in semantics.md (addressed review comment). - Fix deadlock in createFile's defer in fs.go when error occurs before child inode is minted. - Fix data race in downloader Job by deep-copying MinObject, preventing race with reader thread. - Fix missing lock in fake bucket's MoveObject, resolving race with StatObject. * style: remove extra blank line in fast_stat_bucket.go * refactor(caching): remove unrelated fixes and speculative listing caching, add doc warning - Revert data race fixes in downloader Job (moved to separate PR). - Revert name length checks and deadlock fix in fs.go (moved to separate PR). - Revert name length checks in dir.go (moved to separate PR), keeping only LookUpChild short-circuiting. - Revert MoveObject lock fix in fake bucket (moved to separate PR), keeping FetchOnlyFromCache checks. - Remove speculative negative caching on empty directory listing to avoid pagination bugs (addressed review comment). - Add warning about infinite TTL usage for negative caching in semantics.md (addressed review comment). * fix(caching): add negative caching for empty directories in fast_stat_bucket Address PR comments by avoiding changes to inode/dir.go and limiting negative caching to fast_stat_bucket. Skip negative caching for HNS buckets. * Revert changes to internal/fs/inode/dir.go as requested by reviewer * fix(caching): remove speculative negative caching from insertListing * fix(caching): safely re-add negative caching to insertListing * style: apply go fmt to tests * chore: revert unintended formatting changes in hns_bucket_test.go * style(caching): combine nested if conditions in insertListing * fix(caching): move negative caching TTL check to caller * refactor(caching): clean up boilerplate if-else blocks by using a helper method * Fix cache bug and combine condition * Add b.implicitDir check to negative cache insertion condition * Address PR comment: Use newline to separate AAA in gcs_metrics_test * test(metrics): use t.TempDir() instead of hardcoded tmp directory in gcs_metrics_test * test(metrics): update short-circuit test to simulate list call with --implicit-dirs * test(metrics): clean up comments in TestGCSMetrics_RequestCount_NegativeCachingShortCircuit * Update internal/fs/gcs_metrics_test.go Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * refactor(metrics): remove unused type definition in gcs_metrics_test * Short-circuit ListObjects if negative cache is hit * test(metrics): advance cacheClock for cross-mount tests * fix(cache): restrict implicit dir negative caching and inference to directory paths * style(cache): apply De Morgan's law to satisfy staticcheck QF1001 * Fix staticcheck QF1001 and allow short-circuit in ListObjects for explicit-dirs and HNS * Revert "allow short-circuit in ListObjects for explicit-dirs and HNS" * fix(cache): preserve folder in LRU and fix ListObjects short-circuit for HNS * Revert "fix(cache): preserve folder in LRU and fix ListObjects short-circuit for HNS" This reverts commit 006f3d9. * fix(cache): fix ListObjects short-circuit for HNS folders * Fix integration test cache issues * Address PR comments: Move negative cache to implicit directories section, fix lock issue, and explicitly pass TTL * Refactor ListObjects negative cache short-circuiting logic * Fix build error: pass time.Time to statCache LookUp * Simplify ListObjects short-circuiting by removing unreachable HNS bucket logic * Revert addition of --metadata-cache-negative-ttl-secs=2 in dentry_cache tests * test: use unique t.TempDir() in file_cache_reader_test to fix cross-suite cache pollution flake * test: restore --metadata-cache-negative-ttl-secs=2 to dentry_cache tests * test: restore --metadata-cache-negative-ttl-secs=2 to test_config.yaml * Fix integration test failures and restore flags TAG=agy * test: Add negative TTL flag to CI integration test config * Fix dentry_cache test failures due to implicit directory caching The dentry_cache integration tests were failing on the CI pipeline because `s.T().Name()` includes a slash (e.g. `SuiteName/TestName`). This was causing the tests to create implicit directories in GCS. When one test deleted its file, the implicit directory was negatively cached by the Stat Cache. Subsequent tests in the same suite then failed because they attempted to access files inside the negatively cached implicit directory. To fix this, `s.T().Name()` has been replaced with specific test names that do not contain slashes, ensuring no implicit directories are created and preventing test cross-talk. * Revert addition of --metadata-cache-negative-ttl-secs in test_config.yaml * Revert test changes as requested * Remove negative caching of empty directories in insertListing * Run go fmt * Fix file_cache_reader_test crosstalk * Restore negative stat cache for empty directories * Fix dentry_cache integration tests by clearing test cache * Fix dentry_cache integration tests in test_config.yaml * Revert unnecessary destroy call * fix: always add negative cache entry for NotFoundError in StatObjectFromGcs * Restore test_config.yaml and file_cache_reader_test.go to master version * fix: add negative cache TTL to dentry_cache configuration * fix: add negative cache TTL to dentry_cache configuration * fix: enhance negative cache check for implicit directories in ListObjects * fix: enhance negative cache check for implicit directories in ListObjects * fix: enhance negative cache check for implicit directories in ListObjects * fix: enhance negative cache check for implicit directories in ListObjects * fix: streamline negative cache handling in directory lookups and simplify cache entry addition * test: add TestLookUpChild_NegativeCacheHit * test: delete irrelevant short-circuit test * Revert "test: delete irrelevant short-circuit test" This reverts commit 7d8aa5f. * fix: update context import to standard library * fix: update context import to standard library * fix: safely add negative cache for implicit directories * Revert dir.go changes * Fix negative caching for implicit directories without breaking empty managed folders * Fix negative caching for implicit directories without breaking empty managed folders * Fix negative caching for implicit directories without breaking empty managed folders * feat: add EnableEmptyManagedFolders configuration for Negative caching logic * feat: add EnableEmptyManagedFolders configuration for Negative caching logic * refactor: disable negative caching for empty managed folders and simplify inode lookup logic * refactor: disable negative caching for empty managed folders and simplify inode lookup logic * test: add sleep to TearDownTest to prevent negative cache interference between tests * refactor: remove path suffix check to improve implicit directory caching for objects without trailing slashes * trigger kokoro --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
… on regional buckets (#4852) optimizing memory usage and reducing allocation overhead during large file reads by introducing a sync.Pool for buffer allocation and refactoring the vectored reading mechanism to allocate buffers on-demand (lazily).
…in bucket type flag optimization (#4868) Adding support for multiple bucket types (comma separated) in bucket type flag optimization.
…TOR across all remaining Kokoro CI suites (#4863) * feat(ci): apply dynamic commit selection based on KOKORO_BUILD_INITIATOR across all remaining Kokoro CI suites Ensure scheduled daily Kokoro runs select yesterday's last commit while manual runs select the latest commit of the target branch. * feat(ci): propagate KOKORO_BUILD_INITIATOR to gke_machine_type_test pod execution runner * Update perfmetrics/scripts/continuous_test/gcp_ubuntu/micro_benchmarks/build.sh Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…e/machine_type_test (#4877) * test(gke): fix flag parsing and mounted directory resolution in machine type tests * Update perfmetrics/scripts/continuous_test/gke/machine_type_test/run_test.sh
…s in Kernel Range Reader & Buffered Reader (#4879) Currently read bytes count is getting double counted in Kernel Range Reader and Buffered reader since monitoringReadCloser reader (which wraps the GCS reader) increments the read bytes count internally. Hence, the readers don't have to increment it. Co-authored-by: Kislay Kishore <kislayk@google.com>
…d on bucket type (#4876) Adding bucket-type specific default values and optimizations for Kernel Range Reader and replacing the raw kernel pages configuration flag with a request-size based configuration.
…4885) Making enable-kernel-reader flag public
… wrapper and improve encapsulation (#4882) ### Description This PR simplifies and refactors the retry wrapping logic for the gRPC StorageControlClient (used for HNS buckets on both RAPID and STANDARD storage class). It replaces legacy positional wrapper functions with a unified functional positional options, improves overall package encapsulation, and adds safety checks. ### Link to the issue in case of a bug fix. ### Testing details 1. Manual - NA 2. Unit tests - NA 3. Integration tests - Run as part of pre-submits both zonal and standard e2e. ### Any backward incompatible change? If so, please explain. NONE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sync fork