Исправление работы планировщика 2

This commit is contained in:
2025-10-15 02:32:13 +03:00
parent bb91f35e58
commit e5400379fe
2 changed files with 30 additions and 6 deletions

View File

@@ -180,6 +180,11 @@ func runScheduled(thread *starlark.Thread, fn *starlark.Function, duration strin
// Запускаем функцию немедленно при первой регистрации // Запускаем функцию немедленно при первой регистрации
go func() { go func() {
defer func() {
if r := recover(); r != nil {
log.Error("Panic in initial plugin function execution").Str("plugin", thread.Name).Str("function", fn.Name()).Any("panic", r).Send()
}
}()
newThread := &starlark.Thread{Name: thread.Name} newThread := &starlark.Thread{Name: thread.Name}
log.Info("Running plugin function immediately on startup").Str("plugin", thread.Name).Str("function", fn.Name()).Send() log.Info("Running plugin function immediately on startup").Str("plugin", thread.Name).Str("function", fn.Name()).Send()
_, err := starlark.Call(newThread, fn, nil, nil) _, err := starlark.Call(newThread, fn, nil, nil)
@@ -189,13 +194,26 @@ func runScheduled(thread *starlark.Thread, fn *starlark.Function, duration strin
}() }()
go func() { go func() {
defer func() {
if r := recover(); r != nil {
log.Error("Panic in scheduled function goroutine - scheduler stopped!").Str("plugin", thread.Name).Str("function", fn.Name()).Any("panic", r).Send()
}
}()
for range t.C { for range t.C {
// Защита от паник внутри каждого вызова
func() {
defer func() {
if r := recover(); r != nil {
log.Error("Panic while executing scheduled function").Str("plugin", thread.Name).Str("function", fn.Name()).Any("panic", r).Send()
}
}()
newThread := &starlark.Thread{Name: thread.Name} newThread := &starlark.Thread{Name: thread.Name}
log.Info("Calling scheduled function").Str("plugin", thread.Name).Str("function", fn.Name()).Send() log.Info("Calling scheduled function").Str("plugin", thread.Name).Str("function", fn.Name()).Send()
_, err := starlark.Call(newThread, fn, nil, nil) _, err := starlark.Call(newThread, fn, nil, nil)
if err != nil { if err != nil {
log.Warn("Error while executing scheduled function").Str("plugin", thread.Name).Str("function", fn.Name()).Err(err).Send() log.Warn("Error while executing scheduled function").Str("plugin", thread.Name).Str("function", fn.Name()).Err(err).Send()
} }
}()
} }
}() }()

View File

@@ -105,6 +105,12 @@ func fixRepoPermissions(path string) error {
return err return err
} }
// Пропускаем директорию .git и её содержимое
// Git управляет правами самостоятельно, не нужно их трогать
if info.IsDir() && info.Name() == ".git" {
return filepath.SkipDir
}
if info.IsDir() { if info.IsDir() {
// Устанавливаем права 2775 для директорий (setgid) // Устанавливаем права 2775 для директорий (setgid)
return os.Chmod(filePath, 0o2775) return os.Chmod(filePath, 0o2775)