@kumori/aurora-backend-handler 1.1.51 → 1.1.53
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,31 @@ 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
|
|
|
143
|
+
if (existingService?.status?.code === "REMOVING_SERVICE") {
|
|
144
|
+
return { finalStatus, finalError, pendingErrorIndex: -1 };
|
|
145
|
+
}
|
|
146
|
+
|
|
139
147
|
if (isNewer) {
|
|
140
|
-
|
|
148
|
+
const revisionHasError = !!currentRevision?.errorCode;
|
|
149
|
+
finalStatus = (revisionHasError || (currentRevision?.status && revisionTs >= incomingTs))
|
|
150
|
+
? currentRevision!.status
|
|
151
|
+
: incomingStatus;
|
|
141
152
|
finalError = eventData.status.error ?? undefined;
|
|
142
153
|
}
|
|
143
154
|
|
|
144
155
|
const pendingErrorIndex = pendingRevisionErrors.findIndex(
|
|
145
156
|
(pending) => pending.service === entityId,
|
|
146
157
|
);
|
|
147
|
-
|
|
148
158
|
if (pendingErrorIndex !== -1) {
|
|
149
159
|
const pendingError = pendingRevisionErrors[pendingErrorIndex];
|
|
150
|
-
|
|
151
160
|
finalStatus = pendingError.revision.status;
|
|
152
161
|
finalError = {
|
|
153
162
|
code: pendingError.revision.errorCode || "",
|
|
@@ -195,6 +204,7 @@ export const handleServiceEvent = ({
|
|
|
195
204
|
eventData,
|
|
196
205
|
pendingRevisionErrors,
|
|
197
206
|
entityId,
|
|
207
|
+
currentRevision,
|
|
198
208
|
);
|
|
199
209
|
|
|
200
210
|
const updatedPendingRevisionErrors = [...pendingRevisionErrors];
|