Thrift プロキシ経由で NodeJS から Accumulo に接続しようとしましたが、失敗しました。
var thrift = require("thrift");
var AccumuloClient = require("./AccumuloProxy");
var transport = thrift.TFramedTransport;
var protocol = thrift.TBinaryProtocol;
var connection = thrift.createConnection("localhost", 42424, {
transport: transport,
protocol: protocol
});
var client = thrift.createClient(AccumuloClient, connection);
client.login("root", {'password': "password"});
ログインしようとすると、
org.apache.thrift.protocol.TProtocolException: Expected protocol id ffffff82 but got ffffff80
誰かが私を助けて、私がここで間違っていることを教えてくれますか?
アップデート:
protocolFactory
Accumulo にある proxy.properties ファイルの行を変更し、プロキシを再起動しました。
protocolFactory=org.apache.thrift.protocol.TBinaryProtocol$Factory
上記と同じ手順を実行しましたが、呼び出しにコールバックを追加しましたcreateClient
。
var login;
var client = thrift.createClient(AccumuloClient, connection,
function(err, success) { login = success });
これにより、ログイン変数が設定されます。次に、そのログイン変数を使用して他の機能を実行しようとします
client.listTables(login, function(a) { console.log(a) })
結果は
{name: 'TApplicationException',
type: 6,
message: 'Internal error processing listTables'}
テーブルを作成しようとしています
client.createTable(login, "testTable", 1, "", function(a) { console.log(a)})
結果は
{name: 'AccumuloSecurityException',
msg: 'org.apache.accumulo.core.client.AccumuloSecurityException: Error SERIALIZATION_ERROR for user unknown - Unknown security exception'}
以下の回答を参照してください。