Major security, observability, and configuration improvements:
## Security Hardening
- Implemented configurable CORS (no more wildcards)
- Added comprehensive auth middleware for admin endpoints
- Enhanced webhook HMAC validation
- Added input validation and rate limiting
- Security headers and CSP policies
## Configuration Management
- Made N8N webhook URL configurable (WHOOSH_N8N_BASE_URL)
- Replaced all hardcoded endpoints with environment variables
- Added feature flags for LLM vs heuristic composition
- Gitea fetch hardening with EAGER_FILTER and FULL_RESCAN options
## API Completeness
- Implemented GetCouncilComposition function
- Added GET /api/v1/councils/{id} endpoint
- Council artifacts API (POST/GET /api/v1/councils/{id}/artifacts)
- /admin/health/details endpoint with component status
- Database lookup for repository URLs (no hardcoded fallbacks)
## Observability & Performance
- Added OpenTelemetry distributed tracing with goal/pulse correlation
- Performance optimization database indexes
- Comprehensive health monitoring
- Enhanced logging and error handling
## Infrastructure
- Production-ready P2P discovery (replaces mock implementation)
- Removed unused Redis configuration
- Enhanced Docker Swarm integration
- Added migration files for performance indexes
## Code Quality
- Comprehensive input validation
- Graceful error handling and failsafe fallbacks
- Backwards compatibility maintained
- Following security best practices
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
85 lines
2.3 KiB
Go
85 lines
2.3 KiB
Go
package pgxpool
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/jackc/puddle/v2"
|
|
)
|
|
|
|
// Stat is a snapshot of Pool statistics.
|
|
type Stat struct {
|
|
s *puddle.Stat
|
|
newConnsCount int64
|
|
lifetimeDestroyCount int64
|
|
idleDestroyCount int64
|
|
}
|
|
|
|
// AcquireCount returns the cumulative count of successful acquires from the pool.
|
|
func (s *Stat) AcquireCount() int64 {
|
|
return s.s.AcquireCount()
|
|
}
|
|
|
|
// AcquireDuration returns the total duration of all successful acquires from
|
|
// the pool.
|
|
func (s *Stat) AcquireDuration() time.Duration {
|
|
return s.s.AcquireDuration()
|
|
}
|
|
|
|
// AcquiredConns returns the number of currently acquired connections in the pool.
|
|
func (s *Stat) AcquiredConns() int32 {
|
|
return s.s.AcquiredResources()
|
|
}
|
|
|
|
// CanceledAcquireCount returns the cumulative count of acquires from the pool
|
|
// that were canceled by a context.
|
|
func (s *Stat) CanceledAcquireCount() int64 {
|
|
return s.s.CanceledAcquireCount()
|
|
}
|
|
|
|
// ConstructingConns returns the number of conns with construction in progress in
|
|
// the pool.
|
|
func (s *Stat) ConstructingConns() int32 {
|
|
return s.s.ConstructingResources()
|
|
}
|
|
|
|
// EmptyAcquireCount returns the cumulative count of successful acquires from the pool
|
|
// that waited for a resource to be released or constructed because the pool was
|
|
// empty.
|
|
func (s *Stat) EmptyAcquireCount() int64 {
|
|
return s.s.EmptyAcquireCount()
|
|
}
|
|
|
|
// IdleConns returns the number of currently idle conns in the pool.
|
|
func (s *Stat) IdleConns() int32 {
|
|
return s.s.IdleResources()
|
|
}
|
|
|
|
// MaxConns returns the maximum size of the pool.
|
|
func (s *Stat) MaxConns() int32 {
|
|
return s.s.MaxResources()
|
|
}
|
|
|
|
// TotalConns returns the total number of resources currently in the pool.
|
|
// The value is the sum of ConstructingConns, AcquiredConns, and
|
|
// IdleConns.
|
|
func (s *Stat) TotalConns() int32 {
|
|
return s.s.TotalResources()
|
|
}
|
|
|
|
// NewConnsCount returns the cumulative count of new connections opened.
|
|
func (s *Stat) NewConnsCount() int64 {
|
|
return s.newConnsCount
|
|
}
|
|
|
|
// MaxLifetimeDestroyCount returns the cumulative count of connections destroyed
|
|
// because they exceeded MaxConnLifetime.
|
|
func (s *Stat) MaxLifetimeDestroyCount() int64 {
|
|
return s.lifetimeDestroyCount
|
|
}
|
|
|
|
// MaxIdleDestroyCount returns the cumulative count of connections destroyed because
|
|
// they exceeded MaxConnIdleTime.
|
|
func (s *Stat) MaxIdleDestroyCount() int64 {
|
|
return s.idleDestroyCount
|
|
}
|