Riak(Java客户端)突然停止创建二级索引
注意,我正在Scala中使用Java客户机<代码>案例类注释略有不同。我有以下几点建议:Riak(Java客户端)突然停止创建二级索引,java,scala,jackson,riak,Java,Scala,Jackson,Riak,注意,我正在Scala中使用Java客户机案例类注释略有不同。我有以下几点建议: case class User( @(JsonProperty@field)("guid") @(RiakKey@field) val guid: String, @(JsonProperty@field)("email") @(JsonSerialize@field)(using=classOf[util.serialization.StringToUrlSerializer]) @(J
case class User(
@(JsonProperty@field)("guid")
@(RiakKey@field)
val guid: String,
@(JsonProperty@field)("email")
@(JsonSerialize@field)(using=classOf[util.serialization.StringToUrlSerializer])
@(JsonDeserialize@field)(using=classOf[util.serialization.StringToUrlDeserializer])
@(RiakIndex@field)(name = "email")
val email: String,
@(JsonProperty@field)("passwordHash")
val passwordHash: String
)
突然,Riak停止为我的用户
存储二级索引。如果我们通过REST客户机使用原始HTTP API,我们仍然可以手动创建二级索引,但在代码中,我无法解释它失败的原因
以下是我们存储Riak对象的方式:
/**
* Riak database operations
*/
val bucketName = "accounts-user"
val bucket = DB.client.createBucket(bucketName).enableForSearch().execute()
val converter = {
val c = new JSONConverter[User](classOf[User], bucketName)
c.getObjectMapper().registerModule(DefaultScalaModule)
c
}
def store(o: User) = bucket.store(o).withConverter(converter).withRetrier(DB.retrier).execute()
我们使用的Jackson导入如下所示:
import com.fasterxml.jackson.annotation._
import com.fasterxml.jackson.databind.annotation._
import com.fasterxml.jackson.module.scala._
对象已成功存储,并且未引发错误。问题的原因可能是什么?Jackson的DefaultScalaModule
是否可能会干扰注释?仅供参考,我确实尝试删除自定义转换器,但没有解决问题(但是没有删除任何Scala模块导入)。谢谢
编辑
可能相关:最近我们开始通过NGINX代理Riak。我是否需要同时执行HTTP和TCP
proxy\u pass
?正如我所怀疑的,使用NGINX代理是罪魁祸首。虽然我使用HTTP客户端访问bucket,但RIAKJava客户端实际上使用较低级别(可能是PBC)的协议来创建二级索引。不确定为什么它会无声地失败(可能是由于设计原因),但当我将NGINX从HTTP切换到TCP转发时,问题立即得到了解决