fix: Fix the issue of abnormal cache cleanup display (#11547)

This commit is contained in:
ssongliu
2026-01-04 09:31:43 +00:00
committed by GitHub
parent 21975dff2d
commit c8673b60bb
14 changed files with 12 additions and 87 deletions
+5 -20
View File
@@ -73,28 +73,13 @@ func (u *MonitorRepo) CreateMonitorBase(model model.MonitorBase) error {
return global.MonitorDB.Create(&model).Error
}
func (s *MonitorRepo) BatchCreateMonitorGPU(list []model.MonitorGPU) error {
for _, item := range list {
if err := global.GPUMonitorDB.Create(&item).Error; err != nil {
global.LOG.Errorf("create Monitor GPU record failed, err: %v", err)
}
}
return nil
return global.GPUMonitorDB.CreateInBatches(&list, len(list)).Error
}
func (u *MonitorRepo) BatchCreateMonitorIO(list []model.MonitorIO) error {
for _, item := range list {
if err := global.MonitorDB.Create(&item).Error; err != nil {
global.LOG.Errorf("create Monitor IO record failed, err: %v", err)
}
}
return nil
func (u *MonitorRepo) BatchCreateMonitorIO(ioList []model.MonitorIO) error {
return global.MonitorDB.CreateInBatches(ioList, len(ioList)).Error
}
func (u *MonitorRepo) BatchCreateMonitorNet(list []model.MonitorNetwork) error {
for _, item := range list {
if err := global.MonitorDB.Create(&item).Error; err != nil {
global.LOG.Errorf("create Monitor Network record failed, err: %v", err)
}
}
return nil
func (u *MonitorRepo) BatchCreateMonitorNet(ioList []model.MonitorNetwork) error {
return global.MonitorDB.CreateInBatches(ioList, len(ioList)).Error
}
func (u *MonitorRepo) DelMonitorBase(timeForDelete time.Time) error {
return global.MonitorDB.Where("created_at < ?", timeForDelete).Delete(&model.MonitorBase{}).Error
+5 -21
View File
@@ -19,7 +19,6 @@ import (
"github.com/1Panel-dev/1Panel/agent/global"
"github.com/1Panel-dev/1Panel/agent/i18n"
"github.com/1Panel-dev/1Panel/agent/utils/common"
"github.com/1Panel-dev/1Panel/agent/utils/controller"
"github.com/1Panel-dev/1Panel/agent/utils/docker"
fileUtils "github.com/1Panel-dev/1Panel/agent/utils/files"
"github.com/docker/docker/api/types"
@@ -30,7 +29,6 @@ import (
const (
rollbackPath = "1panel/tmp"
cachePath = "1panel/cache"
upgradePath = "1panel/tmp/upgrade"
uploadPath = "1panel/uploads"
downloadPath = "1panel/download"
@@ -56,16 +54,6 @@ func (u *DeviceService) Scan() dto.CleanData {
})
treeData = append(treeData, loadUpgradeTree(fileOp))
treeData = append(treeData, loadAgentPackage(fileOp))
cachePath := path.Join(global.Dir.BaseDir, cachePath)
cacheSize, _ := fileOp.GetDirSize(cachePath)
treeData = append(treeData, dto.CleanTree{
ID: uuid.NewString(),
Label: "cache",
Size: uint64(cacheSize),
IsCheck: false,
IsRecommend: false,
Type: "cache",
})
SystemClean.BackupClean = loadBackupTree(fileOp)
@@ -102,7 +90,6 @@ func (u *DeviceService) Scan() dto.CleanData {
func (u *DeviceService) Clean(req []dto.Clean) {
size := uint64(0)
restart := false
for _, item := range req {
size += item.Size
switch item.TreeType {
@@ -131,10 +118,6 @@ func (u *DeviceService) Clean(req []dto.Clean) {
case "rollback_website":
dropFileOrDir(path.Join(global.Dir.BaseDir, rollbackPath, "website", item.Name))
case "cache":
dropFileOrDir(path.Join(global.Dir.BaseDir, cachePath, item.Name))
restart = true
case "upload":
dropFileOrDir(path.Join(global.Dir.BaseDir, uploadPath, item.Name))
case "upload_app":
@@ -202,10 +185,6 @@ func (u *DeviceService) Clean(req []dto.Clean) {
_ = settingRepo.Update("LastCleanTime", time.Now().Format(constant.DateTimeLayout))
_ = settingRepo.Update("LastCleanSize", fmt.Sprintf("%v", size))
_ = settingRepo.Update("LastCleanData", fmt.Sprintf("%v", len(req)))
if restart {
go controller.RestartPanel(false, true, false)
}
}
func doSystemClean(taskItem *task.Task) func(t *task.Task) error {
@@ -327,6 +306,7 @@ func loadAgentPackage(fileOp fileUtils.FileOp) dto.CleanTree {
itemTree.Size += uint64(itemSize)
itemTree.Children = append(itemTree.Children, dto.CleanTree{
ID: uuid.NewString(),
Label: file.Name(),
Name: file.Name(),
Size: uint64(itemSize),
IsCheck: true,
@@ -342,6 +322,7 @@ func loadAgentPackage(fileOp fileUtils.FileOp) dto.CleanTree {
itemTree.Children = append(itemTree.Children, dto.CleanTree{
ID: uuid.NewString(),
Label: file.Name(),
Name: file.Name(),
Size: uint64(itemSize.Size()),
IsCheck: true,
IsRecommend: true,
@@ -598,6 +579,9 @@ func loadBackupIsCheck(treeData *dto.CleanTree) {
treeData.Children[i].IsRecommend = true
continue
}
if treeData.Label != "unknown_database" && treeData.Label != "unknown_app" {
continue
}
for j := 0; j < len(treeData.Children[i].Children); j++ {
if len(treeData.Children[i].Children[j].Children) == 0 {
treeData.Children[i].Children[j].IsCheck = true
+2
View File
@@ -59,6 +59,7 @@ var WebUrlMap = map[string]struct{}{
"/ai": {},
"/ai/model": {},
"/ai/gpu": {},
"/ai/gpu/current": {},
"/ai/mcp": {},
"/ai/model/tensorrt": {},
"/ai/model/ollama": {},
@@ -165,6 +166,7 @@ var WebUrlMap = map[string]struct{}{
"/xpack/alert/log": {},
"/xpack/alert/setting": {},
"/xpack/setting": {},
"/xpack/node/dashboard": {},
"/xpack/node": {},
"/xpack/simple-node": {},
"/xpack/exchange/file": {},
-2
View File
@@ -2202,8 +2202,6 @@ const message = {
upgrade: 'System upgrade backup files',
agentPackages: 'Historical version child node upgrade/installation packages',
upgradeHelper: '(Recommend keeping the latest upgrade backup for system rollback)',
cache: 'System cache files',
cacheHelper: '(Proceed with caution, cleaning requires a service restart)',
snapshot: 'System snapshot temporary files',
rollback: 'Backup files before recover',
-2
View File
@@ -2215,8 +2215,6 @@ const message = {
upgrade: 'Archivos de copia de seguridad de actualización del sistema',
agentPackages: 'Paquetes de actualización/instalación de nodos secundarios de versiones históricas',
upgradeHelper: '(Mantenga el último respaldo para restaurar el sistema)',
cache: 'Archivos de caché',
cacheHelper: '(Precaución, limpiar requiere reiniciar servicios)',
snapshot: 'Archivos temporales de instantáneas',
rollback: 'Archivos de respaldo antes de recuperación',
-2
View File
@@ -2122,8 +2122,6 @@ const message = {
upgrade: 'システムアップグレードのバックアップファイル',
agentPackages: '履歴バージョンの子ノードアップグレード/インストールパッケージ',
upgradeHelper: 'システムロールバックのために最新のアップグレードバックアップを保持することをお勧めします',
cache: 'システムキャッシュファイル',
cacheHelper: '注意を払って進むにはクリーニングにはサービスの再起動が必要です',
rollback: '回復する前にファイルをバックアップします',
backup: 'システムバックアップ',
-2
View File
@@ -2087,8 +2087,6 @@ const message = {
upgrade: '시스템 업그레이드 백업 파일',
agentPackages: '이전 버전 자식 노드 업그레이드/설치 패키지',
upgradeHelper: '(시스템 롤백을 위해 최신 업그레이드 백업을 유지하는 것이 좋습니다)',
cache: '시스템 캐시 파일',
cacheHelper: '(주의하여 진행, 정리 후 서비스 재시작 필요)',
rollback: '복구 전 백업 파일',
backup: '시스템 백업',
-2
View File
@@ -2182,8 +2182,6 @@ const message = {
upgrade: 'Fail sandaran naik taraf sistem',
agentPackages: 'Pakej naik taraf/pemasangan nod anak versi sejarah',
upgradeHelper: '(Disarankan untuk mengekalkan sandaran peningkatan terbaru untuk pemulihan sistem)',
cache: 'Fail cache sistem',
cacheHelper: '(Berhati-hati, pembersihan memerlukan permulaan semula perkhidmatan)',
rollback: 'Fail sandaran sebelum pemulihan',
backup: 'Sandaran Sistem',
-2
View File
@@ -2176,8 +2176,6 @@ const message = {
upgrade: 'Arquivos de backup de atualização do sistema.',
agentPackages: 'Pacotes de atualização/instalação de nós filhos de versões históricas.',
upgradeHelper: '(Recomenda-se manter o backup de atualização mais recente para rollback do sistema)',
cache: 'Arquivos de cache do sistema',
cacheHelper: '(Prossiga com cautela, a limpeza exige reinício do serviço)',
rollback: 'Arquivos de backup antes da recuperação',
backup: 'Backup do Sistema',
-2
View File
@@ -2171,8 +2171,6 @@ const message = {
upgrade: 'Файлы резервных копий обновления системы',
agentPackages: 'Пакеты обновления/установки дочерних узлов исторических версий',
upgradeHelper: '(Рекомендуется сохранять последнюю резервную копию обновления для отката системы)',
cache: 'Системные файлы кэша',
cacheHelper: '(Действуйте с осторожностью, очистка требует перезапуска службы)',
rollback: 'Файлы резервных копий перед восстановлением',
backup: 'Резервная Копия Системы',
-2
View File
@@ -2227,8 +2227,6 @@ const message = {
upgrade: 'Sistem yükseltme yedekleme dosyaları',
agentPackages: 'Geçmiş sürüm alt düğüm yükseltme/kurulum paketleri',
upgradeHelper: '(Sistem geri alımı için en son yükseltme yedeğini tutmanız önerilir)',
cache: 'Sistem önbellek dosyaları',
cacheHelper: '(Dikkatli ilerleyin, temizleme servis yeniden başlatılmasını gerektirir)',
snapshot: 'Sistem anlık görüntü geçici dosyaları',
rollback: 'Kurtarma öncesi yedek dosyaları',
-2
View File
@@ -2051,8 +2051,6 @@ const message = {
upgrade: '系統升級備份檔案',
agentPackages: '歷史版本子節點升級/安裝套件',
upgradeHelper: '( 建議保留最新的升級備份用於系統回滾 )',
cache: '系統快取文件',
cacheHelper: '( 謹慎操作清理需要重啟服務 )',
snapshot: '系統快照暫存檔',
rollback: '復原前備份目錄',
-2
View File
@@ -2048,8 +2048,6 @@ const message = {
upgrade: '系统升级备份文件',
agentPackages: '历史版本子节点升级 / 安装包',
upgradeHelper: '( 建议保留最新的升级备份用于系统回滚 )',
cache: '系统缓存文件',
cacheHelper: '( 谨慎操作清理需要重启服务 )',
snapshot: '系统快照临时文件',
rollback: '恢复前备份目录',
@@ -261,9 +261,6 @@ import { getSettingInfo } from '@/api/modules/setting';
import { clean, scan } from '@/api/modules/toolbox';
import i18n from '@/lang';
import { MsgSuccess } from '@/utils/message';
import { GlobalStore } from '@/store';
const globalStore = GlobalStore();
const loading = ref();
const totalSize = ref<number>(0);
@@ -370,19 +367,12 @@ const onSubmitClean = async () => {
}).then(async () => {
loading.value = true;
submitCleans.value = [];
let restart = false;
loadSubmitCheck(cleanData.systemClean);
loadSubmitCheck(cleanData.backupClean);
loadSubmitCheck(cleanData.uploadClean);
loadSubmitCheck(cleanData.downloadClean);
loadSubmitCheck(cleanData.systemLogClean);
loadSubmitCheck(cleanData.containerClean);
for (const item of submitCleans.value) {
if (item.treeType === 'cache') {
restart = true;
break;
}
}
await clean(submitCleans.value)
.then(() => {
form.lastCleanSize = selectSize.value + '';
@@ -390,17 +380,6 @@ const onSubmitClean = async () => {
scanStatus.value = 'afterScan';
MsgSuccess(i18n.global.t('commons.msg.operationSuccess'));
loading.value = false;
if (restart) {
let href = window.location.href;
globalStore.isLogin = false;
let address = href.split('://')[1];
if (globalStore.entrance) {
address = address.replaceAll('settings/panel', globalStore.entrance);
} else {
address = address.replaceAll('settings/panel', 'login');
}
window.open(`http://${address}`, '_self');
}
})
.catch(() => {
loading.value = false;
@@ -530,9 +509,6 @@ function loadTag(node: any, data: any) {
if (data.label === 'upgrade') {
return i18n.global.t('clean.upgradeHelper');
}
if (data.label === 'cache') {
return i18n.global.t('clean.cacheHelper');
}
return data.isRecommend ? i18n.global.t('clean.statusSuggest') : i18n.global.t('clean.statusWarning');
}
@@ -544,8 +520,6 @@ function load18n(label: string) {
return i18n.global.t('clean.upgrade');
case 'agent_packages':
return i18n.global.t('clean.agentPackages');
case 'cache':
return i18n.global.t('clean.cache');
case 'snapshot':
return i18n.global.t('clean.snapshot');
case 'rollback':