eclipse-che / che

Kubernetes based Cloud Development Environments for Enterprise Teams
http://eclipse.org/che
Eclipse Public License 2.0
6.99k stars 1.19k forks source link

Dev Workspace Controller Loop with Identical Endpoint Names on DevWorkspace #23231

Open eye0fra opened 2 weeks ago

eye0fra commented 2 weeks ago

Describe the bug

If I start two workspaces containing an endpoint with the same name, the dev workspace controller enters a loop. As a result, both namespaces do not start and remain stuck on "Preparing Service".

sample devfile

schemaVersion: 2.3.0
metadata:
  name: endpoints-issue
components:
  - name: tools
    container:
      image: quay.io/devfile/universal-developer-image:ubi8-latest
      memoryRequest: 1G
      memoryLimit: 4G
      cpuRequest: '1'
      cpuLimit: '2'
  - name: data
    volume:
      size: 256Mi
  - name: postgresql
    container:
      image: quay.io/fedora/postgresql-12:latest
      cpuLimit: "1"
      cpuRequest: 50m
      memoryLimit: 512Mi
      memoryRequest: 64Mi
      endpoints:
        - exposure: internal
          targetPort: 5432
          name: postgresql
          protocol: tcp
          attributes:
            discoverable: true
      env:
        - name: POSTGRESQL_USER
          value: user
        - name: POSTGRESQL_PASSWORD
          value: pass
        - name: POSTGRESQL_ROOT_PASSWORD
          value: root
        - name: POSTGRESQL_DATABASE
          value: db
      volumeMounts:
        - name: data
          path: /var/lib/pgsql/data

Che version

7.93@latest

Steps to reproduce

  1. Create two workspaces with endpoints having the same name.
  2. Start both workspaces.
  3. Observe that the dev workspace controller goes into a loop and both namespaces remain stuck on "Preparing Service".

Expected behavior

Both workspaces should start without any issues

Runtime

OpenShift

Screenshots

Screenshot 2024-11-04 at 15 15 26 Screenshot 2024-11-04 at 15 16 28 Screenshot 2024-10-31 at 11 44 26

Installation method

OperatorHub

Environment

other (please specify in additional context)

Eclipse Che Logs

No response

Additional context

Environment: DevSpaces Version: 3.16.1 DevWorkspaces Operator Version: 0.30.2

AObuchow commented 2 weeks ago

@eye0fra Thank you for reporting this. For what its worth, this is an internally known DWO issue that's currently only documented as a TODO.

I'm not sure if there's any effective way for us to solve this: discoverable endpoints are intended to have services with a static, predefined name so that you can predict what the service will be called. If we add some level of randomization to the service's name, then it will no longer have a static name.

When starting up a workspace, we might be able to check if another workspace defines a service with the same name and fail the workspace if so, to alert the user that they need to use a different discoverable endpoint name?

Additionally, it should be documented that different devfiles used by the same user cannot define discoverable endpoints with the same name.

eye0fra commented 2 weeks ago

Hi @AObuchow ,

I agree that notifying the user is the best approach for now. This way, they can make the necessary edits to the DW/devfile accordingly.