# Upgrade validation

## Verify that alerts are updated

When you successfully execute pre- and post-upgrade tasks, the backend does not get queries with 1-second step.

Verify this by looking at the query-service logs. Issue a `grep` command for `step:[1]`; there shouldn’t be any.

## Verify deepstore settings

During an upgrade, it is extremely important that you retain deepstore settings. They must not be removed; the deepstore configuration must remain identical to the state before the upgrade.

To verify, run the `helm diff` plugin to check the differences. You can build this plugin from the source, and then install it. See the [helm-diff documentation](https://github.com/databus23/helm-diff#from-source) for instructions.

1. Install the `helm diff` plugin:

```console
   helm plugin install https://github.com/databus23/helm-diff
   ```

2. Run docker login before running the `diff` command.

To run the correct command for login, see how to [Login for Kloudfuse helm registry](https://docs.kloudfuse.com/platform/3.5.0/install/#helm-registry).

3. Generate the `diff` with the new version:

```console
   helm diff upgrade kfuse oci://us-east1-docker.pkg.dev/mvp-demo-301906/kfuse-helm/kfuse --version <VERSION.NUM.BER> --values values.yaml > /tmp/kfuse_upgrade_diff (1)
   ```

|     |     |
| --- | --- |
| **1** | `version`: Use the version number of the most current Kloudfuse release; the pattern looks like `3.0.0`, `3.1.3`, and so on. See [Version](https://docs.kloudfuse.com/platform/3.5.0/help/#version) documentation. |

4. If the deepstore settings changed, you will find changes in `pinot-controller.conf` and `pinot-server.conf` files. Search or `grep` for them in the `/tmp/kfuse_upgrade_diff` file.

The following sample output demonstrates that deepstore settings may change from `enabled` to `not enabled` during the upgrade. Verify your deepstore settings in your `custom-values.yaml` file.

```console
pinot-controller.conf:

+     controller.data.dir=/var/pinot/controller/data
-     controller.realtime.segment.deepStoreUploadRetryEnabled=true
-     controller.realtime.segment.validation.frequencyPeriod=5m
-     controller.data.dir=gs://pinot-gcp/dev-gcp/vinayk/controller/data
-     controller.local.temp.dir=/var/pinot/controller/data
-     pinot.controller.instance.enable.split.commit=true
-     pinot.controller.storage.factory.class.gs=org.apache.pinot.plugin.filesystem.GcsPinotFS
-     pinot.controller.storage.factory.gs.projectId=mvp-demo-301906
-     pinot.controller.storage.factory.gs.gcpKey=/etc/pinot/server/secretKey
-     pinot.controller.segment.fetcher.protocols=file,http,gs
-     pinot.controller.segment.fetcher.gs.class=org.apache.pinot.common.utils.fetcher.PinotFSSegmentFetcher

pinot-server.conf:

+     # enable peer download; refer: https://docs.pinot.apache.org/operators/operating-pinot/decoupling-controller-from-the-data-path
+     pinot.server.storage.factory.class.peer=org.apache.pinot.spi.filesystem.LocalPinotFS
+     pinot.server.instance.segment.store.uri=peer:///var/pinot/server/data
-     pinot.server.instance.segment.store.uri=gs://pinot-gcp/dev-gcp/vinayk/controller/data
-     pinot.server.storage.factory.class.gs=org.apache.pinot.plugin.filesystem.GcsPinotFS
-     pinot.server.storage.factory.gs.projectId=mvp-demo-301906
-
-     pinot.server.storage.factory.gs.gcpKey=/etc/pinot/server/secretKey
-     pinot.server.segment.fetcher.protocols=file,http,gs
-     pinot.server.segment.fetcher.gs.class=org.apache.pinot.common.utils.fetcher.PinotFSSegmentFetcher
``
