WIP endpoint abstractions + pruning integration / pruner rewrite
This commit is contained in:
@@ -112,6 +112,13 @@ func (s *Sender) ListFilesystemVersions(ctx context.Context, r *pdu.ListFilesyst
|
||||
for i := range fsvs {
|
||||
rfsvs[i] = pdu.FilesystemVersionFromZFS(&fsvs[i])
|
||||
}
|
||||
|
||||
sendAbstractions := sendAbstractionsCacheSingleton.GetByFS(ctx, lp.ToString())
|
||||
rSabsInfo := make([]*pdu.SendAbstraction, len(sendAbstractions))
|
||||
for i := range rSabsInfo {
|
||||
rSabsInfo[i] = SendAbstractionToPDU(sendAbstractions[i])
|
||||
}
|
||||
|
||||
res := &pdu.ListFilesystemVersionsRes{Versions: rfsvs}
|
||||
return res, nil
|
||||
|
||||
|
||||
@@ -82,6 +82,24 @@ func (s *sendAbstractionsCache) InvalidateFSCache(fs string) {
|
||||
|
||||
}
|
||||
|
||||
func (s *sendAbstractionsCache) GetByFS(ctx context.Context, fs string) (ret []Abstraction) {
|
||||
defer s.mtx.Lock().Unlock()
|
||||
defer trace.WithSpanFromStackUpdateCtx(&ctx)()
|
||||
if fs == "" {
|
||||
panic("must not pass zero-value fs")
|
||||
}
|
||||
|
||||
s.tryLoadOnDiskSendAbstractions(ctx, fs)
|
||||
|
||||
for _, a := range s.abstractions {
|
||||
if a.GetFS() == fs {
|
||||
ret = append(ret, a)
|
||||
}
|
||||
}
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
// - logs errors in getting on-disk abstractions
|
||||
// - only fetches on-disk abstractions once, but every time from the in-memory store
|
||||
//
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package endpoint
|
||||
|
||||
import "github.com/zrepl/zrepl/replication/logic/pdu"
|
||||
|
||||
func SendAbstractionToPDU(a Abstraction) *pdu.SendAbstraction {
|
||||
var ty pdu.SendAbstraction_SendAbstractionType
|
||||
switch a.GetType() {
|
||||
case AbstractionLastReceivedHold:
|
||||
panic(a)
|
||||
case AbstractionReplicationCursorBookmarkV1:
|
||||
panic(a)
|
||||
case AbstractionReplicationCursorBookmarkV2:
|
||||
ty = pdu.SendAbstraction_ReplicationCursorV2
|
||||
case AbstractionStepHold:
|
||||
ty = pdu.SendAbstraction_StepHold
|
||||
case AbstractionStepBookmark:
|
||||
ty = pdu.SendAbstraction_StepBookmark
|
||||
default:
|
||||
panic(a)
|
||||
}
|
||||
|
||||
version := a.GetFilesystemVersion()
|
||||
return &pdu.SendAbstraction{
|
||||
Type: ty,
|
||||
JobID: (*a.GetJobID()).String(),
|
||||
Version: pdu.FilesystemVersionFromZFS(&version),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user