Kong / kong-manager

Admin GUI for Kong Gateway (Official)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Updates to database that should be handled by application logic

dustinkredmond opened this issue · comments

Is there an existing issue for this?

  • I have searched the existing issues

Kong version ($ kong version)

3.6

Current Behavior

Currently, when a user tries to delete a gateway service, a delete is passed from the application to the database even though a route object still exists that references the gateway service. This results in a foreign key violation. This logic should be handled at the application layer instead of relying on a referential integrity constraint at the database layer. This can be seen from the PostgreSQL server log if standard log levels are used.

postgresql.log

2024-05-03 15:55:57.714 EDT [2174177] ERROR:  update or delete on table "services" violates foreign key constraint "routes_service_id_fkey" on table "routes"
2024-05-03 15:55:57.714 EDT [2174177] DETAIL:  Key (id, ws_id)=(6860e4ea-dfc3-4fd7-957a-95e74006c14d, ed690604-acd9-4032-ad4b-926d11cbea17) is still referenced from table "routes".
2024-05-03 15:55:57.714 EDT [2174177] STATEMENT:  DELETE
          FROM "services"
         WHERE ("id") = ('6860e4ea-dfc3-4fd7-957a-95e74006c14d')
           AND ("ws_id" = 'ed690604-acd9-4032-ad4b-926d11cbea17')

Expected Behavior

Kong should check if any routes are configured for a service before issuing an SQL delete from the services table.

Steps To Reproduce

Configure a gateway service with at least one route. Try to delete the service from the Kong manager UI.

Anything else?

No response