rcutils_calculate_directory_size()は、再帰なしでディレクトリのサイズの計算のみをサポートします。
rcutils_calculate_directory_size()が再帰をサポートしないのはなぜですか?
何か原因はありますか?
何も考えていませんが、再帰的に動作すればいいと思います。
rcutils_calculate_directory_size
は現在、 rosbag2メタデータの計算に使用されています。 ディレクトリ内のすべてのファイルなので、今のところ再帰的である必要はありません。
rcutils_calculate_directory_sizeは現在、rosbag2メタデータの計算に使用されています。 ディレクトリ内のすべてのファイルなので、今のところ再帰的である必要はありません。
はい。 これで、rosbag2のmetadata_io.cpp
だけがこの関数を呼び出します。
再帰検索をサポートしていないことを明示的に説明しています。 実際のユースケースで再帰的にする必要がありますか?
再帰検索をサポートしていないことを明示的に説明しています。 実際のユースケースで再帰的にする必要がありますか?
はい。 以下のrosbag2での現在の実装
指定されたパスのファイルサイズの合計のみを計算します。 sqlite3データベース(現在、rosbag2はこれをストレージバックエンドとしてのみ提供します)の場合、sqlite3データベースは1つのファイルであるため、問題ありません。 ただし、他の場合(leveldbなど)は、ディレクトリを使用してデータを保存します。 上記のコードは、データベースの正しいサイズを取得できません。
再帰をサポートするようにこの関数を更新したいと思います。
この変更により、現在のコードに問題が発生することはありません。
再帰をサポートするようにこの関数を更新したいと思います。
この変更により、現在のコードに問題が発生することはありません。
ええ、それを行うためにそれを強化することに問題は見られません。 呼び出し元が本当にそれを望まない場合に備えて、関数にrecursive
ブールパラメーターを導入したい場合がありますが、それ以外の場合は私には良いと思います。
@clalancette
CC:@ Barry-Xu-2018
コメントありがとうございます!
実際、私たちはleveldbをrosbag2バックエンドデータベースとして使用しようとしています。 これを行うには、この拡張機能が必要になります。
@clalancette @fujitatomoya
呼び出し元が本当にそれを望まない場合に備えて、関数に再帰的なブールパラメータを導入したい場合がありますが、それ以外の場合は、私には良いと思います。
新しいパラメータを追加する場合は、rcutilsを更新した後、同時にrosbag2を更新する必要があります。 それ以外の場合、rosbag2のビルドは失敗しました。
Linuxプラットフォームでテストしました。 ただし、ウィンドウプラットフォームでテストする必要があります。
現在、ウィンドウ環境を準備しています。
新しいパラメータを追加する場合は、rcutilsを更新した後、同時にrosbag2を更新する必要があります。 それ以外の場合、rosbag2のビルドは失敗しました。
私もこのアプローチを望んでいません。 インターフェイスを維持し、再帰的に検索する機能を強化できます。 再帰的でない検索の特定のユースケースがある場合は、再帰的なケースの新しい関数を追加できます。
私もこのアプローチを望んでいません。 インターフェイスを維持し、再帰的に検索する機能を強化できます。 再帰的でない検索の特定のユースケースがある場合は、再帰的なケースの新しい関数を追加できます。
うん。 同意。
@clalancette
新しいパラメータなしでrcutils_calculate_directory_sizeを拡張するのはどうですか?
現在、rosbag2は拡張されたrcutils_calculate_directory_size()で正しく動作できます。
新しいパラメータなしでrcutils_calculate_directory_sizeを拡張するのはどうですか?
現在、rosbag2は拡張されたrcutils_calculate_directory_size()で正しく動作できます。
私がこれを心配している理由は、rosbag2ディレクトリ内に「追加の」情報を保存することについてユーザーの間でいくつかの話があるからです。 サブディレクトリに大量の追加データを格納することになった場合、rosbag2が期待しているサイズを失う可能性があります。
APIを壊したくない場合は、 rcutils_calculate_directory_size_recursive()
という別の関数を追加することもできます。
rcutils_calculate_directory_size()
で常に再帰検索を実行すると、rosbag2で問題が発生するかどうかについての洞察を得るために、 @ Karsten1987にpingを実行します。
@clalancette
私はあなたの懸念を理解しています。
コードを確認しました。 この関数を使用するのは、rosbag2の以下のコードのみです。
コードを変更した後、デフォルトのsqlite3ストレージプラグインを使用してrosbag2も試しましたが、問題は見つかりませんでした。
もちろん、@ Karsten1987の意見を聞く必要があります。
@ Barry-Xu-2018
私はあなたがこれを閉じることができると思います。