【发布时间】:2015-12-14 11:25:23
【问题描述】:
我在 GAE 中创建了一个分片,但只是有时,在运行分片代码后并不总是收到此消息。
(datastore_v3: BAD_REQUEST): Key path element must not be incomplete: [ResumeShard: ]
代码:
//Sharding
//Getting shard ID
rand.Seed(time.Now().UnixNano())
shardId := rand.Int63n(5)
resumeShardKey := datastore.NewKey(*pC, "ResumeShard", "", accountKey.IntID()+shardId, nil)
var resumeShard param.ResumeShard
if err = datastore.Get(*pC, resumeShardKey, &resumeShard); err != nil {
if err == datastore.ErrNoSuchEntity {
resumeShard = param.ResumeShard{}
resumeShard.Counter = 1
} else {
log.Println(err.Error())
}
} else {
resumeShard.Counter += 1
}
*pC 是指向 appengine 上下文的指针。
accountKey 是每个用户唯一的数据存储 Key。
此错误随机出现,例如 10 次请求中出现 3 次。我想知道,因为我必须使用datastore.NewKey(..) 为分片创建密钥,我怎样才能获得调用Put(..) 后收到的完整密钥,因为这是分片,GAE 文档上的示例也使用datastore.NewKey(..)。
请提出建议。
【问题讨论】:
标签: google-app-engine go google-cloud-datastore sharding