Skip to content

Commit

Permalink
fix: [AH-831]: Updated Error Message for Upstream Delete Fail (#3272)
Browse files Browse the repository at this point in the history
* fix: [AH-831]: Updated Manifest_reference Foreign
* fix: [AH-831]: Updated Error Message for Upstream Delete Fail
  • Loading branch information
ritek01 authored and Harness committed Jan 15, 2025
1 parent af01642 commit 77e8ef4
Show file tree
Hide file tree
Showing 9 changed files with 136 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ALTER TABLE manifest_references
DROP
CONSTRAINT IF EXISTS fk_manifest_references_child_id_mnfsts;

ALTER TABLE manifest_references
ADD CONSTRAINT fk_manifest_references_child_id_mnfsts
FOREIGN KEY (manifest_ref_child_id) REFERENCES manifests;
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
ALTER TABLE manifest_references
DROP
CONSTRAINT IF EXISTS fk_manifest_references_child_id_mnfsts;

ALTER TABLE manifest_references
ADD CONSTRAINT fk_manifest_references_child_id_mnfsts
FOREIGN KEY (manifest_ref_child_id) REFERENCES manifests (manifest_id)
ON DELETE CASCADE;
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
DROP FUNCTION IF EXISTS gc_track_deleted_manifest_lists CASCADE;

CREATE
OR REPLACE FUNCTION gc_track_deleted_manifest_lists()
RETURNS TRIGGER
AS
$$
BEGIN
INSERT INTO gc_manifest_review_queue (registry_id, manifest_id, review_after, event)
VALUES (OLD.manifest_ref_registry_id, OLD.manifest_ref_child_id, gc_review_after('manifest_list_delete'),
'manifest_list_delete') ON CONFLICT (registry_id, manifest_id)
DO
UPDATE SET review_after = gc_review_after('manifest_list_delete'),
event = 'manifest_list_delete';
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
DROP FUNCTION IF EXISTS gc_track_deleted_manifest_lists CASCADE;

CREATE
OR REPLACE FUNCTION gc_track_deleted_manifest_lists()
RETURNS TRIGGER
AS
$$
BEGIN
IF
EXISTS (
SELECT 1 FROM manifests WHERE manifest_id = OLD.manifest_ref_child_id
) THEN
INSERT INTO gc_manifest_review_queue (registry_id, manifest_id, review_after, event)
VALUES (OLD.manifest_ref_registry_id, OLD.manifest_ref_child_id, gc_review_after('manifest_list_delete'), 'manifest_list_delete')
ON CONFLICT (registry_id, manifest_id)
DO
UPDATE SET review_after = gc_review_after('manifest_list_delete'),
event = 'manifest_list_delete';
END IF;
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
CREATE TABLE manifest_references_old
(
manifest_ref_id INTEGER PRIMARY KEY AUTOINCREMENT,
manifest_ref_registry_id INTEGER NOT NULL,
manifest_ref_parent_id INTEGER NOT NULL,
manifest_ref_child_id INTEGER NOT NULL,
manifest_ref_created_at BIGINT NOT NULL,
manifest_ref_updated_at BIGINT NOT NULL,
manifest_ref_created_by INTEGER NOT NULL,
manifest_ref_updated_by INTEGER NOT NULL,
CONSTRAINT unique_manifest_references_prt_id_chd_id
UNIQUE (manifest_ref_registry_id, manifest_ref_parent_id, manifest_ref_child_id),
CONSTRAINT fk_manifest_references_parent_id_mnfsts
FOREIGN KEY (manifest_ref_parent_id) REFERENCES manifests
ON DELETE CASCADE,
CONSTRAINT fk_manifest_references_child_id_mnfsts
FOREIGN KEY (manifest_ref_child_id) REFERENCES manifests,
CONSTRAINT check_manifest_references_parent_id_and_child_id_differ
CHECK (manifest_ref_parent_id <> manifest_ref_child_id)
);

INSERT INTO manifest_references_old (manifest_ref_id, manifest_ref_registry_id, manifest_ref_parent_id,
manifest_ref_child_id, manifest_ref_created_at, manifest_ref_updated_at,
manifest_ref_created_by, manifest_ref_updated_by)
SELECT manifest_ref_id,
manifest_ref_registry_id,
manifest_ref_parent_id,
manifest_ref_child_id,
manifest_ref_created_at,
manifest_ref_updated_at,
manifest_ref_created_by,
manifest_ref_updated_by
FROM manifest_references;

DROP TABLE manifest_references;

ALTER TABLE manifest_references_old RENAME TO manifest_references;
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
CREATE TABLE manifest_references_new
(
manifest_ref_id INTEGER PRIMARY KEY AUTOINCREMENT,
manifest_ref_registry_id INTEGER NOT NULL,
manifest_ref_parent_id INTEGER NOT NULL,
manifest_ref_child_id INTEGER NOT NULL,
manifest_ref_created_at BIGINT NOT NULL,
manifest_ref_updated_at BIGINT NOT NULL,
manifest_ref_created_by INTEGER NOT NULL,
manifest_ref_updated_by INTEGER NOT NULL,
CONSTRAINT unique_manifest_references_prt_id_chd_id
UNIQUE (manifest_ref_registry_id, manifest_ref_parent_id, manifest_ref_child_id),
CONSTRAINT fk_manifest_references_parent_id_mnfsts
FOREIGN KEY (manifest_ref_parent_id) REFERENCES manifests
ON DELETE CASCADE,
CONSTRAINT fk_manifest_references_child_id_mnfsts
FOREIGN KEY (manifest_ref_child_id) REFERENCES manifests (manifest_id)
ON DELETE CASCADE,
CONSTRAINT check_manifest_references_parent_id_and_child_id_differ
CHECK (manifest_ref_parent_id <> manifest_ref_child_id)
);

INSERT INTO manifest_references_new (manifest_ref_id, manifest_ref_registry_id, manifest_ref_parent_id,
manifest_ref_child_id, manifest_ref_created_at, manifest_ref_updated_at,
manifest_ref_created_by, manifest_ref_updated_by)
SELECT manifest_ref_id,
manifest_ref_registry_id,
manifest_ref_parent_id,
manifest_ref_child_id,
manifest_ref_created_at,
manifest_ref_updated_at,
manifest_ref_created_by,
manifest_ref_updated_by
FROM manifest_references;

DROP TABLE manifest_references;

ALTER TABLE manifest_references_new RENAME TO manifest_references;
Empty file.
Empty file.
5 changes: 5 additions & 0 deletions registry/app/api/controller/metadata/delete_registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"fmt"
"net/http"
"strconv"
"strings"

apiauth "github.com/harness/gitness/app/api/auth"
"github.com/harness/gitness/app/api/request"
Expand Down Expand Up @@ -118,6 +119,10 @@ func (c *APIController) DeleteRegistry(
)
}
if err != nil {
if strings.Contains(err.Error(), "delete query failed") {
msg := "Internal Error"
err = fmt.Errorf("failed to delete registry: %s", msg)
}
//nolint:nilerr
return throwDeleteRegistry500Error(err), nil
}
Expand Down

0 comments on commit 77e8ef4

Please sign in to comment.