As an answer to my question about health (and for anyone coming here in the future), I should've just read the docs properly, it was very clear what to check I love Proget! These things just exists and are well documented 🥰
carl.westman_8110
@carl.westman_8110
DevOps Engineer
Best posts made by carl.westman_8110
Latest posts made by carl.westman_8110
-
RE: Scaling Proget as an Azure Container Web App, what about the SQL DB?
-
Scaling Proget as an Azure Container Web App, what about the SQL DB?
Hi there!
We run Proget as an Azure Container Web App atm with great success. To this we have an Azure SQL DB and we have mounted an Azure storage account file share at /var/proget to get all the files stored in Azure and backed up there. Everything deployed with Bicep, which is awsome
There are some cool features for Azure Web Apps though that I would like to utilize to maximize the robustness and up time of our Proget instance for our developers.
One such feature is the "scale out" together with "Health check". This (if I understand correctly) would allow me to run multiple instances of the Proget container and Azure will ping them to see if they are healthy. If one is deemed unhealthy it will be brought down and replaced.
I however have some concerns about what happens if I scale out the web app to multiple instances but they all have the same SQL database and file share? The file share shouldn't be an issue, but what about the database? Can it handle writing and reading from multiple instances of an Azure Container Web App? Do you have any experience or best practices regarding this? I'm not very experienced with DB:s, and my biggest concern is that there will be any deadlock, corrupt data and overall breakage of the data in the DB, but maybe that is not a concern.
Also when on the topic, do you have any recommended path to probe/ping for checking health of both the Proget instance and the SQL DB connection?
I guess some endpoint which tries to read something from the DB and returns a non 200-299 code if the read fails would be good. It should be something "static" and not a path to a package which could be removed any time in the future.
(If there are concerns with the DB I guess a single instance with "auto replace" by the health check is good enough, but this would cause a one hour downtime which would be nice to not have )
It should be noted that we do not have any kind of load on Proget since we are pretty few devs, I would only like to use these features to increase the uptime and robustness of the app since people will come and complain at me if Proget is down
Cheers
Carl -
RE: Updating to Proget to 24.0.0 from 23.0.18 gives "Cannot drop the view 'database_firewall_rules', because it does not exist or you do not have permission."
Yep, it's there
schema_id = 4
is_ms_shipped = TrueI'm no database master of any kind, but I think I've chosen all defaults when creating both the Az sql server and the db
-
RE: Updating to Proget to 24.0.0 from 23.0.18 gives "Cannot drop the view 'database_firewall_rules', because it does not exist or you do not have permission."
Hi @atripp,
When creating a new empty Azure SQL DB this seems to be there by default.
It's also present in my Proget DB
-
Updating to Proget to 24.0.0 from 23.0.18 gives "Cannot drop the view 'database_firewall_rules', because it does not exist or you do not have permission."
Hi there!
Trying to update my Proget instance which is running as an Azure Container Web App from 23.0.18 to 24.0.0 but I get some weird error when the container is trying to start, see below.
2024-04-23T12:32:55.267041815Z Unhandled exception: Microsoft.Data.SqlClient.SqlException (0x80131904): Cannot drop the view 'database_firewall_rules', because it does not exist or you do not have permission. 2024-04-23T12:32:55.267114815Z at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) 2024-04-23T12:32:55.267119415Z at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) 2024-04-23T12:32:55.267122715Z at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, SqlCommand command, Boolean callerHasConnectionLock, Boolean asyncClose) 2024-04-23T12:32:55.267126315Z at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) 2024-04-23T12:32:55.267133315Z at Microsoft.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean isAsync, Int32 timeout, Boolean asyncWrite) 2024-04-23T12:32:55.267141515Z at Microsoft.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String methodName) 2024-04-23T12:32:55.267145115Z at Microsoft.Data.SqlClient.SqlCommand.ExecuteNonQuery() 2024-04-23T12:32:55.267148215Z at Inedo.DbUpdater.SqlServer.SqlServerDatabaseConnection.ExecuteQueryWithSplitter(String query, SqlTransaction transaction) 2024-04-23T12:32:55.267151315Z at Inedo.DbUpdater.SqlServer.SqlServerDatabaseConnection.ExecuteScripts(IEnumerable`1 scripts, ChangeScriptState state) 2024-04-23T12:32:55.267154415Z at Inedo.DbUpdater.ConsoleHost.Update(String scriptPath, String connectionString, Boolean force) 2024-04-23T12:32:55.267157515Z at Inedo.DbUpdater.ConsoleHost.Run(ArgList args) 2024-04-23T12:32:55.267160515Z at Inedo.DbUpdater.ConsoleHost.RunAsync(IEnumerable`1 args) 2024-04-23T12:32:55.267163615Z at Inedo.ProGet.Service.Program.UpdateDatabaseSchemaAsync() in C:\Users\builds\AppData\Local\Temp\InedoAgent\BuildMaster\192.168.44.60\Temp\_E438586\Src\ProGet.Service\Program.cs:line 318 2024-04-23T12:32:55.267169215Z at Inedo.ProGet.Service.Program.Run(WebServerMode mode, Boolean runAsService, Boolean linuxContainer, String urls) in C:\Users\builds\AppData\Local\Temp\InedoAgent\BuildMaster\192.168.44.60\Temp\_E438586\Src\ProGet.Service\Program.cs:line 28 2024-04-23T12:32:55.267173015Z at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) 2024-04-23T12:32:55.267176215Z at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
I'm using an Azure sql database which have worked fine with 23.0.18
Cheers
Carl -
RE: Feature request: View html documentation published as universal package when previewing folder with index.html
I understand :) thanks for the quick answer!
Just want to say that Proget really is a super product :) been stuck with Azure Artifacts for a while and getting into a self hosted Proget instance really is a relief, all the features I was missing in ADO Artifacts now work as expected and we can actually use Universal Packages :) So thanks for that, keep up the good work!
-
Feature request: View html documentation published as universal package when previewing folder with index.html
Just wanted to post a feature request
If in a universal package in proget and you press Files and then Preview on a folder and that folder contains an index.html it would be frikkin awsome if Proget could open a new tab with the whole documentation vizualized
This would mean that we could use proget both for storing docs artifacts as well as for people to watch the documentation
As it is today we have to publish our sphinx or mkdocs htmls both as an artifact to Proget with the correct version as well as to a webserver which hosts the documentation where people can watch it.
Cheers
Carl -
RE: The remote certificate was rejected by the provided RemoteCertificateValidationCallback
Hi Dan!
My IT department solved the issue for now by ignoring certificate errors for LDAPS as per your suggestion above while it would be nice to get it to work "correctly" i'll wait until there is a guide available on how to set it up to not have to ignore the errors Many thanks for all your help!
For future reference and people