Fix bugs with updating a resource

This commit is contained in:
Owen
2025-12-01 19:57:23 -05:00
parent beea28daf3
commit a7e32d4013
2 changed files with 52 additions and 47 deletions

View File

@@ -203,9 +203,9 @@ export async function updateAndGenerateEndpointDestinations(
// Update clientSites for each site on this exit node // Update clientSites for each site on this exit node
for (const site of sitesOnExitNode) { for (const site of sitesOnExitNode) {
logger.debug( // logger.debug(
`Updating site ${site.siteId} on exit node ${exitNode.exitNodeId}` // `Updating site ${site.siteId} on exit node ${exitNode.exitNodeId}`
); // );
// if the public key or endpoint has changed, update it otherwise continue // if the public key or endpoint has changed, update it otherwise continue
if ( if (

View File

@@ -268,10 +268,13 @@ export async function updateSiteResource(
); );
// after everything is rebuilt above we still need to update the targets and remote subnets if the destination changed // after everything is rebuilt above we still need to update the targets and remote subnets if the destination changed
if ( const destinationChanged =
existingSiteResource.destination !== existingSiteResource.destination !==
updatedSiteResource.destination updatedSiteResource.destination;
) { const aliasChanged =
existingSiteResource.alias !== updatedSiteResource.alias;
if (destinationChanged || aliasChanged) {
const [newt] = await trx const [newt] = await trx
.select() .select()
.from(newts) .from(newts)
@@ -284,6 +287,8 @@ export async function updateSiteResource(
); );
} }
// Only update targets on newt if destination changed
if (destinationChanged) {
const oldTargets = generateSubnetProxyTargets( const oldTargets = generateSubnetProxyTargets(
existingSiteResource, existingSiteResource,
mergedAllClients mergedAllClients
@@ -297,11 +302,12 @@ export async function updateSiteResource(
oldTargets: oldTargets, oldTargets: oldTargets,
newTargets: newTargets newTargets: newTargets
}); });
}
// Update olms for both destination and alias changes
let olmJobs: Promise<void>[] = []; let olmJobs: Promise<void>[] = [];
for (const client of mergedAllClients) { for (const client of mergedAllClients) {
// we also need to update the remote subnets on the olms for each client that has access to this site // we also need to update the remote subnets on the olms for each client that has access to this site
try {
olmJobs.push( olmJobs.push(
updatePeerData( updatePeerData(
client.clientId, client.clientId,
@@ -322,15 +328,14 @@ export async function updateSiteResource(
updatedSiteResource updatedSiteResource
]) ])
} }
) ).catch((error) => {
);
} catch (error) {
logger.warn(
// this is okay because sometimes the olm is not online to receive the update or associated with the client yet // this is okay because sometimes the olm is not online to receive the update or associated with the client yet
logger.warn(
`Error updating peer data for client ${client.clientId}:`, `Error updating peer data for client ${client.clientId}:`,
error error
); );
} })
);
} }
await Promise.all(olmJobs); await Promise.all(olmJobs);