From 039b2d3d010b0f4a4fc3d980b78ae64a727a05f0 Mon Sep 17 00:00:00 2001 From: James Kwon <96548424+hongil0316@users.noreply.github.com> Date: Thu, 16 Jan 2025 21:34:42 -0500 Subject: [PATCH] Handle timeout --- drip/api.gen.go | 75 ++++++++++++++++--------------- node-pack-extract/cloudbuild.yaml | 5 +++ node-pack-extract/entrypoint.sh | 21 ++++++--- openapi.yml | 2 + server/implementation/registry.go | 8 ++++ 5 files changed, 69 insertions(+), 42 deletions(-) diff --git a/drip/api.gen.go b/drip/api.gen.go index 986568a..e615be0 100644 --- a/drip/api.gen.go +++ b/drip/api.gen.go @@ -527,6 +527,7 @@ type ListNodeVersionsParams struct { type CreateComfyNodesJSONBody struct { CloudBuildInfo *ComfyNodeCloudBuildInfo `json:"cloud_build_info,omitempty"` Nodes *map[string]ComfyNode `json:"nodes,omitempty"` + Reason *string `json:"reason,omitempty"` Success *bool `json:"success,omitempty"` } @@ -4982,43 +4983,43 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/node-pack-extract/cloudbuild.yaml b/node-pack-extract/cloudbuild.yaml index 1972336..3cff10a 100644 --- a/node-pack-extract/cloudbuild.yaml +++ b/node-pack-extract/cloudbuild.yaml @@ -13,6 +13,8 @@ steps: - "--env" - "AUTO_UPDATE=true" - "--env" + - "TIMEOUT=3600" + - "--env" - "CUSTOM_NODE_URL=$_CUSTOM_NODE_URL" - "--env" - "CUSTOM_NODE_NAME=$_CUSTOM_NODE_NAME" @@ -22,6 +24,8 @@ steps: - "/workspace" - "gcr.io/$PROJECT_ID/comfyui-nodepack" - "$_CUSTOM_NODE_NAME.json" + timeout: 5400s # 90 minutes + allowFailure: true - name: "gcr.io/google.com/cloudsdktool/cloud-sdk:slim" entrypoint: "bash" @@ -57,3 +61,4 @@ substitutions: options: logging: CLOUD_LOGGING_ONLY +timeout: 5400s # 90 minutes diff --git a/node-pack-extract/entrypoint.sh b/node-pack-extract/entrypoint.sh index 600c651..47f7e9c 100644 --- a/node-pack-extract/entrypoint.sh +++ b/node-pack-extract/entrypoint.sh @@ -1,14 +1,23 @@ -#!/bin/sh +#!/bin/bash set -e -# run the original endpoint +# run the original endpoint init.sh & # loop until we can extract the node information +TIMEOUT=${TIMEOUT:-3600} OUTPUTFILE=${1:-"/tmp/output.json"} -echo -n > "$OUTPUTFILE" +echo -n >"$OUTPUTFILE" until cat "$OUTPUTFILE" | grep ''; do sleep 1 + + echo "$SECONDS $TIMEOUT" + if ((SECONDS >= TIMEOUT)); then + jq -n '{success: false, reason: "timeout"}' | tee "$OUTPUTFILE" + break + fi + echo "here" + curl -sf localhost:8188/object_info | jq -c ' to_entries | @@ -28,7 +37,9 @@ until cat "$OUTPUTFILE" | grep ''; do if length > 0 then {success: true, nodes: from_entries} else - {success: false} + {success: false, reason: "node cannot be loaded into comfy ui"} end' | - tee "$OUTPUTFILE" + tee "$OUTPUTFILE" done + +jq -e '.success' "$OUTPUTFILE" diff --git a/openapi.yml b/openapi.yml index 7f490d2..37eab53 100644 --- a/openapi.yml +++ b/openapi.yml @@ -1790,6 +1790,8 @@ paths: properties: success: type: boolean + reason: + type: string cloud_build_info: $ref: '#/components/schemas/ComfyNodeCloudBuildInfo' nodes: diff --git a/server/implementation/registry.go b/server/implementation/registry.go index 4fd455d..c293a0f 100644 --- a/server/implementation/registry.go +++ b/server/implementation/registry.go @@ -1017,7 +1017,15 @@ func (impl *DripStrictServerImplementation) CreateComfyNodes( cb := mapper.ApiComfyNodeCloudBuildToDbComfyNodeCloudBuild(request.Body.CloudBuildInfo) // Check if extraction was marked as unsuccessful if request.Body.Success != nil && !*request.Body.Success { + reason := "unknown" + if request.Body.Reason != nil { + reason = *request.Body.Reason + } + log.Ctx(ctx).Warn().Msgf( + "Comfy nodes extraction failed for %s %s: %s", request.NodeId, request.Version, reason) + err = impl.RegistryService.MarkComfyNodeExtractionFailed(ctx, impl.Client, request.NodeId, request.Version, cb) + } else { // Attempt to create comfy nodes in the registry err = impl.RegistryService.CreateComfyNodes(