ProGet Documentation

Service Administration

  • Last Modified: 2019-05-01

The ProGet Service is key component of ProGet's architecture, and performs a variety of background tasks such as health checks, replication, and package cleanup. It's a standard Windows Service Application, and may be managed and configured using the Windows Service Manager or sc.exe as you see fit.

Service Configuration

By default, the ProGet Service is named INEDOPROGETSVC, runs under the NetworkService account, and is granted Read, Write, ListDirectory privileges to the following paths, as defined in Advanced Settings:

  • Extensions.ExtensionsPath
  • Extensions.ServiceTempPath
  • Extensions.WebTempPath
  • Storage.PackagesRootPath

If you choose to configure this as a custom domain account, it will be important to grant these same privileges.

Managing the Service from the Web Application

In addition to stopping and starting the ProGet Service, you can see the service's live logs; this may be helpful when diagnosing problems or working with Inedo's support team to track down unexpected behavior or bugs. Note that, because this relies on inter-process communication (pipes), the service status is not currently available from the web application on distributed installations.

Task Runners

Task runners run well-defined background jobs, on either a periodic and/or manual basis. Many will create sub-tasks that allow you to better visualize what the service is doing. Some task runners can be manually triggered. This should only be needed in debugging purposes, as the Web Application will trigger them in response to certain actions (such as adding a connector), and they are always executed on service start.

Proxy Configuration Monitorupdates service proxy settings when proxy configuration is changed; this runs every 16 minutes
Drop Path Monitorchecks configured drop paths for new packages, processes them, and adds them to the appropriate feed; this runs periodically, as defined by the Service.DropPathMonitorExecuterThrottle (60 seconds by default)
Scheduled Job Dispatchermonitors the database for scheduled jobs that need to be run, such as retention policy execution, and creates an execution to run them; this runs every 16 minutes
Execution Dispatchermonitors the database for executions that are ready to run, and creates a sub-task to run them; this runs periodically, as defined by the Service.ExecutionDispatcherThrottle advanced configuration setting (15 seconds by default)
Connector Health Checkverifies connectivity with connectors and attempts to determine how many packages each one exposes; this runs every hour
Feed Replicationperforms client-based replication for all configured feeds; this runs periodically, as defined by the Service.FeedReplicationExecuterThrottle (60 seconds by default)
Docker Upload Cleanupdeletes orphaned partial uploads of Docker blobs; this runs every 16 minutes
Connector Cache Checkpurges old cached connector metadata and refreshes cached metadata for queries that are frequently used; this runs periodically, as defined by the Service.MetadataCacheCheckExecuterThrottle (5 minutes by default)
Multipart Upload Cleanupterminates unfinished multipart asset uploads so that partial files will be deleted during feed cleanup; this runs every 16 minutes

Scheduled Jobs

Scheduled jobs are often resource-intensive jobs that are run on a user-definable schedule. They are are either associated with a particular feed, or for the whole system.

You cannot create scheduled jobs, but you can disable and change their schedule from the Administration > Scheduled Tasks page using the Quartz Cron Syntax.

ExecutionLogRetentionsystempurges execution logs; default schedule is 0 0 0 * * ? (nightly at 12:00AM)
FeedCleanupfeedruns user-defined retention rules on the associated feed; default schedule is 0 0 2 * * ? (nightly at 02:00AM)
UpdateCheckersystempurges execution logs; default schedule is 0 0 0 ? * SUN (Sundays at 12:00AM)
VulnerabilityDownloadersystempurges execution logs; default schedule is 0 0 2 * * ? (nightly at 02:00AM)
BuildMavenFeedIndexfeedgenerates a nexus-maven-repository-index.gz against the associated feed; default schedule is 0 0 2 * * ? (nightly at 02:00AM)
FullMavenConnectorIndexfeeddownloads and processes nexus-maven-repository-index.gz from remote connectors for Maven feeds; default schedule is 0 0 2 ? * SUN (Sundays at 02:00AM)
FullNpmConnectorIndexfeeddownloads and processes a full npm index file from remote connectors for npm feeds; default schedule is 0 0 0 ? * SUN (Sundaysat 12:00AM)
IncrementalNpmConnectorIndexfeeddownloads and processes an incremental npm index file from remote connectors for npm feeds; default schedule is 0 0 0 ? * MON-SAT (Monday-Saturday at 12:00AM)

You can stagger these jobs as needed during off-peak hours to ensure minimal disruption, or even disable them and run them manually.

Is this documentation incorrect or incomplete? Help us by contributing!

This documentation is licensed under CC-BY-SA-4.0 and stored in GitHub.