@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.
- package/helpers/revision-helper.ts +19 -14
- package/helpers/service-helper.ts +10 -4
- package/package.json +1 -1
|
@@ -179,16 +179,23 @@ const getContainerError = (
|
|
|
179
179
|
};
|
|
180
180
|
|
|
181
181
|
const handleRevisionStatus = (revisionStatus: any) => {
|
|
182
|
-
if (revisionStatus?.
|
|
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
|
|
191
|
-
|
|
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
|
|
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:
|
|
242
|
-
errorMsg:
|
|
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
|
-
|
|
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];
|