Skip to content

Commit 3fedfef

Browse files
authored
fix(apisix-standalone): ensure PUT sent when no diff events (#328)
1 parent 2684611 commit 3fedfef

File tree

1 file changed

+52
-60
lines changed

1 file changed

+52
-60
lines changed

libs/backend-apisix-standalone/src/operator.ts

Lines changed: 52 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
type Subject,
1212
catchError,
1313
from,
14-
iif,
1514
map,
1615
mergeMap,
1716
of,
@@ -95,68 +94,61 @@ export class Operator extends ADCSDK.backend.BackendEventSource {
9594
});
9695
}),
9796
switchMap(() =>
98-
iif(
99-
() => events.length > 0,
100-
from(this.opts.serverTokenMap).pipe(
101-
mergeMap(([server, token]) =>
102-
from(
103-
this.opts.client.put(`${server}${ENDPOINT_CONFIG}`, newConfig, {
104-
headers: {
105-
[HEADER_CREDENTIAL]: token,
106-
[HEADER_DIGEST]: createHash('sha1')
107-
.update(JSON.stringify(newConfig))
108-
.digest('hex'),
109-
},
110-
}),
111-
).pipe(
112-
tap((resp) => logger(this.debugLogEvent(resp))),
113-
map<AxiosResponse, ADCSDK.BackendSyncResult>(
114-
(response) =>
115-
({
116-
success: true,
117-
event: {} as ADCSDK.Event, // keep empty
118-
axiosResponse: response,
119-
}) satisfies ADCSDK.BackendSyncResult,
120-
),
121-
catchError<
122-
ADCSDK.BackendSyncResult,
123-
ObservableInput<ADCSDK.BackendSyncResult>
124-
>((error: Error | AxiosError) => {
125-
if (opts.exitOnFailure) {
126-
if (axios.isAxiosError(error) && error.response)
127-
return throwError(
128-
() =>
129-
new Error(
130-
error.response?.data?.error_msg ??
131-
JSON.stringify(error.response?.data),
132-
),
133-
);
134-
return throwError(() => error);
135-
}
136-
return of({
137-
success: false,
138-
event: {} as ADCSDK.Event, // keep empty,
139-
error,
140-
...(axios.isAxiosError(error) && {
141-
axiosResponse: error.response,
142-
...(error.response?.data?.error_msg && {
143-
error: new Error(error.response.data.error_msg),
144-
}),
145-
}),
146-
} satisfies ADCSDK.BackendSyncResult);
147-
}),
148-
tap(() => {
149-
configCache.set(this.opts.cacheKey, toADC(newConfig));
150-
rawConfigCache.set(this.opts.cacheKey, newConfig);
151-
logger(taskStateEvent('TASK_DONE'));
152-
}),
97+
from(this.opts.serverTokenMap).pipe(
98+
mergeMap(([server, token]) =>
99+
from(
100+
this.opts.client.put(`${server}${ENDPOINT_CONFIG}`, newConfig, {
101+
headers: {
102+
[HEADER_CREDENTIAL]: token,
103+
[HEADER_DIGEST]: createHash('sha1')
104+
.update(JSON.stringify(newConfig))
105+
.digest('hex'),
106+
},
107+
}),
108+
).pipe(
109+
tap((resp) => logger(this.debugLogEvent(resp))),
110+
map<AxiosResponse, ADCSDK.BackendSyncResult>(
111+
(response) =>
112+
({
113+
success: true,
114+
event: {} as ADCSDK.Event, // keep empty
115+
axiosResponse: response,
116+
}) satisfies ADCSDK.BackendSyncResult,
153117
),
118+
catchError<
119+
ADCSDK.BackendSyncResult,
120+
ObservableInput<ADCSDK.BackendSyncResult>
121+
>((error: Error | AxiosError) => {
122+
if (opts.exitOnFailure) {
123+
if (axios.isAxiosError(error) && error.response)
124+
return throwError(
125+
() =>
126+
new Error(
127+
error.response?.data?.error_msg ??
128+
JSON.stringify(error.response?.data),
129+
),
130+
);
131+
return throwError(() => error);
132+
}
133+
return of({
134+
success: false,
135+
event: {} as ADCSDK.Event, // keep empty,
136+
error,
137+
...(axios.isAxiosError(error) && {
138+
axiosResponse: error.response,
139+
...(error.response?.data?.error_msg && {
140+
error: new Error(error.response.data.error_msg),
141+
}),
142+
}),
143+
} satisfies ADCSDK.BackendSyncResult);
144+
}),
145+
tap(() => {
146+
configCache.set(this.opts.cacheKey, toADC(newConfig));
147+
rawConfigCache.set(this.opts.cacheKey, newConfig);
148+
logger(taskStateEvent('TASK_DONE'));
149+
}),
154150
),
155151
),
156-
of<ADCSDK.BackendSyncResult>({
157-
success: true,
158-
event: {} as ADCSDK.Event, // keep empty
159-
} satisfies ADCSDK.BackendSyncResult),
160152
),
161153
),
162154
);

0 commit comments

Comments
 (0)