@kumori/aurora-backend-handler 1.1.50 → 1.1.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -179,16 +179,23 @@ const getContainerError = (
179
179
  };
180
180
 
181
181
  const handleRevisionStatus = (revisionStatus: any) => {
182
- if (revisionStatus?.error) {
183
- return {
184
- code: revisionStatus.error.code,
185
- message: revisionStatus.error.message,
186
- timestamp: Date.now().toString(),
187
- };
182
+ if (!revisionStatus?.runtime) {
183
+ return revisionStatus?.state;
188
184
  }
189
185
 
190
- const containerError = getContainerError(revisionStatus);
191
- if (containerError) return containerError;
186
+ for (const roleData of Object.values<any>(revisionStatus.runtime.roles)) {
187
+ for (const instanceData of Object.values<any>(roleData.instances)) {
188
+ for (const container of Object.values<any>(instanceData.containers ?? {})) {
189
+ if (!container.status.ready) {
190
+ return {
191
+ code: container.status.status.waiting?.reason ?? "ContainerNotReady",
192
+ message: container.status.status.waiting?.message ?? "One or more containers are not ready for unknown reasons.",
193
+ timestamp: Date.now().toString(),
194
+ };
195
+ }
196
+ }
197
+ }
198
+ }
192
199
 
193
200
  return revisionStatus?.state;
194
201
  };
@@ -199,9 +206,7 @@ const createRevision = (
199
206
  usedCpu: number,
200
207
  usedMemory: number,
201
208
  ): Revision => {
202
- const status = handleRevisionStatus(eventData.status);
203
- const explicitError = eventData.status?.error;
204
- const containerError = !explicitError ? getContainerError(eventData.status) : null;
209
+ const containerError = eventData.status?.error ? null : getContainerError(eventData.status);
205
210
 
206
211
  return {
207
212
  id: entityId,
@@ -237,9 +242,9 @@ const createRevision = (
237
242
  },
238
243
  cost: 0,
239
244
  },
240
- status,
241
- errorCode: explicitError ? explicitError.code : containerError ? containerError.code : "",
242
- errorMsg: explicitError ? explicitError.message : containerError ? containerError.message : "",
245
+ status: handleRevisionStatus(eventData.status),
246
+ errorCode: eventData.status?.error ? eventData.status.error.code : containerError?.code ?? "",
247
+ errorMsg: eventData.status?.error ? eventData.status.error.message : containerError?.message ?? "",
243
248
  createdAt:
244
249
  (eventData.status && eventData.status.runtime?.status?.createdAt) || "",
245
250
  };
@@ -123,6 +123,7 @@ const determineFinalStatusAndError = (
123
123
  eventData: any,
124
124
  pendingRevisionErrors: Array<{ service: string; revision: Revision }>,
125
125
  entityId: string,
126
+ currentRevision: Revision | undefined,
126
127
  ): {
127
128
  finalStatus: any;
128
129
  finalError: any;
@@ -131,23 +132,27 @@ const determineFinalStatusAndError = (
131
132
  const incomingStatus = eventData.status.state;
132
133
  const incomingTs = getTimestamp(incomingStatus.timestamp);
133
134
  const currentTs = getTimestamp(existingService?.status?.timestamp);
135
+ const revisionTs = currentRevision?.status ? getTimestamp(currentRevision.status.timestamp) : 0;
136
+
137
+ const bestCandidateTs = Math.max(incomingTs, revisionTs);
138
+ const isNewer = !existingService || bestCandidateTs > currentTs;
134
139
 
135
- const isNewer = !existingService || incomingTs > currentTs;
136
140
  let finalStatus = existingService?.status;
137
141
  let finalError = existingService?.error;
138
142
 
139
143
  if (isNewer) {
140
- finalStatus = incomingStatus;
144
+ const revisionHasError = !!currentRevision?.errorCode;
145
+ finalStatus = (revisionHasError || (currentRevision?.status && revisionTs >= incomingTs))
146
+ ? currentRevision!.status
147
+ : incomingStatus;
141
148
  finalError = eventData.status.error ?? undefined;
142
149
  }
143
150
 
144
151
  const pendingErrorIndex = pendingRevisionErrors.findIndex(
145
152
  (pending) => pending.service === entityId,
146
153
  );
147
-
148
154
  if (pendingErrorIndex !== -1) {
149
155
  const pendingError = pendingRevisionErrors[pendingErrorIndex];
150
-
151
156
  finalStatus = pendingError.revision.status;
152
157
  finalError = {
153
158
  code: pendingError.revision.errorCode || "",
@@ -195,6 +200,7 @@ export const handleServiceEvent = ({
195
200
  eventData,
196
201
  pendingRevisionErrors,
197
202
  entityId,
203
+ currentRevision,
198
204
  );
199
205
 
200
206
  const updatedPendingRevisionErrors = [...pendingRevisionErrors];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kumori/aurora-backend-handler",
3
- "version": "1.1.50",
3
+ "version": "1.1.52",
4
4
  "description": "backend handler",
5
5
  "main": "backend-handler.ts",
6
6
  "scripts": {