lablup / lablup/backend.ai

Implement Soft Delete and Graceful Deletion for Projects and Resource Groups

Open
#7,738 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
670
Forks
183
Avg merge
17h 7m
Merged PRs (30d)
358

Description

## Summary

Implement a comprehensive soft delete mechanism for Projects (GroupRow) and Resource Groups (ScalingGroupRow) to ease deletion of objects that have many foreign key references.

## Background

Projects and resource groups have many incoming FK references from `sessions`, `kernels`, `vfolders`, `endpoints`, `routings`, etc., preventing them from being deleted easily. Currently, deletion fails with cryptic database constraint errors.

## Goals

1. **Improved Error Messages**: Provide human-friendly error messages explaining why deletion is blocked
1. **Soft Delete State Management**: Introduce status enum (ACTIVE, DELETED) instead of hard delete
1. **Cascade Soft Delete**: Allow force deletion that marks related inactive entities as deleted

## Design Direction

- Don't remove database records unless they reach the history retention limit
- Put deleted objects in "DELETED" state to filter from normal API queries
- Ensure audit log recording for all destructive actions

## Related Issues

- BA-3287: Original idea issue
- BA-3290: Human-friendly constraint violation error messages
- BA-3292: Replace references with ghost entity
- BA-3293: Remove most FK constraints

## Affected Components

- `src/ai/backend/manager/models/group/`
- `src/ai/backend/manager/models/scaling_group/`
- `src/ai/backend/manager/repositories/group/`
- `src/ai/backend/manager/repositories/scaling_group/`
- `src/ai/backend/manager/services/group/`
- `src/ai/backend/manager/services/scaling_group/`

JIRA Issue: BA-3709

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.