@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
- 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.51",
3
+ "version": "1.1.52",
4
4
  "description": "backend handler",
5
5
  "main": "backend-handler.ts",
6
6
  "scripts": {