小编Sni*_*tor的帖子

HttpClient.Timeout及其与大型传输的关系

情景

我试图围绕着这个行为HttpClient.Timeout.MSDN将其描述为"在请求超时之前等待的毫秒数",但我并不完全清楚是什么意思request,或者如果我想要更具体的控制该怎么做.

我发现的一件事是,超时至少考虑了发送请求所需的时间,这有点令人沮丧,因为我正在使用足够大的数据,默认的100秒超时不足以发送整个内容.

一个不能到达的解决方案

一个简单的解决方案可能是大幅增加超时,但我很惊讶这可能会产生一些非常不利的后果.假设客户端无法与服务器建立连接.等待20分钟建立连接是荒谬的,但等待20分钟,而转移正在稳步推进是完全合理的(至少我的情况).

问题

有没有办法让我更精细地控制超时元素HttpClient?可能我必须将超时设置为无限制,并通过CancellationToken其他机制使用我自己的代码管理超时?如果我需要这种程度的控制,我最好放弃HttpClient完全放弃,然后深入到底层HttpWebRequestHttpWebResponse类?

.net dotnet-httpclient

5
推荐指数
0
解决办法
232
查看次数

Postgres中跨表的乐观并发控制

我正在寻找一种方法来管理 Postgres 中多个表的乐观并发控制。我还试图将业务逻辑排除在数据库之外。我有一个像这样的表设置:

CREATE TABLE master
(
    id SERIAL PRIMARY KEY NOT NULL,
    status VARCHAR NOT NULL,
    some_value INT NOT NULL,
    row_version INT NOT NULL DEFAULT(1)
)

CREATE TABLE detail
(
    id SERIAL PRIMARY KEY NOT NULL,
    master_id INT NOT NULL REFERENCES master ON DELETE CASCADE ON UPDATE CASCADE,
    some_data VARCHAR NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

master.row_version 每当更新行时,触发器都会自动递增。

客户端应用程序执行以下操作:

  1. master表中读取记录。
  2. 根据记录的值计算一些业务逻辑,这可能包括涉及用户交互的几分钟延迟。
  3. detail根据步骤 2 中的逻辑向表中插入一条记录。

如果master.row_version自从在第 1 步读取记录后的值发生了变化,我希望第 3 步被拒绝。在我看来,乐观并发控制是正确的答案(唯一的答案?),但我不确定如何管理它两张这样的桌子。

我在想 Postgres 中的一个函数在表中的相关记录上有一个行级锁master可能是要走的路。但我不确定这是否是我最好的/唯一的选择,或者它会是什么样子(我对 …

postgresql npgsql optimistic-concurrency

3
推荐指数
2
解决办法
6712
查看次数

Apache Tika编译错误

我正在尝试遵循Apache TikaJAXRS 看起来非常简单的编译指令.我在Windows 8.1 64bit上运行.

  1. 从Apache Tika下载页面下载最新的稳定源代码或从Github检索最新代码,
  2. 使用Maven构建源代码,
  3. 运行Apache Tika JAXRS服务器.

好.我已经完成了第1步,但是我在第2步遇到了磕磕绊.显然这里有一些未编写的先决条件,所以我试图解决它们如下:

  • 安装了Java SDK 8u25
  • 将JAVA_HOME变量设置为 C:\Program Files\Java\jdk1.8.0_25
  • 将CLASSPATH变量设置为 .
  • 将JDK BIN目录添加到PATH变量: C:\Program Files\Java\jdk1.8.0_25\bin
  • 将Maven BIN目录添加到PATH变量: C:\apache-maven-3.2.5\bin

然后从tika-1.7目录(src下载的zip的内容)我运行mvn install.在吐出下面粘贴的错误输出之前,编译快乐地进行几分钟,此时编译似乎冻结.

问题看起来可能就是这个问题 - https://issues.apache.org/jira/browse/TIKA-1276 那里有一些关于重新创建捆绑包并修改文件以解决问题的讨论,但我坦率地说发现奇怪的是,为了获得Tika的工作副本,我必须跳过这样的箍 - 没有提供二进制分发!

我需要做些什么才能解决这个编译问题?

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.apache.tika.bundle.BundleIT
[main] INFO org.ops4j.pax.exam.spi.DefaultExamSystem - Pax Exam System (Version: 2.2.0) created.
Jan 19, 2015 11:48:40 AM org.ops4j.pax.url.mvn.internal.AetherBasedResolver resolve
INFO: Resolved (org.junit:com.springsource.org.junit:jar:4.4.0) as C:\Users\Jason\.m2\repository\org\junit\com.springsource.org.junit\4.4.0\com.springsource.org.junit-4.4.0.jar
ERROR: Bundle org.ops4j.pax.exam.rbc [1] Error …
Run Code Online (Sandbox Code Playgroud)

javac maven apache-tika

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

从 Visual Studio Team Services 中的代码覆盖范围中排除程序集

我有一个在 Visual Studio Team Services(以前称为 Visual Studio Online)上运行的构建。我想从代码覆盖率计算中排除一些程序集。基于我 许多 来源阅读的格式。我创建了一个 .runsettings 文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" 
          uri="datacollector://Microsoft/CodeCoverage/2.0"
          assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Exclude>
                <ModulePath>*AWSSDK*</ModulePath>
              </Exclude>
            </ModulePaths>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误:

正在开始测试执行,请稍候...错误:System.InvalidOperationException:无法在流程流上混合同步和异步操作。在System.Diagnostics.Process.get_StandardError()在Microsoft.VisualStudio.Coverage.Vanguard.Wait()在Microsoft.VisualStudio.Coverage.Vanguard.Start(字符串outputName,DataCollectionContext上下文)在Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollectorImpl.StartVanguard( DataCollectionContext 上下文)位于 Microsoft.VisualStudio.Coverage.UnitTestDataCollector.SessionStart(对象发送者,SessionStartEventArgs e)位于 Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector.SessionStart(对象发送者,SessionStartEventArgs e)位于 System.EventHandler`1.Invoke(对象发送者,TEventArgs) e) 在 WEX.TestExecution.TaefDataCollectionEvents.OnSessionStart(SessionStartEventArgs e) 在 WEX.TestExecution.DataCollectorTestMode.Initialize(ITestModeSettings settings, ICallbackRegistrar callbackRegistrar) 信息:此外,如果安装了测试发现器和执行器,您可以尝试指定“/UseVsixExtensions”命令在计算机上作为 vsix 扩展,并且您的安装支持 vsix 扩展。示例:vstest.console.exe myTests.dll /UseVsixExtensions:true VSTest 测试运行失败,退出代码:1

是的,一些测试正在使用 async/await。相同的 .runsettings 文件在 Visual Studio 2015 中工作正常。如果我按照建议操作并添加以下选项:/UseVsixExtensions:true,结果是相同的。我怎样才能解决这个问题?

code-coverage azure-devops

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