refactor(monitoring): consolidate workers and extract to scheduler process
Remove standalone lease-recovery, received-inspection, and result-recovery workers from tenant-api (now handled by scheduler process). Add configurable concurrency to ingest and projection-rebuild workers via MonitoringWorkers runtime config. Extract shared runtime types for worker configuration. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -254,6 +254,8 @@ type monitoringTaskResultQueueMetaPatch struct {
|
||||
LastQueuePublishError *string `json:"last_queue_publish_error"`
|
||||
}
|
||||
|
||||
type MonitoringTaskResultQueueMetaPatch = monitoringTaskResultQueueMetaPatch
|
||||
|
||||
func (s *MonitoringCallbackService) HandleTaskResult(ctx context.Context, installationID int64, installationToken string, taskID int64, req MonitoringTaskResultRequest) (*MonitoringTaskResultResponse, error) {
|
||||
installation, err := s.authenticateInstallation(ctx, installationID, installationToken)
|
||||
if err != nil {
|
||||
@@ -1733,6 +1735,10 @@ func (s *MonitoringCallbackService) publishTaskResultEnvelope(ctx context.Contex
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *MonitoringCallbackService) PublishTaskResultEnvelope(ctx context.Context, payload []byte) error {
|
||||
return s.publishTaskResultEnvelope(ctx, payload)
|
||||
}
|
||||
|
||||
func (s *MonitoringCallbackService) tryPatchTaskResultQueueMeta(taskID int64, receivedAt time.Time, patch monitoringTaskResultQueueMetaPatch) {
|
||||
if s == nil || s.monitoringPool == nil {
|
||||
return
|
||||
@@ -1766,6 +1772,10 @@ func (s *MonitoringCallbackService) tryPatchTaskResultQueueMeta(taskID int64, re
|
||||
}
|
||||
}
|
||||
|
||||
func (s *MonitoringCallbackService) PatchTaskResultQueueMeta(taskID int64, receivedAt time.Time, patch MonitoringTaskResultQueueMetaPatch) {
|
||||
s.tryPatchTaskResultQueueMeta(taskID, receivedAt, patch)
|
||||
}
|
||||
|
||||
func buildMonitoringRawPayload(req MonitoringTaskResultRequest) ([]byte, []MonitoringSourceItem) {
|
||||
payload := make(map[string]interface{}, len(req.RawResponseJSON)+4)
|
||||
for key, value := range req.RawResponseJSON {
|
||||
@@ -2237,6 +2247,11 @@ func optionalString(value string) *string {
|
||||
return &text
|
||||
}
|
||||
|
||||
func ValidateMonitoringTaskResultEnvelope(payload []byte) error {
|
||||
_, err := decodeMonitoringTaskResultEnvelope(payload)
|
||||
return err
|
||||
}
|
||||
|
||||
func monitoringStringValue(value *string) string {
|
||||
if value == nil {
|
||||
return ""
|
||||
|
||||
Reference in New Issue
Block a user