質問

私はたくさんのkyotocabinet dbファイルを使用するScalaアプリケーションを書き込みます(私は一度に500~3kの小さなkyotocabinetファイルを開く必要があります)。
しかし、512の後(作成された)DBファイルの後、「エラー:成功:エラーなし」、新しいDBファイルが作成されません。
Googlingの後、東京キャビネット+ Javaに似た問題が見つかりました。 https://groups.google.com/forum/#msg/tokyocabinet-users/ve6osrm_hyu / hxc7795iqpsj 解決策はありません。
だから取引は何ですか?1つのアプリケーションでもっとkyotocabinetファイルを開くにはどうすればよいですか。Kyotocabinetにいくつかのバグがあるかもしれませんか?

役に立ちましたか?

解決

OK私は私の質問の答えを見つけたようです...
これはJavaまたはScala固有の問題ではなく、kyotocabinet
まず私は別の言語でこの行動を再現しようとします。だから私はPerlを使ってテストプログラムを書き込みました、そしてそれはもっと失敗しますが、より有益なメッセージがあります:
「std :: runtime_error」のインスタンスを投げる後に呼び出されます。 what():pthread_key_create

その後kyotocabinetのソースを得て、すべてのkyotoファイル()オブジェクトの特別なTSDKeyオブジェクトを作成し、このオブジェクトはpthread_keyを作成しました。デフォルトで1つで プロセスはこのキーを限られた数、およびpthread_keys_maxで定義されています。
したがって、1つのプロセスで512以上の京都DBファイルを開くことはできません:(

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top