Skip to content

xrootd : Checksum don't work after creation or update of a file #784

Open
@kiderrien

Description

@kiderrien

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions