1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-08 05:47:07 +09:00

GO-5105: fix history

Signed-off-by: AnastasiaShemyakinskaya <shem98a@mail.ru>
This commit is contained in:
AnastasiaShemyakinskaya 2025-02-14 17:44:28 +01:00
parent abbf2554a7
commit e67d3fb7be
No known key found for this signature in database
GPG key ID: CCD60ED83B103281
4 changed files with 26 additions and 27 deletions

View file

@ -29,13 +29,13 @@ import (
var (
file = flag.String("f", "", "path to debug file")
fromRoot = flag.Bool("r", false, "build from root of the tree")
makeJson = flag.Bool("j", false, "generate json file")
makeTree = flag.Bool("t", false, "generate graphviz file")
printState = flag.Bool("s", false, "print result state debug")
fromRoot = flag.Bool("r", true, "build from root of the tree")
makeJson = flag.Bool("j", true, "generate json file")
makeTree = flag.Bool("t", true, "generate graphviz file")
printState = flag.Bool("s", true, "print result state debug")
changeIdx = flag.Int("c", -1, "build tree before given index and print change")
objectStore = flag.Bool("o", false, "show object store info")
fileHashes = flag.Bool("h", false, "show file hashes in state")
objectStore = flag.Bool("o", true, "show object store info")
fileHashes = flag.Bool("h", true, "show file hashes in state")
)
func main() {

View file

@ -61,23 +61,23 @@ func ExportTree(ctx context.Context, params ExportParams) error {
return err
}
var (
changeBuilder = objecttree.NewChangeBuilder(crypto.NewKeyStorage(), writeTree.Header())
changeBuilder = objecttree.NewChangeBuilder(crypto.NewKeyStorage(), params.Readable.Header())
converter = params.Converter
changes []*treechangeproto.RawTreeChangeWithId
)
err = writeTree.IterateRoot(
err = params.Readable.IterateRoot(
func(change *objecttree.Change, decrypted []byte) (any, error) {
return converter.Unmarshall(change.DataType, decrypted)
},
func(change *objecttree.Change) bool {
if change.Id == writeTree.Id() {
if change.Id == params.Readable.Id() {
return true
}
var (
data []byte
dataType string
)
data, dataType, err = converter.Marshall(change.Model)
data, dataType, err := converter.Marshall(change.Model)
if err != nil {
return false
}
@ -97,7 +97,7 @@ func ExportTree(ctx context.Context, params ExportParams) error {
return err
}
payload := objecttree.RawChangesPayload{
NewHeads: writeTree.Heads(),
NewHeads: params.Readable.Heads(),
RawChanges: changes,
}
res, err := writeTree.AddRawChanges(ctx, payload)

View file

@ -3,7 +3,6 @@ package debug
import (
"bytes"
"context"
"errors"
"fmt"
"io"
stdlog "log"
@ -13,7 +12,6 @@ import (
anystore "github.com/anyproto/any-store"
"github.com/anyproto/any-sync/commonspace/object/tree/objecttree"
"zombiezen.com/go/sqlite"
"github.com/anyproto/anytype-heart/core/debug/exporter"
"github.com/anyproto/anytype-heart/core/domain"
@ -45,22 +43,19 @@ func (e *treeExporter) Export(ctx context.Context, path string, tree objecttree.
defer func() {
_ = os.RemoveAll(exportDirPath)
}()
err = os.Mkdir(dbPath, 0755)
if err != nil {
return
}
anyStore, err := anystore.Open(ctx, dbPath, nil)
if err != nil {
code := sqlite.ErrCode(err)
if errors.Is(err, anystore.ErrIncompatibleVersion) || code == sqlite.ResultCorrupt || code == sqlite.ResultNotADB || code == sqlite.ResultCantOpen {
if err = os.RemoveAll(dbPath); err != nil {
return
}
anyStore, err = anystore.Open(ctx, dbPath, nil)
if err != nil {
return
}
}
// code := sqlite.ErrCode(err)
// if errors.Is(err, anystore.ErrIncompatibleVersion) || code == sqlite.ResultCorrupt || code == sqlite.ResultNotADB || code == sqlite.ResultCantOpen {
// if err = os.RemoveAll(dbPath); err != nil {
// return
// }
// anyStore, err = anystore.Open(ctx, dbPath, nil)
// if err != nil {
// return
// }
// }
return "", err
}
defer func() {
_ = anyStore.Close()

View file

@ -50,6 +50,10 @@ func OpenDatabaseWithLockCheck(ctx context.Context, path string, config *anystor
return nil, lockCloseNoop, err
}
store, err = anystore.Open(ctx, path, config)
if err != nil {
l.Errorf("failed to open anystore again, %s", err)
return nil, lockCloseNoop, err
}
} else {
l.Errorf("failed to open anystore, non-recoverable error")
// some other error