mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Graceful: Xorm, RepoIndexer, Cron and Others (#9282)
* Change graceful to use a singleton obtained through GetManager instead of a global. * Graceful: Make TestPullRequests shutdownable * Graceful: Make the cron tasks graceful * Graceful: AddTestPullRequest run in graceful ctx * Graceful: SyncMirrors shutdown * Graceful: SetDefaultContext for Xorm to be HammerContext * Avoid starting graceful for migrate commands and checkout * Graceful: DeliverHooks now can be shutdown * Fix multiple syncing errors in modules/sync/UniqueQueue & Make UniqueQueue closable * Begin the process of making the repo indexer shutdown gracefully
This commit is contained in:
		@@ -7,6 +7,7 @@ package models
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"container/list"
 | 
			
		||||
	"context"
 | 
			
		||||
	"crypto/md5"
 | 
			
		||||
	"crypto/sha256"
 | 
			
		||||
	"crypto/subtle"
 | 
			
		||||
@@ -1695,7 +1696,7 @@ func synchronizeLdapSSHPublicKeys(usr *User, s *LoginSource, sshPublicKeys []str
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SyncExternalUsers is used to synchronize users with external authorization source
 | 
			
		||||
func SyncExternalUsers() {
 | 
			
		||||
func SyncExternalUsers(ctx context.Context) {
 | 
			
		||||
	log.Trace("Doing: SyncExternalUsers")
 | 
			
		||||
 | 
			
		||||
	ls, err := LoginSources()
 | 
			
		||||
@@ -1710,6 +1711,12 @@ func SyncExternalUsers() {
 | 
			
		||||
		if !s.IsActived || !s.IsSyncEnabled {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		select {
 | 
			
		||||
		case <-ctx.Done():
 | 
			
		||||
			log.Warn("SyncExternalUsers: Aborted due to shutdown before update of %s", s.Name)
 | 
			
		||||
			return
 | 
			
		||||
		default:
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if s.IsLDAP() {
 | 
			
		||||
			log.Trace("Doing: SyncExternalUsers[%s]", s.Name)
 | 
			
		||||
@@ -1727,6 +1734,12 @@ func SyncExternalUsers() {
 | 
			
		||||
				log.Error("SyncExternalUsers: %v", err)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			select {
 | 
			
		||||
			case <-ctx.Done():
 | 
			
		||||
				log.Warn("SyncExternalUsers: Aborted due to shutdown before update of %s", s.Name)
 | 
			
		||||
				return
 | 
			
		||||
			default:
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			sr, err := s.LDAP().SearchEntries()
 | 
			
		||||
			if err != nil {
 | 
			
		||||
@@ -1735,6 +1748,19 @@ func SyncExternalUsers() {
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			for _, su := range sr {
 | 
			
		||||
				select {
 | 
			
		||||
				case <-ctx.Done():
 | 
			
		||||
					log.Warn("SyncExternalUsers: Aborted due to shutdown at update of %s before completed update of users", s.Name)
 | 
			
		||||
					// Rewrite authorized_keys file if LDAP Public SSH Key attribute is set and any key was added or removed
 | 
			
		||||
					if sshKeysNeedUpdate {
 | 
			
		||||
						err = RewriteAllPublicKeys()
 | 
			
		||||
						if err != nil {
 | 
			
		||||
							log.Error("RewriteAllPublicKeys: %v", err)
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					return
 | 
			
		||||
				default:
 | 
			
		||||
				}
 | 
			
		||||
				if len(su.Username) == 0 {
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
@@ -1819,6 +1845,13 @@ func SyncExternalUsers() {
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			select {
 | 
			
		||||
			case <-ctx.Done():
 | 
			
		||||
				log.Warn("SyncExternalUsers: Aborted due to shutdown at update of %s before delete users", s.Name)
 | 
			
		||||
				return
 | 
			
		||||
			default:
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Deactivate users not present in LDAP
 | 
			
		||||
			if updateExisting {
 | 
			
		||||
				for _, usr := range users {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user