-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Service installs: Fix creating two tasks when moving a device #1857
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -287,18 +287,25 @@ hooks.addPureHook('PATCH', 'resin', 'device', { | |
const affectedIds = await sbvrUtils.getAffectedIds(args); | ||
if (affectedIds.length !== 0) { | ||
await deleteServiceInstallsForCurrentApp(args.api, newAppId, affectedIds); | ||
await createAppServiceInstalls(args.api, newAppId, affectedIds, args.tx); | ||
} | ||
}, | ||
}); | ||
|
||
hooks.addPureHook('PATCH', 'resin', 'device', { | ||
POSTRUN: async ({ api, request, tx }) => { | ||
const affectedIds = request.affectedIds!; | ||
if ( | ||
request.values.is_pinned_on__release !== undefined && | ||
affectedIds.length !== 0 | ||
) { | ||
if (affectedIds.length === 0) { | ||
return; | ||
} | ||
const newAppId = request.values.belongs_to__application; | ||
if (newAppId != null) { | ||
// We could also have an optimization for the case that `values.is_pinned_on__release != null` | ||
// to make the part that finds the target release faster, but chose to keep this simpler since: | ||
// a) We expect that in the majority of device move requests users will not be also be pinning | ||
// the device at the same time. | ||
// b) Only the sync approach would benefit from it, since creating the service installs via tasks | ||
// (which is going to be the default), only accepts the deviceIds as a parameter, | ||
await createAppServiceInstalls(api, newAppId, affectedIds, tx); | ||
return; | ||
Comment on lines
+305
to
+306
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd appreciate a comment saying that since we're moving apps we can just create the app service installs and not worry about targeting the specific release, otherwise I would wonder why we're returning here There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
} | ||
if (request.values.is_pinned_on__release !== undefined) { | ||
// If the device was preloaded, and then pinned, service_installs do not exist | ||
// for this device+release combination. We need to create these | ||
if (request.values.is_pinned_on__release != null) { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is very much a TODO comment and would make more sense in the commit body imo, having it in the code like this is probably not going to end up being useful as no one will look at it anyway. Fwiw I do agree we don't need the extra levels of optimization as well so the only reason we would ever act on this is if we found performance issues that triggered us to investigate anyway, in which case we probably wouldn't find this