Исправление работы планировщика 2
This commit is contained in:
@@ -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() {
|
||||||
for range t.C {
|
defer func() {
|
||||||
newThread := &starlark.Thread{Name: thread.Name}
|
if r := recover(); r != nil {
|
||||||
log.Info("Calling scheduled function").Str("plugin", thread.Name).Str("function", fn.Name()).Send()
|
log.Error("Panic in scheduled function goroutine - scheduler stopped!").Str("plugin", thread.Name).Str("function", fn.Name()).Any("panic", r).Send()
|
||||||
_, err := starlark.Call(newThread, fn, nil, nil)
|
|
||||||
if err != nil {
|
|
||||||
log.Warn("Error while executing scheduled function").Str("plugin", thread.Name).Str("function", fn.Name()).Err(err).Send()
|
|
||||||
}
|
}
|
||||||
|
}()
|
||||||
|
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}
|
||||||
|
log.Info("Calling scheduled function").Str("plugin", thread.Name).Str("function", fn.Name()).Send()
|
||||||
|
_, err := starlark.Call(newThread, fn, nil, nil)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn("Error while executing scheduled function").Str("plugin", thread.Name).Str("function", fn.Name()).Err(err).Send()
|
||||||
|
}
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
|
Reference in New Issue
Block a user