@kumori/aurora-backend-handler 1.1.51 → 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,6 +179,10 @@ const getContainerError = (
|
|
|
179
179
|
};
|
|
180
180
|
|
|
181
181
|
const handleRevisionStatus = (revisionStatus: any) => {
|
|
182
|
+
if (!revisionStatus?.runtime) {
|
|
183
|
+
return revisionStatus?.state;
|
|
184
|
+
}
|
|
185
|
+
|
|
182
186
|
for (const roleData of Object.values<any>(revisionStatus.runtime.roles)) {
|
|
183
187
|
for (const instanceData of Object.values<any>(roleData.instances)) {
|
|
184
188
|
for (const container of Object.values<any>(instanceData.containers ?? {})) {
|
|
@@ -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];
|