text: Title: [BUG] mlflow gc fails to delete artifacts with MinIO due to double trailing slashes in prefix
  Body: ### Issues Policy acknowledgement
  
  - [x] I have read and agree to submit bug reports in accordance with the [issues policy](https://www.github.com/mlflow/mlflow/blob/master/ISSUE_POLICY.md)
  
  ### Where did you encounter this bug?
  
  Other
  
  ### MLflow version
  
  - Client: 2.20.3
  - Tracking server: 2.20.3
  
  
  ### System information
  
  - **OS Platform and Distribution (e.g., Linux Ubuntu 16.04)**: AlmaLinux 9.4
  - **Python version**: 3.12.9
  - **yarn version, if running the dev UI**: -
  
  
  ### Describe the problem
  
  The `mlflow gc` command fails to delete artifacts when MinIO is used as the artifacts store and artifact proxying is enabled in the MLflow tracking server.
  
  It fails while trying to list objects in the artifacts store and throws a `botocore.exceptions.ClientError: An error occurred (XMinioInvalidObjectName) when calling the ListObjectsV2 operation: Object name contains unsupported characters.`.
  
  This happens because MLflow tries to list artifacts using a prefix with two trailing slashes (see tracking server logs and the HTTP request below). This is considered to be an invalid request by MinIO since [it is built upon a filesystem-based storage backend](https://github.com/minio/minio/issues/5874) which cannot use the `/` character for anything but the file path separator.
  
  The following change to the `mlflow/store/artifact/s3_artifact_repo.py` file from MLflow `2.20.3` fixes this problem by simply stripping the extra slashes from the destination path which then gets used to construct the prefix:
  ```
  diff --git a/mlflow/store/artifact/s3_artifact_repo.py b/mlflow/store/artifact/s3_artifact_repo.py
  index c6ae89007..c805726d5 100644
  --- a/mlflow/store/artifact/s3_artifact_repo.py
  +++ b/mlflow/store/artifact/s3_artifact_repo.py
  @@ -203,6 +203,7 @@ class S3ArtifactRepository(ArtifactRepository, MultipartUploadMixin):
           dest_path = artifact_path
           if path:
               dest_path = posixpath.join(dest_path, path)
  +        dest_path = dest_path.rstrip("/") if dest_path else ""
           infos = []
           prefix = dest_path + "/" if dest_path else ""
           s3_client = self._get_s3_client()
  @@ -249,7 +250,7 @@ class S3ArtifactRepository(ArtifactRepository, MultipartUploadMixin):
           (bucket, dest_path) = self.parse_s3_compliant_uri(self.artifact_uri)
           if artifact_path:
               dest_path = posixpath.join(dest_path, artifact_path)
  -
  +        dest_path = dest_path.rstrip("/") if dest_path else ""
           prefix = dest_path + "/" if dest_path else ""
           s3_client = self._get_s3_client()
           paginator = s3_client.get_paginator("list_objects_v2")
  ```
  
  ### Tracking information
  
  <!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->
  ```shell
  REPLACE_ME
  ```
  
  
  ### Code to reproduce issue
  
  <!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->
  ```
  REPLACE_ME
  ```
  
  
  ### Stack trace
  
  <!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->
  ```
  REPLACE_ME
  ```
  
  
  ### Other info / logs
  
  <!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->
  ```
  # Tracking server logs
  
  2025/03/03 10:14:02 ERROR mlflow.server: Exception on /api/2.0/mlflow-artifacts/artifacts/2/f3afe5af593c4a7d983af85cf01b59a8/artifacts/ [DELETE]
  Traceback (most recent call last):
    File "/opt/bitnami/python/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
      response = self.full_dispatch_request()
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/bitnami/python/lib/python3.12/site-packages/flask/app.py", line 919, in full_dispatch_request
      rv = self.handle_user_exception(e)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/bitnami/python/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
      rv = self.dispatch_request()
           ^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/bitnami/python/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
      return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/bitnami/python/lib/python3.12/site-packages/mlflow/server/handlers.py", line 573, in wrapper
      return func(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^
    File "/opt/bitnami/python/lib/python3.12/site-packages/mlflow/server/handlers.py", line 595, in wrapper
      return func(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^
    File "/opt/bitnami/python/lib/python3.12/site-packages/mlflow/server/handlers.py", line 2223, in _delete_artifact_mlflow_artifacts
      artifact_repo.delete_artifacts(artifact_path)
    File "/opt/bitnami/python/lib/python3.12/site-packages/mlflow/store/artifact/s3_artifact_repo.py", line 257, in delete_artifacts
      for result in results:
                    ^^^^^^^
    File "/opt/bitnami/python/lib/python3.12/site-packages/botocore/paginate.py", line 269, in __iter__
      response = self._make_request(current_kwargs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/bitnami/python/lib/python3.12/site-packages/botocore/paginate.py", line 357, in _make_request
      return self._method(**current_kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/bitnami/python/lib/python3.12/site-packages/botocore/client.py", line 569, in _api_call
      return self._make_api_call(operation_name, kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/bitnami/python/lib/python3.12/site-packages/botocore/client.py", line 1023, in _make_api_call
      raise error_class(parsed_response, operation_name)
  botocore.exceptions.ClientError: An error occurred (XMinioInvalidObjectName) when calling the ListObjectsV2 operation: Object name contains unsupported characters.
  ```
  
  ```
  # Actual request issued by MLflow tracking server to MinIO
  
  GET /mlflow?list-type=2&prefix=2%2Ff3afe5af593c4a7d983af85cf01b59a8%2Fartifacts%2F%2F&encoding-type=url HTTP/1.1
  Host: minio.minio.svc.cluster.local
  Accept-Encoding: identity
  User-Agent: Boto3/1.37.1 md/Botocore#1.37.1 ua/2.0 os/linux#5.14.0-427.42.1.el9_4.x86_64 md/arch#x86_64 lang/python#3.12.9 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.37.1
  X-Amz-Date: 20250303T101402Z
  X-Amz-Content-SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
  Authorization: ...
  amz-sdk-invocation-id: 9e4acff3-392a-4718-866f-ef841d87ce08
  amz-sdk-request: attempt=1
  
  HTTP/1.1 400 Bad Request
  Accept-Ranges: bytes
  Content-Length: 332
  Content-Type: application/xml
  Server: MinIO
  Strict-Transport-Security: max-age=31536000; includeSubDomains
  Vary: Origin
  Vary: Accept-Encoding
  X-Amz-Id-2: 28314b1bfe2eff11603ecd4e0aa18484bd21af7e399acd2054bf1284c18135a2
  X-Amz-Request-Id: 18294367618E608A
  X-Content-Type-Options: nosniff
  X-Ratelimit-Limit: 2157
  X-Ratelimit-Remaining: 2157
  X-Xss-Protection: 1; mode=block
  Date: Mon, 03 Mar 2025 10:14:02 GMT
  
  <?xml version="1.0" encoding="UTF-8"?>
  <Error><Code>XMinioInvalidObjectName</Code><Message>Object name contains unsupported characters.</Message><BucketName>mlflow</BucketName><Resource>/mlflow</Resource><RequestId>18294367618E608A</RequestId><HostId>28314b1bfe2eff11603ecd4e0aa18484bd21af7e399acd2054bf1284c18135a2</HostId></Error>
  ```
  
  ### What component(s) does this bug affect?
  
  - [ ] `area/artifacts`: Artifact stores and artifact logging
  - [ ] `area/build`: Build and test infrastructure for MLflow
  - [ ] `area/deployments`: MLflow Deployments client APIs, server, and third-party Deployments integrations
  - [ ] `area/docs`: MLflow documentation pages
  - [ ] `area/examples`: Example code
  - [ ] `area/model-registry`: Model Registry service, APIs, and the fluent client calls for Model Registry
  - [ ] `area/models`: MLmodel format, model serialization/deserialization, flavors
  - [ ] `area/recipes`: Recipes, Recipe APIs, Recipe configs, Recipe Templates
  - [ ] `area/projects`: MLproject format, project running backends
  - [ ] `area/scoring`: MLflow Model server, model deployment tools, Spark UDFs
  - [x] `area/server-infra`: MLflow Tracking server backend
  - [x] `area/tracking`: Tracking Service, tracking client APIs, autologging
  
  ### What interface(s) does this bug affect?
  
  - [ ] `area/uiux`: Front-end, user experience, plotting, JavaScript, JavaScript dev server
  - [ ] `area/docker`: Docker use across MLflow's components, such as MLflow Projects and MLflow Models
  - [ ] `area/sqlalchemy`: Use of SQLAlchemy in the Tracking Service or Model Registry
  - [ ] `area/windows`: Windows support
  
  ### What language(s) does this bug affect?
  
  - [ ] `language/r`: R APIs and clients
  - [ ] `language/java`: Java APIs and clients
  - [ ] `language/new`: Proposals for new client languages
  
  ### What integration(s) does this bug affect?
  
  - [ ] `integrations/azure`: Azure and Azure ML integrations
  - [ ] `integrations/sagemaker`: SageMaker integrations
  - [ ] `integrations/databricks`: Databricks integrations