Open
Description
Hello,
After creating or updating a file, I cannot get the checksum using query.checksum. However I get the checksum when it is not a new file or a file modified at the moment.
I get as a result:
Checksum: �XJob scheduled.
or
Checksum: �XJob scheduled.
panic: mux: cannot find data waiter for id [0 0]
I am using a local xrootd server with the adler32 checksum.
and I get the previously quoted errors with this code:
package main
import (
"context"
"fmt"
"log"
"time"
"go-hep.org/x/hep/xrootd"
"go-hep.org/x/hep/xrootd/xrdfs"
"go-hep.org/x/hep/xrootd/xrdproto/query"
)
func main() {
ctx := context.Background()
client, err := xrootd.NewClient(ctx, "localhost", "gopher")
if err != nil {
log.Fatal(err)
}
defer client.Close()
//file, err := client.FS().Open(ctx, "/tmp/test.txt", xrdfs.OpenModeOwnerRead|xrdfs.OpenModeOwnerWrite, xrdfs.OpenOptionsNew)
file, err := client.FS().Open(ctx, "/tmp/test.txt", xrdfs.OpenModeOwnerRead|xrdfs.OpenModeOwnerWrite, xrdfs.OpenOptionsOpenUpdate)
if err != nil {
log.Fatal(err)
}
defer file.Close(ctx)
if _, err := file.WriteAt([]byte("hello"), 0); err != nil {
log.Fatal(err)
}
if err := file.Sync(ctx); err != nil {
log.Fatal(err)
}
if err := file.Close(ctx); err != nil {
log.Fatal(err)
}
time.Sleep(2 * time.Second)
var (
resp query.Response
req = query.Request{
Query: query.Checksum,
Args: []byte("/tmp/test.txt"),
}
)
_, err = client.Send(ctx, &resp, &req)
if err != nil {
log.Fatalf("Checksum request error: %v", err)
}
fmt.Printf("Checksum: %v\n", string(resp.Data))
if err := client.Close(); err != nil {
log.Fatal(err)
}
}
Is there something wrong with the way I use it?