diff --git a/console/deploy/console.yaml b/console/deploy/console.yaml index cb98aaa..31c59e4 100644 --- a/console/deploy/console.yaml +++ b/console/deploy/console.yaml @@ -58,7 +58,7 @@ spec: serviceAccountName: fission-console containers: - name: console - image: naeel/fission-console:v1.3.92 + image: naeel/fission-console:v1.3.93 imagePullPolicy: Always ports: - containerPort: 8090 diff --git a/console/internal/cloud/tenant.go b/console/internal/cloud/tenant.go index 4eb4678..42ba5cc 100644 --- a/console/internal/cloud/tenant.go +++ b/console/internal/cloud/tenant.go @@ -393,7 +393,17 @@ func (m *NSManager) reapExpiredFunctionsInNS(ctx context.Context, ns string, now } } - // Orphan packages — пакеты без соответствующей функции + // Orphan packages — пакеты без соответствующей функции. + // Перечитываем Functions заново (fresh LIST) чтобы избежать race condition: + // новая функция может быть создана между снятием activeFunctions и этой проверкой. + freshFunctions, freshErr := m.dyn.Resource(fission.FunctionGVR).Namespace(ns).List(ctx, metav1.ListOptions{}) + if freshErr != nil { + return + } + freshFunctionSet := make(map[string]struct{}, len(freshFunctions.Items)) + for _, fn := range freshFunctions.Items { + freshFunctionSet[fn.GetName()] = struct{}{} + } packages, pkgListErr := m.dyn.Resource(fission.PackageGVR).Namespace(ns).List(ctx, metav1.ListOptions{}) if pkgListErr == nil { for _, pkg := range packages.Items { @@ -402,7 +412,7 @@ func (m *NSManager) reapExpiredFunctionsInNS(ctx context.Context, ns string, now continue } fnName := strings.TrimSuffix(pkgName, "-pkg") - if _, exists := activeFunctions[fnName]; !exists { + if _, exists := freshFunctionSet[fnName]; !exists { log.Printf("cloud.ExpiryReaper: deleting orphan package %s/%s", ns, pkgName) _ = m.dyn.Resource(fission.PackageGVR).Namespace(ns).Delete(ctx, pkgName, metav1.DeleteOptions{}) } diff --git a/console/internal/runtime/entrypoint.go b/console/internal/runtime/entrypoint.go index 9bd6c37..26d59f0 100644 --- a/console/internal/runtime/entrypoint.go +++ b/console/internal/runtime/entrypoint.go @@ -11,7 +11,8 @@ package runtime func DefaultEntrypoint(lang string) string { switch lang { case "nodejs": - return "main" + // main.js — явное расширение нужно для ESM-loader в node-env + return "main.js" case "php": // Fission php-env: filename::functionName return "main.php::handler" diff --git a/console/ui/index.html b/console/ui/index.html index f9e0ce7..e705605 100644 --- a/console/ui/index.html +++ b/console/ui/index.html @@ -103,7 +103,7 @@