4

我正在尝试第一次尝试反应器。所以我克隆并构建(如在https://github.com/reactor/reactor中)。

我使用的是 windows XP 和 jdk 8。但是,当我运行 ./gradlew 测试时,出现以下错误:

reactor.queue.PersistentQueueSpec > Java Chronicle-based PersistentQueue is performant FAILED
java.lang.IllegalStateException: com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'test': was expecting 'null', 'true', 'false' or NaN
 at [Source: reactor.io.Buffer$BufferInputStream@136ec72; line: 1, column: 6]
    at reactor.io.encoding.json.JsonCodec$JsonDecoder.apply(JsonCodec.java:112)
    at reactor.io.encoding.json.JsonCodec$JsonDecoder.apply(JsonCodec.java:88)
    at reactor.queue.IndexedChronicleQueuePersistor.read(IndexedChronicleQueuePersistor.java:189)
    at reactor.queue.IndexedChronicleQueuePersistor.access$900(IndexedChronicleQueuePersistor.java:27)
    at reactor.queue.IndexedChronicleQueuePersistor$ChronicleRemoveFunction.get(IndexedChronicleQueuePersistor.java:253)
    at reactor.queue.IndexedChronicleQueuePersistor$1.next(IndexedChronicleQueuePersistor.java:172)
    at reactor.queue.PersistentQueueSpec.Java Chronicle-based PersistentQueue is performant(PersistentQueueSpec.groovy:103)
    Caused by:
    com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'test': was expecting 'null', 'true', 'false' or NaN
     at [Source: reactor.io.Buffer$BufferInputStream@136ec72; line: 1, column: 6]
        at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1524)
        at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:557)
        at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3095)
        at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3073)
        at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._matchToken(UTF8StreamJsonParser.java:2479)
        at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:793)
        at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:698)
        at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3024)
        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2971)
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2137)
        at reactor.io.encoding.json.JsonCodec$JsonDecoder.apply(JsonCodec.java:103)
        ... 6 more

似乎我在这篇文章中遇到了类似的错误。在这篇文章中,如果不使用该功能,建议@Ignore 测试。但我不确定将来是否会使用这些功能。

任何人都知道如何成功构建和测试而不必@Ignore

4

1 回答 1

2

目前尚不清楚为什么此测试对某些 Windows 用户失败。它可能与在该平台上使用 Java Chronicle 有关。OpenHFT 库依赖 Unsafe 来提高某些功能的速度,老实说,我不确定 Java Chronicle 在 Windows 平台上的支持程度如何。

最好有一个GitHub 问题来详细说明此故障,并包括有关操作系统、硬件、JVM 版本等的重要详细信息……我们将尝试循环访问一些 OpenHFT 人员,看看他们是否有什么可以指点我们的朝向。

更新:似乎测试的问题实际上在于清理,如果文件描述符未正确释放,则在某些操作系统上可能会失败。这是一个良性错误,我们将尝试得到一个很好的修复。同时,我想说添加@Ignore到测试中是安全的,不必担心这些PersistentQueue东西不起作用,因为它只是测试清理失败,而不是 Java Chronicle 本身的功能。

于 2014-03-24T14:30:20.670 回答