ZAPI-660 Requests to /vms hang forever which have a "fields" param and match no VMs #2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
On any "list VMs" request that asks for a "fields" limit, if the query returns no results, we currently hang forever.
I first observed this when asking for an offset >= # of VMs. In this case, the req.vms array is empty. Currently we call Object.keys() on req.vms[0] in this case, which spits an error (since vms[0] is undefined). What we want to do is just return [].
Example of the error message in the vmapi logs:
I've attempted to add some tests in
vms.test.js
to cover this case, but I can't quite figure out how the ordering of tests is meant to work in there (they seem to just be set as keys on theexports
object, which shouldn't have any ordering guarantee? but they assume ordering by re-using variables likevmLocation
between tests...). Hopefully they work.This has also been reported on IRC by ep1a in #smartos, on a request with no limit/offset parameters: