小编nep*_*nao的帖子

并行执行Cassandra prepared语句会返回无效的JSON作为结果

当我使用预准备语句进行多个语句的异步执行时,我得到了带有损坏数据的JSON.键和值完全被破坏了.

首先,当我使用自定义脚本对项目进行压力测试时,我遇到了这个问题.我们正在使用DataStax C++驱动程序并执行来自不同光纤的语句.

然后我试图隔离问题并编写简单的C#程序,它在循环中启动多个任务.每个任务使用一次创建的预准备语句从基础读取数据.对于某些行,结果完全混乱,例如:

预期(由cqlsh提取)

516b00a2-01a7-11e6-8630-c04f49e62c6b |  
lucid_lynx_value_45404 | 
precise_pangolin_value_618429 | 
saucy_salamander_value_302796 |    
trusty_tahr_value_873 | 
vivid_vervet_value_216045 | 
wily_werewolf_value_271991
Run Code Online (Sandbox Code Playgroud)

实际

{
    "sa": "516b00a2-01a7-11e6-8630-c04f49e62c6b", 
    "lucid_lynx": "wily_werewolflue_45404", 
    "precise_pangolin": "precise_pangolin_value_618429", 
    "saucy_salamander": "saucy_salamander_value_302796", 
    "trusty_tahr": "trusty_tahr_value_873", 
    "vivid_vervet": "vivid_vervet_value_216045", 
    "wily_werewolf": "wily_werewolf_value_271991"
}
Run Code Online (Sandbox Code Playgroud)

这是C#代码的主要部分.

static void Main(string[] args)
{
  const int task_count = 300;

  using(var cluster = Cluster.Builder().AddContactPoints(/*contact points here*/).Build())
  {
    using(var session = cluster.Connect())
    {
      var prepared = session.Prepare("select json * from test_neptunao.ubuntu where id=?");
      var tasks = new Task[task_count];
      for(int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c# prepared-statement cassandra datastax

2
推荐指数
1
解决办法
574
查看次数

在F#中表示错误的最惯用方法是什么?

我正在研究F#项目,我想知道使用ResultF#中的类型返回域错误的最佳做法是什么.我认为有几种方法可以做到:

继承的异常

type DomainException(message) =
    inherit Exception(message)

type ItemNotFoundException(item) =
    inherit DomainException(sprintf "Item %s is not found" item)

let findItem item =
    match item with
    | Some x -> Ok x
    | None -> Error(new ItemNotFoundException("someitem"))
Run Code Online (Sandbox Code Playgroud)

自定义记录类型

type DomainError =
    { Name : string
      Message : string }

let findItem item =
    match item with
    | Some x -> Ok x
    | None ->
        Error({ Name = "ItemNotFound"
                Message = "Item someitem is not found" })
Run Code Online (Sandbox Code Playgroud)

区分记录类型的联合

type …
Run Code Online (Sandbox Code Playgroud)

error-handling f#

2
推荐指数
1
解决办法
90
查看次数