Implement the All Contributors initiative in the documentation to recognize
contributions of all kinds - not just code. This includes business development,
project management, financial support, user testing, and more.
- Add .all-contributorsrc configuration file at project root
- Create new Community section in documentation
- docs/src/community/index.md - Community landing page
- docs/src/community/contributors.md - All Contributors page
- Update docs/mkdocs.yml navigation to include Community section
- Configure htmlproofer to ignore contributors page (has dynamic anchor links)
- Add initial contributors with their contribution types
How to add contributors:
Install the CLI (one-time setup):
```
npm install --save-dev all-contributors-cli
npx all-contributors-cli add <github-username> <contribution-types>
npx all-contributors-cli add username code,doc,test,bug
```
Pre-installs the `aws` duckdb extension an incorporates:
[GEOT-7847] Add AWS credential chain authentication support for GeoParquet S3 access
[GEOS-12007] Add AWS credential chain authentication UI and documentation for GeoParquet
Add basic Prometheus/Grafana setup for local development observability
and as a starting point for building custom production monitoring.
Usage: ./pgconfig -f monitoring.yml up -d
- Grafana at http://localhost:3000 (admin/admin)
- Prometheus at http://localhost:9091 with Eureka service discovery
Includes basic dashboard showing JVM metrics, HTTP rates, service health,
and resource usage. Intentionally kept simple - users should customize for
production with alerting, persistence, security, and integration with
existing observability platforms.
Features:
- Auto-discovery of scaled replicas via Eureka
- Comprehensive monitoring guide
- Example queries and dashboard customization tips
This is a development tool and foundation, not production-ready monitoring.
Use separate bind mount directory for acceptance tests
Configure catalog-datadir bind mount path via environment variable to
isolate acceptance test data from development data.
- catalog-datadir.yml: Use ${CATALOG_DATADIR_PATH:-$PWD/catalog-datadir}
- acceptance_datadir: Use catalog-datadir_acceptance directory
- compose/.gitignore: Ignore catalog-datadir_acceptance/
This prevents acceptance tests from failing when the development datadir
contains non-empty data, while preserving development data across runs.
This commit addresses two critical bugs in the EventualConsistencyEnforcer
and improves REST API query performance by 95ms when the catalog is converged.
The first bug caused operations to be registered multiple times in pending
queues when retried. This is now prevented by checking for duplicates before
adding operations to the list.
The second bug occurred when objects were removed while other operations still
referenced them. The RemoveOp.clearDependants() method only found operations
currently waiting for the removed object, missing operations that had moved to
waiting for other dependencies. These orphaned operations would later complete
with dangling references. The fix tracks original missing references for each
operation and scans all pending operations when removing an object, discarding
any that originally depended on it regardless of which queue they're in.
Simplified EventuallyConsistentCatalogFacade by removing the isRestRequest()
special case. Previously REST queries always retried even when the catalog was
converged, wasting ~100ms per query. Now all web requests use the same smart
retry logic based on actual catalog convergence state. This eliminates wasteful
retries while still retrying when pending operations exist that might resolve.
Also renamed getMissingRefs() to computeMissingRefs() to reflect its side
effects, cached unresolved refs to avoid recomputation during debug logging,
added comprehensive javadocs, and expanded test coverage to 24 tests including
layers with missing styles and layer groups with missing layers.
The ImageMosaic acceptance tests were failing with 500 errors because they
referenced the old volume mount path /mnt/geoserver_data, which was changed
to /opt/geoserver_data in commit b33a27b9f6.
Changes:
- Update test_imagemosaic.py: Change all file paths from /mnt/ to /opt/
(6 occurrences across all test functions)
- Update acceptance_tests/README.md: Update sample data path documentation
to reflect the /opt/ mount location
The tests use external.imagemosaic REST endpoints to reference files that
must exist at the paths specified. With the old /mnt/ paths, GeoServer
could not find the sample data files, resulting in 500 Internal Server
Error responses.
Fixes critical bug where saving new resources failed with "Attempting to save
a resource of undefined type" error. This prevented GeoServer security
initialization when using pgconfig backend (e.g., saving master password file).
Root cause: save() called resource.isUndefined() which triggered getType(),
which called updateState() that reset the type to UNDEFINED before INSERT.
Solution:
- Access resource.type field directly instead of calling getType()
- Refactor save() to unified UPSERT (INSERT ... ON CONFLICT ... DO UPDATE)
- Add optional contents parameter for atomic content+metadata updates
- Use COALESCE to preserve existing content when contents is null
Related improvements:
- Simplify out() implementation to single save() call
- Fix move() to use direct UPDATE, preserving content and ID
- Rename copy() to reset() for clarity
- Add testWriteNewResource() covering the master password scenario