リモート永続ファイルリストフィルター

受信およびストリーミング受信リモートファイルチャネルアダプター(FTPSFTP、その他のテクノロジ)は、デフォルトで AbstractPersistentFileListFilter の対応する実装で構成され、メモリ内 MetadataStore で構成されます。クラスターで実行するには、共有 MetadataStore を使用してこれらをフィルターに置き換えることができます(詳細については、メタデータストアを参照してください)。これらのフィルターは、同じファイルが複数回フェッチされるのを防ぐために使用されます(変更された時間の変更がない限り)。バージョン 5.2 以降、ファイルは、ファイルがフェッチされる直前にフィルターに追加されます(フェッチが失敗した場合は、逆になります)。

致命的な障害(停電など)が発生した場合、現在フェッチされているファイルがフィルターに残り、アプリケーションの再起動時に再フェッチされない可能性があります。この場合、このファイルを MetadataStore から手動で削除する必要があります。

以前のバージョンでは、ファイルは取得される前にフィルタリングされていたため、壊滅的な障害が発生した後、いくつかのファイルがこの状態になる可能性がありました。

この新しい動作を容易にするために、FileListFilter に 2 つの新しいメソッドが追加されました。

boolean accept(F file);

boolean supportsSingleFileFiltering();

フィルターが supportsSingleFileFiltering で true を返す場合、accept() を実装する必要があります。

リモートフィルターが単一ファイルのフィルター処理(AbstractMarkerFilePresentFileListFilter など)をサポートしない場合、アダプターは以前の動作に戻ります。

CompositeFileListFilter または ChainFileListFilter を使用して)複数のフィルターが使用されている場合、複合フィルターがそれをサポートするには、すべてのデリゲートフィルターが単一ファイルフィルタリングをサポートする必要があります。

永続ファイルリストフィルターにブールプロパティ forRecursion が追加されました。このプロパティを true に設定すると、alwaysAcceptDirectories も設定されます。これは、送信ゲートウェイ(ls および mget)での再帰操作が常にディレクトリツリー全体を毎回トラバースすることを意味します。これは、ディレクトリツリーの奥深くで変更が検出されなかった問題を解決するためです。さらに、forRecursion=true により、ファイルへのフルパスがメタデータストアキーとして使用されます。これにより、同じ名前のファイルが異なるディレクトリに複数回表示された場合にフィルターが正しく機能しなかった問題が解決されます。重要: これは、永続メタデータストア内の既存のキーが、最上位ディレクトリにあるファイルで見つからないことを意味します。このため、プロパティはデフォルトで false です。これは将来のリリースで変更される可能性があります。