Skip to content
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

Bring feature/perf up-to-date #5629

Merged
merged 60 commits into from
May 20, 2024

Conversation

edwintorok
Copy link
Contributor

Merge latest master, fix conflicts in dune files.

psafont and others added 30 commits April 22, 2024 13:06
Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
Also disables pylint checks that are safe to disable - from xapi-project#5490 and 5424.

Co-authored-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
Co-authored-by: Fei Su <fei.su@cloud.com>
Co-authored-by: Stephen Cheng <stephen.cheng@cloud.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
The comments were far too long and most of the time did not provide any useful
information

Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
This can happen when there are too many files to be tested, due to a bug

Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
It only existed because of dune limitations when it was in its own repository

Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
This avoids circular dependencies

Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
varstord-guard has following configuration in the service file

After=message-switch.service syslog.target

This means varstored-guard needs to be stopped before
message-switch, otherwise, it will hung and finally be killed by
systemd during xe-toolstack-restart

Move message-switch to the begining of the list to shutdown last
as all other daemons depend on it

Note: the list order is reversed by `for svc in $SERVICES`

Signed-off-by: Lin Liu <lin.liu@citrix.com>
CA-391859: Failed to stop varstord-guard
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
We need to explicitly install python2, since it is no longer the default.

Eventually we may want to drop this completely, but we're not there yet.

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
We do not publish or use the opam packages from this repo,
and therefore pinning is unnecessary.
'opam install --deps-only --with-test .' works without pinning on the version of 'opam' we have here.

Pinning ~71 packages is very slow since it makes a full copy of the source+.git folder every time.
Skip pinning, this also saves a few gigabytes of disk space.

This also makes the cleanup-xapi-environment action a no-op, so remove it.
(in fact it'd fail because the output of opam list with master pins is empty).

For testing the correctness of opam packages:
* we still have the xs-opam CI
* we can introduce opam-dune-lint that statically checks opam and dune for missing dependencies (needs new release first)

This reduces CI times:
* Run OCaml tests: from 15m24s to 10m16s
  * Setup XenAPI environment: from 7m1s to 5m55s

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
Setting DUNE_CACHE_STORAGE_MODE=copy is needed during 'opam install',
otherwise dune builds inside opam packages won't be cached.
The sandbox used by opam is another partition/device and hardlinking fails with EXDEV.

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
Now that we no longer pin the local opam packages we have
a few more GiB of disk space, and we don't need to rm pre-existing files.
This speeds up this step a little.

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
The dune cache inside 'setup-ocaml' is trimmed to 5GB/jobcount,
which is currently about 10.
But not all jobs here use the dune cache, so separate the workflows.
(Also the dune cache will get compressed afterwards).

The SDK build does use the dune cache, but eventually it might become smaller,
e.g. if we change it to install just the dependencies needed for SDK gen,
and not everything. It does have a lot of unrelated jobs though.

The workflows need a unique name, otherwise they cancel each-other.

The dune cache is ~1.4GB now compressed, which should speed up
the setup-ocaml step on next run as more dependencies will be cached.

Setup XenAPI environment now only takes 2m51s instead of 5m55s.

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
- Removes large package listing from build instructions.
- Adds explanation about tags when working from a clone of a fork of the repo.
- Includes miscellaneous changes to wording.

Signed-off-by: Colin <colin.barr@cloud.com>
We should eventually separate the opam dependency install into its own job
that uploads an artifact/cache that other jobs can reuse (and that should have a bigger dune cache),
however for now just trim the size of the cache.

The default is 5GiB, which results in ~1.4GiB compressed, which would hit the 10GiB cache size limit in GitHub way too often.
We may need to tweak this value in the future.

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
Update README with different build instructions
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Exposed system_list_methods in C# SDK. Correction to github workflow.
xapi-tracing-export is a new library separated from xapi-tracing. This
library is needed by xapi-clusterd (and probably other components that
require tracing as well). So install it as a library in the Makefile.

Signed-off-by: Vincent Liu <shuntian.liu2@cloud.com>
mg12 and others added 17 commits May 2, 2024 10:10
…/CP-48195-instrument-forkexecd-client

CP-48195: Instrument client side of `forkexecd`
- Use `Types.checkError` instead of throwing a generic `XenAPIException`. This ensures the `Types.XYZ` family of exceptions are being used
- Use `@JsonValue` to ensure base class objects are deserialised as a simple opaque_ref string, as opposed to a mapping of each field. This ensures the API's behaviour is unchanged.
- Parse the results of `task.getResult` calls. The jsonrpc method returns value payloads of the form `"value" : "<value>OpaqueRef:XYZ</value>"` so we need to strip the surrounding XML

Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
…e build @check

Bytecode builds for `http_lib` are disabled due to '(modes best)',
and that means that anything that depends on it must have it disabled too to avoid this warning.

Avoids these kinds of warnings:
```
File "_none_", line 1:
Error: Module `Buf_io' is unavailable (required by `Http_svr')
```

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
…ries

There were 3 modules with conflicting names with compiler libraries: Watch,
Debuginfo and Stats. Debuginfo was renamed, the others's libraries were changed
to be wrapped.

Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
Pinning the libraries runs dune subst, which needs a project name, define it

Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
Do not output loglines that are part of the normal operation. Use debug for
them, they are not usually logged, but can be enabled if need be by changing
the loglevel

Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
New version got released

Signed-off-by: Pau Ruiz Safont <pau.ruizsafont@cloud.com>
The query on HTTP endpoint /updates will return the available updates in
JSON format. Prior to the changes in this commit, if a query arrives
when another query is being handled, a "GET_UPDATES_IN_PROGRESS" error
will be returned immediately. This behaviour is not friendly to GUI
client XenCenter.

In this commit, the behaviour is changed to wait and retry in handling
the query in xapi since the "*_IN_PROGGRESS" error is a transient
failure. Tolerating it in xapi (server) side avoids error handling in
client side.

With the change, the "GET_UPDATES_IN_PROGRESS" will not be an error
exposed to users any more. Therefore it is removed.

Signed-off-by: Ming Lu <ming.lu@cloud.com>
…389319

CA-389319: Wait and retry for GET_UPDATES_IN_PROGRESS
As part of a start, resources are allocated for a VM in "scheduled_to.."
fields. These need to be cleared if the start fails. It turned out that
this was incomplete for PCI slots and those were leaking. This patch
tries to be more systematical about it.

Signed-off-by: Christian Lindig <christian.lindig@cloud.com>
This is mostly copied from the jekyll version at xapi-project.github.io and
amended for Hugo. The main difference is that all XenAPI pages have now been
integrated with the main menu in the left side bar, including the menu of the
XenAPI classes.

Some automation is left to do in order to take the `doc/data` files from a
build of `ocaml/idl` and update the class pages using the script
`doc/make-class-pages.py`. Also the overview of xapi releases is still missing,
as well as some of the API guides.

Finally, there is some overlap with markdown files in `ocaml/doc`, which needs
to be sorted out.

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
From Xen 4.19 onwards the legacy paths disappeared and the only valid path for
pygrub is /usr/libexec/xen/bin/pygrub. This path has always been preferred, but
now it's mandatory.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
@edwintorok edwintorok marked this pull request as draft May 14, 2024 22:01
@edwintorok
Copy link
Contributor Author

edwintorok commented May 14, 2024

Looks like we'll need to add the new xapi-fdcaps.opam to xs-opam, or the CI fails (the downside of not pinning every package anymore, opam doesn't get to know about new local packages).
Tried pinning just the new packages, but that also hides the other packages from opam-depext, resulting in a lot of missing system dependencies, and currently in the ci you can't control the 2 lists separately.

Move xapi-fdcaps to be a subpackage: xapi-stdext-unix.fdcaps.
Change xapi-fd-test to be an internal-only package, and run its tests as part of xapi-stdext-unix.

This avoids having to update xs-opam to define a new opam package.

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
@edwintorok edwintorok marked this pull request as ready for review May 16, 2024 18:23
@edwintorok edwintorok merged commit 089cbb0 into xapi-project:feature/perf May 20, 2024
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.