Ruby连接关闭(DRb :: DRbConnError)

时间:2014-12-04 12:12:22

标签: ruby dbm drb

我遇到了一个非常奇怪的Ruby DRb行为,或者问题可能是dbm。我正在使用带有服务器的dbm数据库,以及通过DRb发出请求的客户端。

这里有问题的方法(数据库连接正常),它在服务器中:

def get id
    obj = nil
    db = DBM.open @name
    obj = db[id.to_s]
    db.close
    return obj
end

此行obj = db[id.to_s]在客户端返回错误connection closed (DRb::DRbConnError)

问题是如果我这样做obj = db['1']它工作正常(' 1'是dbm中的一个键)。为什么会这样? id有什么问题?这是客户端的电话:

DRb.start_service
r = DRbObject.new_with_uri(SERVER_URI)
puts r.get '1'

为什么我收到此错误?这种方法也会发生同样的事情:

def delete id
    db = DBM.open @name
    db.delete id
    db.close
end

2 个答案:

答案 0 :(得分:0)

/lib/drb/drb.rb中,看起来sz.nil?str.nil时会出现连接已关闭错误。

raise(DRbConnError, 'connection closed') if sz.nil?

raise(DRbConnError, 'connection closed') if str.nil?

obj = db[id.to_s]会返回什么?

答案 1 :(得分:0)

尝试修补ruby,以便更详细地了解关系服务器端的错误。

请参阅:https://github.com/ruby/ruby/pull/1260

在我的情况下,这是一个声明private void pairDevice(BluetoothDevice device) { try { Log.d(TAG, "Start Pairing... with: " + device.getName()); device.createBond(); } catch (Exception e) { Log.e(TAG, e.getMessage()); } } 的问题,然后我调用的一些代码最终违反了安全性(即进行了#34;危险的调用)。