@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
- finalStatus = incomingStatus;
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];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kumori/aurora-backend-handler",
3
- "version": "1.1.51",
3
+ "version": "1.1.53",
4
4
  "description": "backend handler",
5
5
  "main": "backend-handler.ts",
6
6
  "scripts": {