mirror of
https://github.com/zrepl/zrepl.git
synced 2024-11-22 16:34:32 +01:00
d5ce578929
``` panic: end task: 1 active child tasks: end task: task still has active child tasks goroutine 1 [running]: github.com/zrepl/zrepl/daemon/logging/trace.WithTask.func1.1(0xc000020680, 0xc000080f00) /home/cs/zrepl/zrepl/daemon/logging/trace/trace.go:221 +0x2f7 github.com/zrepl/zrepl/daemon/logging/trace.WithTask.func1() /home/cs/zrepl/zrepl/daemon/logging/trace/trace.go:237 +0x38 main.HarnessRun(0x7ffe0b49ad3a, 0x11, 0x7ffe0b49acf2, 0x1a, 0xc800000, 0x7ffe0b49ad19, 0x16, 0x1, 0x0, 0x0, ...) /home/cs/zrepl/zrepl/platformtest/harness/harness.go:168 +0xe54 main.main() /home/cs/zrepl/zrepl/platformtest/harness/harness.go:41 +0x2ef ``` fixes #358
47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package tests
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/zrepl/zrepl/platformtest"
|
|
"github.com/zrepl/zrepl/zfs"
|
|
)
|
|
|
|
func ReceiveForceIntoEncryptedErr(ctx *platformtest.Context) {
|
|
platformtest.Run(ctx, platformtest.PanicErr, ctx.RootDataset, `
|
|
DESTROYROOT
|
|
CREATEROOT
|
|
+ "foo bar" encrypted
|
|
+ "sender" encrypted
|
|
+ "sender@1"
|
|
`)
|
|
|
|
rfs := fmt.Sprintf("%s/foo bar", ctx.RootDataset)
|
|
sfs := fmt.Sprintf("%s/sender", ctx.RootDataset)
|
|
sfsSnap1 := sendArgVersion(ctx, sfs, "@1")
|
|
|
|
sendArgs, err := zfs.ZFSSendArgsUnvalidated{
|
|
FS: sfs,
|
|
Encrypted: &zfs.NilBool{B: false},
|
|
From: nil,
|
|
To: &sfsSnap1,
|
|
ResumeToken: "",
|
|
}.Validate(ctx)
|
|
require.NoError(ctx, err)
|
|
|
|
sendStream, err := zfs.ZFSSend(ctx, sendArgs)
|
|
require.NoError(ctx, err)
|
|
defer sendStream.Close()
|
|
|
|
recvOpts := zfs.RecvOptions{
|
|
RollbackAndForceRecv: true,
|
|
SavePartialRecvState: false,
|
|
}
|
|
err = zfs.ZFSRecv(ctx, rfs, &zfs.ZFSSendArgVersion{RelName: "@1", GUID: sfsSnap1.GUID}, sendStream, recvOpts)
|
|
require.Error(ctx, err)
|
|
re, ok := err.(*zfs.RecvDestroyOrOverwriteEncryptedErr)
|
|
require.True(ctx, ok)
|
|
require.Contains(ctx, re.Error(), "zfs receive -F cannot be used to destroy an encrypted filesystem or overwrite an unencrypted one with an encrypted on")
|
|
}
|