Hitachi

インメモリデータグリッド uCosminexus Elastic Application Data store ユーザーズガイド


20.2.5 ServerInfoインタフェース

〈この項の構成〉

(1) 説明

EADsサーバの情報を取得するためのインタフェースです。

(2) インタフェース名

com.hitachi.software.xeads.common.ServerInfo

(3) メソッド一覧

ServerInfoインタフェースが提供するメソッド一覧を次の表に示します。

メソッド名

説明

getName()

ユーザファンクションを実行しているEADsサーバ名(運用ディレクトリ名)を取得します。

getAddress()

ユーザファンクションを実行しているEADsサーバのIPアドレスおよびポート番号を取得します。

getCacheNames()

ユーザファンクションを実行しているEADsサーバで作成済みのキャッシュの,キャッシュ名の一覧を取得します。

getCacheType()

指定したキャッシュ名のキャッシュから,キャッシュタイプの情報を取得します。

getEHeapSize()

ユーザファンクションを実行している,EADsサーバが確保しているExplicitヒープサイズを取得します。

getEHeapUsageSize()

ユーザファンクションを実行している,EADsサーバが使用しているExplicitヒープサイズを取得します。

getCacheDataFileSpecifiedSize()

キャッシュデータファイルの1ファイル当たりのファイルサイズ(キャッシュ定義ファイルに定義した値)を取得します。

getCacheDataFileRemainingSize()

現在書き込み中のキャッシュデータファイルについて,永続データを格納できる残りのファイルサイズを取得します。

getCacheDataFileSpecifiedNumber()

キャッシュデータファイルのファイル数(キャッシュ定義ファイルに定義した値)を取得します。

getCacheDataFileUnusedNumber()

現在使用できる,未使用のキャッシュデータファイルの数を取得します。

(4) getName()

(a) 機能

ユーザファンクションを実行しているEADsサーバ名(運用ディレクトリ名)を取得します。

(b) 形式

public String getName()

(c) 戻り値

ユーザファンクションを実行しているEADsサーバ名(運用ディレクトリ名)が返却されます。

(5) getAddress()

(a) 機能

ユーザファンクションを実行しているEADsサーバのIPアドレスおよびポート番号を取得します。

(b) 形式

public InetSocketAddress getAddress()

(c) 戻り値

サーバのIPアドレスとポート番号を示すjava.net.InetSocketAddressインスタンスが返却されます。

(6) getCacheNames()

(a) 機能

ユーザファンクションを実行しているEADsサーバで作成済みのキャッシュの,キャッシュ名の一覧を取得します。

(b) 形式

public Set<String> getCacheNames()

(c) 戻り値

ユーザファンクションを実行しているEADsサーバで作成済みのキャッシュ名の一覧が返却されます。

Functionインタフェースのinit(),またはdestroy()内でこのメソッドを呼び出した場合は,nullが返却されます。

(7) getCacheType()

(a) 機能

指定したキャッシュ名のキャッシュから,キャッシュタイプの情報を取得します。

(b) 形式

public CacheType getCacheType(String cacheName)
                       throws EADsStoreException

(c) パラメータ

cacheName

キャッシュ名を指定します。

指定できるデータについては,「15.2.2(3) キャッシュ名として指定できるデータ」を参照してください。

なお,作成していないキャッシュのキャッシュ名を指定した場合は不正となります。

(d) 戻り値

キャッシュタイプの情報が返却されます。

Functionインタフェースのinit(),またはdestroy()内でこのメソッドを呼び出した場合は,nullが返却されます。

(e) 発生する例外

  • UserOperationException(ユーザの操作不正)

  • EADsStoreException(予期しないエラー)

(8) getEHeapSize()

(a) 機能

ユーザファンクションを実行している,EADsサーバが確保しているExplicitヒープサイズを取得します。

(b) 形式

public long getEHeapSize()
                  throws EADsStoreException

(c) 戻り値

EADsサーバが確保しているExplicitヒープサイズ(単位:バイト)が返却されます。

Functionインタフェースのinit(),またはdestroy()内でこのメソッドを呼び出した場合は0が返却されます。

(d) 発生する例外

  • InternalServerException(EADsサーバの内部エラー)

  • EADsStoreException(予期しないエラー)

(9) getEHeapUsageSize()

(a) 機能

ユーザファンクションを実行している,EADsサーバが使用しているExplicitヒープサイズを取得します。

(b) 形式

public long getEHeapUsageSize()
                  throws EADsStoreException

(c) 戻り値

EADsサーバが使用しているExplicitヒープサイズ(単位:バイト)が返却されます。

Functionインタフェースのinit(),またはdestroy()内でこのメソッドを呼び出した場合は0が返却されます。

(d) 発生する例外

  • InternalServerException(EADsサーバの内部エラー)

  • EADsStoreException(予期しないエラー)

(10) getCacheDataFileSpecifiedSize()

(a) 機能

キャッシュデータファイルの1ファイル当たりのファイルサイズ(キャッシュ定義ファイルに定義した値)(単位:バイト)を取得します。

(b) 形式

public long getCacheDataFileSpecifiedSize(String cacheName)
                                   throws EADsStoreException

(c) パラメータ

cacheName

キャッシュ名を指定します。

指定できるデータについては,「15.2.2(3) キャッシュ名として指定できるデータ」を参照してください。

なお,作成していないキャッシュのキャッシュ名を指定した場合は不正となります。

(d) 戻り値

キャッシュデータファイルの1ファイル当たりのファイルサイズ(キャッシュ定義ファイルに定義した値)(単位:バイト)が返却されます。

Functionインタフェースのinit(),またはdestroy()内でこのメソッドを呼び出した場合は,nullが返却されます。

(e) 発生する例外

  • UserOperationException(ユーザの操作不正)

  • EADsStoreException(予期しないエラー)

(11) getCacheDataFileRemainingSize()

(a) 機能

現在書き込み中のキャッシュデータファイルについて,永続データを格納できる残りのファイルサイズ(単位:バイト)を取得します。

(b) 形式

public long getCacheDataFileRemainingSize(String cacheName, String key)
                                   throws EADsStoreException

(c) パラメータ

cacheName

キャッシュ名を指定します。

指定できるデータについては,「15.2.2(3) キャッシュ名として指定できるデータ」を参照してください。

なお,作成していないキャッシュのキャッシュ名を指定した場合は不正となります。

key

valueに関連づけるkeyを指定します。グループ名だけの指定もできます。

指定できるデータについては,「15.2.2(1) keyとして指定できるデータ」を参照してください。

なお,ユーザファンクションを実行中のEADsサーバに属していないkeyを指定した場合は不正となります。

(d) 戻り値

現在書き込み中のキャッシュデータファイルについて,永続データを格納できる残りのファイルサイズ(単位:バイト)が返却されます。

Functionインタフェースのinit(),またはdestroy()内でこのメソッドを呼び出した場合は,0が返却されます。

(e) 発生する例外

  • UserOperationException(ユーザの操作不正)

  • InternalServerException(EADsサーバの内部エラー)

  • EADsStoreException(予期しないエラー)

(f) 注意事項

  • 返却される残りのファイルサイズは,メソッド実行時点の情報です。そのため,残りのファイルサイズは,キャッシュ操作やコンパクションによって変動することがあります。

  • このメソッドを実行しているEADsサーバの情報を取得します。ほかのEADsサーバの情報は取得できません。

  • このメソッドの戻り値で,キャッシュデータファイルに十分な空き領域を確認できた場合でも,データのコピー先のEADsサーバが容量不足となっていると,データの格納時にデータのコピー先のEADsサーバが縮退してしまいます。このメソッドの戻り値に加えて,データのコピー先のEADsサーバで使用できる容量も考慮して,データを格納できるか判断してください。

(12) getCacheDataFileSpecifiedNumber()

(a) 機能

キャッシュデータファイルのファイル数(キャッシュ定義ファイルに定義した値)を取得します。

(b) 形式

public int getCacheDataFileSpecifiedNumber(String cacheName)
                                    throws EADsStoreException

(c) パラメータ

cacheName

キャッシュ名を指定します。

指定できるデータについては,「15.2.2(3) キャッシュ名として指定できるデータ」を参照してください。

なお,作成していないキャッシュのキャッシュ名を指定した場合は不正となります。

(d) 戻り値

キャッシュデータファイルのファイル数(キャッシュ定義ファイルに定義した値)が返却されます。

Functionインタフェースのinit(),またはdestroy()内でこのメソッドを呼び出した場合は,0が返却されます。

(e) 発生する例外

  • UserOperationException(ユーザの操作不正)

  • EADsStoreException(予期しないエラー)

(13) getCacheDataFileUnusedNumber()

(a) 機能

現在使用できる,未使用のキャッシュデータファイルの数を取得します。

(b) 形式

public int getCacheDataFileUnusedNumber(String cacheName, String key)
                                 throws EADsStoreException

(c) パラメータ

cacheName

キャッシュ名を指定します。

指定できるデータについては,「15.2.2(3) キャッシュ名として指定できるデータ」を参照してください。

なお,作成していないキャッシュのキャッシュ名を指定した場合は不正となります。

key

valueに関連づけるkeyを指定します。グループ名だけの指定もできます。

指定できるデータについては,「15.2.2(1) keyとして指定できるデータ」を参照してください。

なお,ユーザファンクションを実行中のEADsサーバに属していないkeyを指定した場合は不正となります。

(d) 戻り値

現在使用できる,未使用のキャッシュデータファイルの数が返却されます。ただし,EADsサーバによって使用予約済みのファイル数は含まれません。

現在書き込み中のキャッシュデータファイルが,書き込みできる最後のキャッシュデータファイルの場合は,0が返却されます。

Functionインタフェースのinit(),またはdestroy()内でこのメソッドを呼び出した場合は,0が返却されます。

(e) 発生する例外

  • UserOperationException(ユーザの操作不正)

  • InternalServerException(EADsサーバの内部エラー)

  • EADsStoreException(予期しないエラー)

(f) 注意事項

  • 返却される残りのファイル数は,メソッド実行時点の情報です。そのため,残りのファイル数は,キャッシュ操作やコンパクションによって変動することがあります。

  • このメソッドを実行しているEADsサーバの情報を取得します。ほかのEADsサーバの情報は取得できません。

  • このメソッドの戻り値で,キャッシュデータファイルに十分な空き領域を確認できた場合でも,データのコピー先のEADsサーバが容量不足となっていると,データの格納時にデータのコピー先のEADsサーバが縮退してしまいます。このメソッドの戻り値に加えて,データのコピー先のEADsサーバで使用できる容量も考慮して,データを格納できるか判断してください。

(14) ServerInfoインタフェースの使用例

キャッシュデータファイルのデータを格納できる残りのファイルサイズを確認してから,データをputする場合の例を次に示します。

// ファイルに書き込むサイズ
int writeFileSize;
// メモリに書き込むサイズ
int writeMemorySize;
 
    書き込むサイズの計算(省略)
 
final String cacheName = context.getCacheName();
final ServerInfo serverInfo = context.getServerInfo();
 
final CacheType cacheType = serverInfo.getCacheType(cacheName);
 
// ディスク容量のチェック
if (cacheType == CacheType.DISK || cacheType == CacheType.TWOWAY) {
    // キャッシュデータファイルの残りを確認
    if (serverInfo.getCacheDataFileUnusedNumber(cacheName, KEY) == 0) {
        // 現在書き込み中のキャッシュデータファイルが最後の1つ
        if (serverInfo.getCacheDataFileRemainingSize(cacheName, KEY) < writeFileSize) {
            // キャッシュデータファイルに空きがない
            return "Error(CacheDataFile capacity)";
        }
    }
}
 
// メモリ容量のチェック
if (cacheType == CacheType.MEMORY || cacheType == CacheType.TWOWAY) {
    final long remainMemorySize = serverInfo.getEHeapSize() - serverInfo.getEHeapUsageSize();
    if (remainMemorySize < writeMemorySize) {
        return "Error(EHeap capacity)";
    }
}
// 空きがあるためputを実行
context.getStore().getGroup().put(KEY, VALUE);