fix: recover run runtime state and logs
This commit is contained in:
@@ -219,6 +219,36 @@ func (svc *CoreService) QueryLogStream(query domain.LogStreamCursorQuery) (domai
|
||||
}), nil
|
||||
}
|
||||
|
||||
func (svc *CoreService) GetRunLogStreamProgress(request domain.RunLogStreamProgress) (domain.RunLogStreamProgressResult, error) {
|
||||
if err := validator.ValidateRunLogStreamProgress(request); err != nil {
|
||||
return domain.RunLogStreamProgressResult{}, err
|
||||
}
|
||||
if _, err := svc.validatedRunSession(request.RunEndpointID, request.SessionToken); err != nil {
|
||||
return domain.RunLogStreamProgressResult{}, err
|
||||
}
|
||||
instance, err := svc.store.ServerInstances().Get(request.ServerInstanceID)
|
||||
if err != nil {
|
||||
return domain.RunLogStreamProgressResult{}, err
|
||||
}
|
||||
if instance.RunEndpointID != request.RunEndpointID {
|
||||
return domain.RunLogStreamProgressResult{}, validationError("runEndpointId must match server instance")
|
||||
}
|
||||
if !strings.HasPrefix(request.LogStreamID, "run."+request.RunEndpointID+"."+request.ServerInstanceID+".") {
|
||||
return domain.RunLogStreamProgressResult{}, validationError("logStreamId is not a bound run stream")
|
||||
}
|
||||
latest := uint64(0)
|
||||
stream, err := svc.store.LogStreams().Get(request.LogStreamID)
|
||||
if err == nil {
|
||||
if stream.ServerInstanceID != instance.ID {
|
||||
return domain.RunLogStreamProgressResult{}, validationError("logStreamId does not belong to server instance")
|
||||
}
|
||||
latest = stream.LatestSeq
|
||||
} else if !errors.Is(err, repo.ErrNotFound) {
|
||||
return domain.RunLogStreamProgressResult{}, err
|
||||
}
|
||||
return domain.RunLogStreamProgressResult{Accepted: true, RunEndpointID: request.RunEndpointID, ServerInstanceID: instance.ID, LogStreamID: request.LogStreamID, LatestSeq: latest, ServerTime: svc.now()}, nil
|
||||
}
|
||||
|
||||
func validateLogBatchStream(batch domain.LogBatchIngest, stream domain.LogStream) error {
|
||||
if stream.ID != batch.LogStreamID {
|
||||
return validationError("logStreamId must match stream")
|
||||
|
||||
Reference in New Issue
Block a user