0

thrift API 呼び出し (Erlang で HBase Thrift を使用) ごとに、API は thrift 接続を返します。

アーランの例:

% creating the initial connection

{ok, TFactory}          = thrift_socket_transport:new_transport_factory( "localhost", 9090, []),
{ok, PFactory}          = thrift_binary_protocol:new_protocol_factory(TFactory, []),
{ok, Protocol}          = PFactory(),
{ok, ThiftConnection1}  = thrift_client:new(Protocol, hbase_thrift),    

%calling a row mutation

{ThriftConnection2, Result} = thrift_client:call( ThriftConnection1, mutateRow, ["MYTABLE", Row1Id, MutationList1, dict:new()]),
{ThriftConnection3, Result} = thrift_client:call( ThriftConnection2, mutateRow, ["MYTABLE", Row2Id, MutationList2, dict:new()]),

これにより、以下の関連する問い合わせが発生します。

  1. 常に返された接続を使用する必要がありますか、それとも最初の接続のみを使用する必要がありますか?
  2. これらの接続は同じですか?
  3. このパスアロング接続アプローチは接続リークを引き起こしますか?
  4. これらの接続を閉じる方法はありますか、またはそれらを使用するすべてのタイプの API 呼び出しに対して独自のライフサイクルがありますか?
4

1 に答える 1

1

これは接続ではなく、古着輸送の参照であることに気付きました。それらを互いに比較しましたが、それらは同一です。Erlang では、それらの内容を出力する (シリアル化する) ことで、それらの結果のそれぞれに関する事実は、それらが同じであることを示します

ThriftConnection2 :
{tclient,hbase_thrift,
 {protocol,thrift_binary_protocol,
    {binary_protocol,
        {transport,thrift_buffered_transport,
            {buffered_transport,
                {transport,thrift_socket_transport,
                    {data,#Port<0.25469>,infinity}},
                []}},
        true,true}},
    0}

ThriftConnection3 :
{tclient,hbase_thrift,
{protocol,thrift_binary_protocol,
    {binary_protocol,
        {transport,thrift_buffered_transport,
            {buffered_transport,
                {transport,thrift_socket_transport,
                    {data,#Port<0.25469>,infinity}},
                []}},
        true,true}},
    0}
于 2013-03-31T01:01:46.550 に答える