chocolatey / package-validator

Windows service to validate packages conform to package standards
Apache License 2.0
31 stars 29 forks source link

Package Validator should fail gracefully #204

Closed pauby closed 4 years ago

pauby commented 4 years ago

The current issues around URL validation have raised an issue around the package validator not failing gracefully when it hits an exception. This issue raised it's head on this current URL validation problems, however, it applies generically.

At the moment if a URL breaks the validator, the validator throws an exception and then fails to validate any more packages. This is shown in the logs.

The logs below are for the mrviewer package which threw an exception (I've removed the exception as it's not important for this issue and can be seen at #199 ) and you can see afterwards no more rules are applied to the packages:

2019-12-29 23:57:58,454 10 [INFO ] - ========== mrviewer v5.3.5 ==========
2019-12-29 23:57:58,454 10 [INFO ] - mrViewer (Install) v5.3.5 found for review.
2019-12-29 23:57:58,454 10 [INFO ] - Validating Package: mrviewer Version: 5.3.5
2019-12-29 23:57:58,845 10 [INFO ] - Running validation rules...
2019-12-29 23:58:04,001 10 [WARN ] - chocolatey-package-validator had an error on WIN-EDSKJJPAQ14 (with user SYSTEM):
System.NotSupportedException: The URI prefix is not recognized.
--- EXCEPTION DETAILS REMOVED FOR BREVITY ---
2019-12-29 23:58:04,001 10 [INFO ] - Finished checking for packages to validate. Sleeping for 5 minute(s).
2019-12-30 00:01:31,108 10 [ERROR] - chocolatey-package-validator had error(s) on WIN-EDSKJJPAQ14 (with user SYSTEM):
--- EXCEPTION DETAILS REMOVED FOR BREVITY ---
2019-12-30 00:03:04,013 13 [INFO ] - Checking for packages to validate.
2019-12-30 00:03:04,075 13 [INFO ] - Pulled in 1 packages for validation.
2019-12-30 00:03:04,075 13 [INFO ] - ========== mrviewer v5.3.5 ==========
2019-12-30 00:03:04,075 13 [INFO ] - mrViewer (Install) v5.3.5 found for review.
2019-12-30 00:03:04,075 13 [INFO ] - Finished checking for packages to validate. Sleeping for 5 minute(s).
2019-12-30 00:08:04,087 13 [INFO ] - Checking for packages to validate.
2019-12-30 00:08:04,166 13 [INFO ] - Pulled in 1 packages for validation.
--- mrviewer PACKAGE REVIEWED AGAIN SEVERAL TIMES - REMOVED FRO BREVITY ---
2019-12-30 00:28:09,229 6 [INFO ] - Finished checking for packages to validate. Sleeping for 5 minute(s).
2019-12-30 00:33:09,241 13 [INFO ] - Checking for packages to validate.
2019-12-30 00:33:11,226 13 [INFO ] - Pulled in 2 packages for validation.
2019-12-30 00:33:11,241 13 [INFO ] - ========== mrviewer v5.3.5 ==========
2019-12-30 00:33:11,241 13 [INFO ] - mrViewer (Install) v5.3.5 found for review.
2019-12-30 00:33:11,241 13 [INFO ] - ========== universal-ctags v2019.12.29 ==========
2019-12-30 00:33:11,241 13 [INFO ] -  v2019.12.29 found for review.
2019-12-30 00:33:11,241 13 [INFO ] - Finished checking for packages to validate. Sleeping for 5 minute(s).
2019-12-30 00:38:11,254 6 [INFO ] - Checking for packages to validate.
2019-12-30 00:38:13,004 6 [INFO ] - Pulled in 6 packages for validation.
2019-12-30 00:38:13,004 6 [INFO ] - ========== jackett v0.12.1384 ==========
2019-12-30 00:38:13,004 6 [INFO ] - Jackett v0.12.1384 found for review.
2019-12-30 00:38:13,019 6 [INFO ] - ========== mrviewer v5.3.5 ==========
2019-12-30 00:38:13,019 6 [INFO ] - mrViewer (Install) v5.3.5 found for review.
2019-12-30 00:38:13,019 6 [INFO ] - ========== universal-ctags v2019.12.29 ==========
2019-12-30 00:38:13,019 6 [INFO ] -  v2019.12.29 found for review.
2019-12-30 00:38:13,019 6 [INFO ] - ========== vim-tux v8.2.0055 ==========
2019-12-30 00:38:13,019 6 [INFO ] - Vim Tux v8.2.0055 found for review.
2019-12-30 00:38:13,019 6 [INFO ] - ========== vim-tux.install v8.2.0055 ==========
2019-12-30 00:38:13,019 6 [INFO ] - Vim Tux (Install) v8.2.0055 found for review.
2019-12-30 00:38:13,019 6 [INFO ] - ========== vim-tux.portable v8.2.0055 ==========
2019-12-30 00:38:13,019 6 [INFO ] - Vim Tux (Portable) v8.2.0055 found for review.
2019-12-30 00:38:13,019 6 [INFO ] - Finished checking for packages to validate. Sleeping for 5 minute(s).
2019-12-30 00:43:13,031 13 [INFO ] - Checking for packages to validate.
2019-12-30 00:43:15,609 13 [INFO ] - Pulled in 8 packages for validation.
2019-12-30 00:43:15,609 13 [INFO ] - ========== jackett v0.12.1384 ==========
2019-12-30 00:43:15,609 13 [INFO ] - Jackett v0.12.1384 found for review.
2019-12-30 00:43:15,609 13 [INFO ] - ========== mpc-hc-clsid2 v1.9.0 ==========
2019-12-30 00:43:15,609 13 [INFO ] - MPC-HC (fork by clsid2) v1.9.0 found for review.
2019-12-30 00:43:15,609 13 [INFO ] - ========== mrviewer v5.3.5 ==========
2019-12-30 00:43:15,609 13 [INFO ] - mrViewer (Install) v5.3.5 found for review.
2019-12-30 00:43:15,609 13 [INFO ] - ========== universal-ctags v2019.12.29 ==========
2019-12-30 00:43:15,609 13 [INFO ] -  v2019.12.29 found for review.
2019-12-30 00:43:15,609 13 [INFO ] - ========== vim v8.2.0057 ==========
2019-12-30 00:43:15,609 13 [INFO ] - Vim v8.2.0057 found for review.
2019-12-30 00:43:15,609 13 [INFO ] - ========== vim-tux v8.2.0055 ==========
2019-12-30 00:43:15,609 13 [INFO ] - Vim Tux v8.2.0055 found for review.
2019-12-30 00:43:15,609 13 [INFO ] - ========== vim-tux.install v8.2.0055 ==========
2019-12-30 00:43:15,609 13 [INFO ] - Vim Tux (Install) v8.2.0055 found for review.
2019-12-30 00:43:15,609 13 [INFO ] - ========== vim-tux.portable v8.2.0055 ==========
2019-12-30 00:43:15,609 13 [INFO ] - Vim Tux (Portable) v8.2.0055 found for review.
2019-12-30 00:43:15,625 13 [INFO ] - Finished checking for packages to validate. Sleeping for 5 minute(s).

As no more packages are validated and their status updated, the validator queue just grows and grows until this is noticed anf the service restarted.

The validator should handle the exception gracefully and not affect it's the ability to continue processing the queue and validating packages.

gep13 commented 4 years ago

@pauby I believe I have got to the bottom of this one, but something we should watch for when we deploy new version of package-validator.