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

Merge master into feature/cdn-updates #3230

Merged
merged 80 commits into from
Sep 29, 2023
Merged

Merge master into feature/cdn-updates #3230

merged 80 commits into from
Sep 29, 2023

Conversation

kc284
Copy link
Contributor

@kc284 kc284 commented Sep 29, 2023

This is to bring the feature branch up to date with master so we can start the improvements. Approval is only a formality as the code on master is already reviewed.

danilo-delbusso and others added 30 commits July 11, 2023 10:47
The reason this wasn't added to the `AxMsRdpClientX` classes is that I thought it best to not touch `AxMSTSCLib` classes as they are likely generated.

Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
The `Connect` method returns `E_FAIL` if it is called while the control is already connected or in the connecting state. This can be hit when a lot of connections are being opened at the same time, and it's there as a failsafe.

Also adds `IsAttemptingConnection` as a new field

Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
…onnection to a VM

This prevents `AccessViolationException`s being called, as they're hit when two instances of `AxMSTSCLib.AxMsRdpClient9` call `Connect` on the same IP + Port combination, which results in the same memory being accessed in unmanaged code.

Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
This avoids having too many timers running at the same time.

One could for instance update the `EnableRDPPolling` property from the `Options` dialog and start several concurrent `Timer`s

Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Merge feature/cdn-updates to master + CA-381216
…t causes confusion to the user.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Also, prevent OnPageUpdated being called twice.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
… updates.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
…eneral Tab Page

Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
danilo-delbusso and others added 20 commits August 25, 2023 08:41
File name needs to be `CONTRIBUTING` for GitHub to pick it up as a valid file for contributor guidelines. See https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/setting-guidelines-for-repository-contributors#adding-a-contributing-file

Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
…s to the Messages.ResourceManager.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
…ns. Removed obsolete messages.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
CP-40739 (build with VS 2022) and some tech debt
… Search tabPage.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Refactored retrieval of values from Messages.resx.
Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
* CP-45071: Convert XenCenter build scripts to PowerShell.
* Removed obsolete variable.
* Pass the timestamp server and the certificate thumbprint as parameters to the build and sign scripts.
* Added further logging and made the verbose output of cmdlets optional.
* Updated README.
* Improved script readability.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
* Tidy up `ArchiveMaintainer`: use naming conventions
* Tidy up `ArchiveMaintainer`: use `var` when possible
* Tidy up `ArchiveMaintainer`: fix typos
* Tidy up `ArchiveMaintainer`: move action methods in own region
* Tidy up `ArchiveMaintainer`: apply code formatting
* Tidy up `ArchiveMaintainer`: remove unused constant/using
* Tidy up `ArchiveMaintainer`: group methods into regions
* Tidy up `ArchiveMaintainer`: remove xmldocs
* Tidy up `ArchiveMaintainer`: miscellaneous changes
* Tidy up `ArchiveMaintainer`: move `NextArchiveDown` to correct `region`
* CA-376887: Use multiple threads to load performance tab data
This commit removes the ad-hoc use of `Thread` and instead relies on `ThreadPool` and `CancellationToken`s to handle multi-threading. To achieve this, `ArchiveMaintainer` instances are now tied to only one `XenObject`. If a user navigates to another Performance tab, a new instance of `ArchiveMaintainer` is used. This enables XenCenter to quietly cancel ongoing data fetching operations, and start a new one without affecting the UI. UI elements are simply updated to point to the new `ArchiveMaintainer` while the old one is being  closed.
Please note that follow up commits to clean up `ArchiveMaintiner` and this implementation are coming. They have been separated to make reviews easier
* CA-376887: Move initial load logic to separate method in `ArchiveMaintainer`
* CA-376887: Rename `Update` to `StartUpdateLoop` in `ArchiveMaintainer`
* CA-376887: Fix use of `Dispose` in `PerformancePage` and collapse `Stop`/`Pause` into one method
* CA-376887: Remove unused `FirstTime` variable
* Tidy up `ArchiveMaintainer`: use `switch` when possible and improve logging
* Tidy up `ArchiveMaintainer`: Move variables inline
* Tidy up `ArchiveMaintainer`: Standardize fields/properties
* Tidy up `ArchiveMaintainer`: Normalize whitespace
* CA-376887: Ensure only one thread is spawned for each `ArchiveMaintainer`
- Ensures resources are disposed of
- Fixes issues whereby quickly starting and stopping threads for the same `XenObject` `ArchiveMantainer` would cause threads from not exiting
* Improve formatting and whitespace in `ArchiveMaintainer`
* Improve logging of exceptions in `ArchiveMaintainer:Get`
* Fix `ServerNow` calls in `ArchiveMaintainer`
* Deregister `ArchiveMaintainer` events when a new one is reassigned.
Also rename methods
* Apply code review suggestions

Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Build script corrections.
…r tidy.

Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
…hive generation (#3184)

* CA-375900: Prepend `//?/` to file paths when creating streams for archive generation
The string works to enable creation of files with paths larger than 260 characters.
* CA-375900: Add directory support and rename utility method
* Fix whitespace in `ArchiveWriterTest`
* CA-375900: Explicitly enumerate files and directories in `ArchiveWriter`
`Directory.GetFiles` and `Directory.GetDirectories` do not enumerate if paths are longer than 260, even when prepended with `//?/`.
* CA-375900: Add long path tests to `ArchiveWriter`
* CA-375900: Add long path tests to `ArchiveIterator`
* CA-375900: Ensure files are added to folders in archive
* Use a recursive method to add directories and files to archive in `ArchiveIterator`
Also improves progress reporting by basing it on directory count
* Fix typos
* Expand `ArchiveWriterTests` to cover all combinations of directory and path lengths
* Ensure that directories used in recursive `Directory.Delete` calls are using long path format
If files in the directory exceed the 260 character limit, the calls will fail
* Expand `ArchiveIteratorTests` to cover all combinations of directory and path lengths
* Ensure relative path name removes `rootPath`
* Fix typo
* Do not use long paths when importing OVFs
The import uses `DiscUtils` which cannot handle paths prepended with `//?/`
* Remove use of `ToLongWindowsPath` within appliance export
This partially reverts commit 819425855c56c14b937849714b359003465bd2f4.
* Refactoring and some corrections.

Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
Co-authored-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
…cters

Pipes can be created with invalid characters in their names (such as `|`). This results in an exception being thrown when those files are accessed via standard API calls such as `Directory.GetFiles`. Other processes might create these pipes and inadvertently prevent XenCenter from starting altogether.

Signed-off-by: Danilo Del Busso <danilo.delbusso@cloud.com>
Signed-off-by: Konstantina Chremmou <Konstantina.Chremmou@cloud.com>
@CitrixChris CitrixChris added the 1 approval PR has been approved by one reviewer label Sep 29, 2023
@CitrixChris CitrixChris added 2 approvals PR has been approved by two reviewers and removed 1 approval PR has been approved by one reviewer labels Sep 29, 2023
@kc284 kc284 merged commit 78a0b93 into feature/cdn-updates Sep 29, 2023
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2 approvals PR has been approved by two reviewers
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants