【问题标题】:java.io.EOFException while retrieving data from Riak从 Riak 检索数据时出现 java.io.EOFException
【发布时间】:2013-12-03 07:16:38
【问题描述】:

我正在尝试从 Riak 以字符串形式执行简单的数据提取。

我们正在尝试执行示例代码,但遇到了错误。这是为从 Riak 获取数据

而编写的 Java 代码

我确保 riak 正在由 Sudo Riak Start

运行

错误如下:

Exception in thread "main" com.basho.riak.client.RiakRetryFailedException: java.io.EOFException
    at com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:79)
    at com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:81)
    at com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:81)
    at com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:81)
    at com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:53)
    at com.basho.riak.client.bucket.FetchBucket.execute(FetchBucket.java:72)
    at riak.App.main(App.java:15)
Caused by: java.io.EOFException
    at java.io.DataInputStream.readInt(DataInputStream.java:392)
    at com.basho.riak.pbc.RiakConnection.receive(RiakConnection.java:110)
    at com.basho.riak.pbc.RiakClient.getBucketProperties(RiakClient.java:697)
    at com.basho.riak.client.raw.pbc.PBClientAdapter.fetchBucket(PBClientAdapter.java:249)
    at com.basho.riak.client.bucket.FetchBucket$1.call(FetchBucket.java:74)
    at com.basho.riak.client.bucket.FetchBucket$1.call(FetchBucket.java:1)
    at com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:72)
    ... 6 more

示例代码:

package riak;

import com.basho.riak.client.IRiakClient;
import com.basho.riak.client.IRiakObject;
import com.basho.riak.client.RiakException;
import com.basho.riak.client.RiakFactory;
import com.basho.riak.client.bucket.Bucket;

public class App
{
    public static void main(String[] args) throws RiakException
    {
        //IRiakClient riakClient = RiakFactory.httpClient();
        IRiakClient client = RiakFactory.pbcClient("127.0.0.1", 8098);
        Bucket myBucket = client.fetchBucket("TestBucket").execute();
        IRiakObject myObject = myBucket.fetch("TestKey").execute();
        // note that getValueAsString() will return null here if there's no value in Riak
        System.out.println(myObject.getValueAsString());

        client.shutdown();
    }
}

【问题讨论】:

  • 对端已关闭连接。
  • 什么意思?我们正在使用 localhost,我可以看到我们的 riak 服务器已启动并正在运行!你能解释一下吗? (对不起,我对 riak 有点陌生)
  • 我的意思是对等应用程序,大概是 Riak 服务器,已经关闭了您的代码正在读取的连接,这导致它抛出 EOFException。对我来说似乎非常清楚。

标签: java riak riak-search


【解决方案1】:

非常感谢您的帮助。

我找到了问题!

我的端口号是 8087 而不是 8098

我们需要在 /etc/riak/app.conf 中进行配置(在 API 设置下)

我已经重新配置了它并修复了它。

谢谢!

【讨论】:

    【解决方案2】:

    表示在输入期间意外到达文件结尾或流结尾。 此异常主要由数据输入流用来表示流结束。请注意,许多其他输入操作在流结束时返回一个特殊值,而不是引发异常。

    你可以看到如下 http://docs.oracle.com/javase/7/docs/api/java/io/EOFException.html

    【讨论】:

      【解决方案3】:

      端口是 8087,因为您使用的是 pbcclient。这是正确的。如果使用 httpclient,默认端口是 8098。这就是你的困惑。我也是,呵呵。

      【讨论】:

        猜你喜欢
        • 2021-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多