mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Add admin dashboard option to run health checks (#3606)
There's one for git gc, why not git fsck too? Also add a couple more trace logs to GitFsck to see progress
This commit is contained in:
		@@ -2172,6 +2172,7 @@ func GitFsck() {
 | 
				
			|||||||
			func(idx int, bean interface{}) error {
 | 
								func(idx int, bean interface{}) error {
 | 
				
			||||||
				repo := bean.(*Repository)
 | 
									repo := bean.(*Repository)
 | 
				
			||||||
				repoPath := repo.RepoPath()
 | 
									repoPath := repo.RepoPath()
 | 
				
			||||||
 | 
									log.Trace(fmt.Sprintf("Running health check for repository %s", repoPath))
 | 
				
			||||||
				if err := git.Fsck(repoPath, setting.Cron.RepoHealthCheck.Timeout, setting.Cron.RepoHealthCheck.Args...); err != nil {
 | 
									if err := git.Fsck(repoPath, setting.Cron.RepoHealthCheck.Timeout, setting.Cron.RepoHealthCheck.Args...); err != nil {
 | 
				
			||||||
					desc := fmt.Sprintf("Failed to health check repository (%s): %v", repoPath, err)
 | 
										desc := fmt.Sprintf("Failed to health check repository (%s): %v", repoPath, err)
 | 
				
			||||||
					log.Warn(desc)
 | 
										log.Warn(desc)
 | 
				
			||||||
@@ -2183,6 +2184,7 @@ func GitFsck() {
 | 
				
			|||||||
			}); err != nil {
 | 
								}); err != nil {
 | 
				
			||||||
		log.Error(4, "GitFsck: %v", err)
 | 
							log.Error(4, "GitFsck: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						log.Trace("Finished: GitFsck")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GitGcRepos calls 'git gc' to remove unnecessary files and optimize the local repository
 | 
					// GitGcRepos calls 'git gc' to remove unnecessary files and optimize the local repository
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1220,6 +1220,8 @@ dashboard.reinit_missing_repos = Reinitialize all missing Git repositories for w
 | 
				
			|||||||
dashboard.reinit_missing_repos_success = All missing Git repositories for which records existed have been reinitialized.
 | 
					dashboard.reinit_missing_repos_success = All missing Git repositories for which records existed have been reinitialized.
 | 
				
			||||||
dashboard.sync_external_users = Synchronize external user data
 | 
					dashboard.sync_external_users = Synchronize external user data
 | 
				
			||||||
dashboard.sync_external_users_started = External user synchronization started
 | 
					dashboard.sync_external_users_started = External user synchronization started
 | 
				
			||||||
 | 
					dashboard.git_fsck = Execute health checks on all repositories
 | 
				
			||||||
 | 
					dashboard.git_fsck_started = Repository health checks started
 | 
				
			||||||
dashboard.server_uptime = Server Uptime
 | 
					dashboard.server_uptime = Server Uptime
 | 
				
			||||||
dashboard.current_goroutine = Current Goroutines
 | 
					dashboard.current_goroutine = Current Goroutines
 | 
				
			||||||
dashboard.current_memory_usage = Current Memory Usage
 | 
					dashboard.current_memory_usage = Current Memory Usage
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -122,6 +122,7 @@ const (
 | 
				
			|||||||
	syncRepositoryUpdateHook
 | 
						syncRepositoryUpdateHook
 | 
				
			||||||
	reinitMissingRepository
 | 
						reinitMissingRepository
 | 
				
			||||||
	syncExternalUsers
 | 
						syncExternalUsers
 | 
				
			||||||
 | 
						gitFsck
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Dashboard show admin panel dashboard
 | 
					// Dashboard show admin panel dashboard
 | 
				
			||||||
@@ -161,6 +162,9 @@ func Dashboard(ctx *context.Context) {
 | 
				
			|||||||
		case syncExternalUsers:
 | 
							case syncExternalUsers:
 | 
				
			||||||
			success = ctx.Tr("admin.dashboard.sync_external_users_started")
 | 
								success = ctx.Tr("admin.dashboard.sync_external_users_started")
 | 
				
			||||||
			go models.SyncExternalUsers()
 | 
								go models.SyncExternalUsers()
 | 
				
			||||||
 | 
							case gitFsck:
 | 
				
			||||||
 | 
								success = ctx.Tr("admin.dashboard.git_fsck_started")
 | 
				
			||||||
 | 
								go models.GitFsck()
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,6 +49,10 @@
 | 
				
			|||||||
						<td>{{.i18n.Tr "admin.dashboard.sync_external_users"}}</td>
 | 
											<td>{{.i18n.Tr "admin.dashboard.sync_external_users"}}</td>
 | 
				
			||||||
						<td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=8">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td>
 | 
											<td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=8">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td>
 | 
				
			||||||
					</tr>
 | 
										</tr>
 | 
				
			||||||
 | 
										<tr>
 | 
				
			||||||
 | 
											<td>{{.i18n.Tr "admin.dashboard.git_fsck"}}</td>
 | 
				
			||||||
 | 
											<td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=9">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td>
 | 
				
			||||||
 | 
										</tr>
 | 
				
			||||||
				</tbody>
 | 
									</tbody>
 | 
				
			||||||
			</table>
 | 
								</table>
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user