-
Notifications
You must be signed in to change notification settings - Fork 42
Description
Hi,
I was trying to get the package setup using ceph object storage (theoretically s3 compatible) as the backing store but the etag system used to protect against concurrent writes (
Line 67 in 86e9f11
| func getInfo(dst OutputFS, fp string, out blockfmt.Uploader) (string, time.Time, error) { |
sync: etag "[etag here]" from Stat disagrees with etag
rebuilding sdb with the if statement here:
if e, ok := out.(etagger); ok && e.ETag() != etag {
return "", time.Time{}, fmt.Errorf("etag %s from Stat disagrees with etag %s", etag, e.ETag())
}commented out, queries appear to function normally and syncing continues to work (as long as no concurrent reading/writing to the table is occuring)
full outputs here:
(unmodified version of sdb)
root@avx1 ~/sneller # go run ./cmd/sdb/ -- sync main table
sync: etag "[full etag here]" from Stat disagrees with etag
exit status 1(modified version of sdb)
root@avx1 ~/sneller # go run ./cmd/sdb/ -- sync main table(edited version -- worked with no errors)
note on concurrent read/write
in my (limited) testing with concurrent reads/writes occurring while the sync task is running, few to no issues occur with querying data that was synced during a write on my modified instance
(sync during write)
root@avx1 ~/sneller # go run ./cmd/sdb/ -- sync main table
root@avx1 ~/sneller # sdb query -fmt json "SELECT COUNT(*) FROM main.table"
{"count": 76}(sync after write)
root@avx1 ~/sneller # go run ./cmd/sdb/ -- sync main table
root@avx1 ~/sneller # sdb -v query -fmt json "SELECT COUNT(*) FROM main.table"
{"count": 87}(full rebuild of indexes and zion files)
root@avx1 ~/sneller # go run ./cmd/sdb/ -- sync main table
root@avx1 ~/sneller # sdb -v query -fmt json "SELECT COUNT(*) FROM main.table"
{"count": 87}