【手続補正書】
【提出日】平成25年10月1日(2013.10.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１つまたは複数のプロセッサおよびシステムメモリを含むコンピュータアーキテクチャにおいて、２つ以上の実行スレッド間のロック競合を解決する方法であって、前記コンピュータアーキテクチャは、アプリケーションホスト、永続化プロバイダ、およびインスタンスストアをさらに含み、前記アプリケーションホストは、インスタンスを前記インスタンスストアに永続化し、かつ前記インスタンスストアからのインスタンスにアクセスするためのコマンドを発行するように構成された複数の実行スレッドを含み、少なくとも前記コマンドのサブセットが、実行スレッドが実行中にインスタンスのロックを要求することを生じさせ、前記方法は、
前記永続化プロバイダが、第１のコマンドを、前記アプリケーションホストに含まれる第１の実行スレッドから受信する動作であって、前記第１のコマンドは、１つまたは複数の条件を満たす場合に第１のインスタンスに対するロックの取得を要求するように構成される、受信する動作と、
前記永続化プロバイダが、前記第１のコマンドをコマンドログに記録する動作と、
前記永続化プロバイダが、前記第１のコマンドを前記インスタンスストアにサブミットする動作と、
前記永続化プロバイダが、第２のコマンドを、前記アプリケーションホストに含まれる第２の実行スレッドから受信する動作であって、前記第２のコマンドは、前記第２のコマンドにより処理するために第２のインスタンスを前記第２の実行スレッドに対してロックすることを要求するように構成される、受信する動作と、
前記永続化プロバイダが、前記第２のコマンドを前記コマンドログに記録する動作と、
前記永続化プロバイダが、前記第２のコマンドを前記インスタンスストアにサブミットする動作と、
前記永続化プロバイダが、前記第２のコマンドに対するロック応答を、前記インスタンスストアから受信する動作であって、前記ロック応答は、前記アプリケーションホストが前記第２のインスタンスに対するロックの保持者であることを示し、前記ロック応答は、前記第１のコマンドをサブミットした後、かつ前記第１のコマンドが完了する前に受信される、受信する動作と、
前記永続化プロバイダが、前記コマンドログを参照し、前記第１のコマンドの現在の解決が、（ａ）前記第１のコマンドが前記第１のインスタンスに対するロックを取得したかどうか、ならびに（ｂ）前記第１のインスタンスおよび前記第２のインスタンスが同一のインスタンスであるかどうかを判定するには、十分な情報を提供していないと判定する動作であって、前記十分な情報を提供していないことは、前記第２のコマンドが要求したロックが、それ以前に前記第１のコマンドによって取得されたロックであったかどうかを曖昧にする、判定する動作と、
前記永続化プロバイダが、前記第１のコマンドのさらなる解決に到達するまで、前記第２のコマンドの処理を中断する動作であって、前記さらなる解決は、少なくとも、前記１つまたは複数の条件を満たすことに関する追加情報を提供する、中断する動作と、
前記永続化プロバイダが、前記第１のコマンドの解決に関する前記追加情報に基づき、前記第２のコマンドに関してどのように進めるかを判定する動作と
を含むことを特徴とする方法。
【請求項２】
前記永続化プロバイダが、前記追加情報に基づき、前記第１のコマンドは前記第２のコマンドが要求したロックを取得したと判定する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記永続化プロバイダが、前記第１のコマンドをコマンドログに記録する動作は、前記第１のコマンドを、第１のタイムスタンプと共に前記コマンドログに記録する動作であって、前記第１のタイムスタンプは、前記永続化プロバイダのコマンドクロックにより提供される、記録する動作を含み、
前記永続化プロバイダが、前記第２のコマンドを前記コマンドログに記録する動作は、前記第２のコマンドを第２のタイムスタンプと共に前記コマンドログに記録する動作であって、前記第２のタイムスタンプは、前記永続化プロバイダの前記コマンドクロックにより提供される、記録する動作を含む
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記永続化プロバイダが、前記追加情報に基づき、前記第１のコマンドは前記第２のコマンドが要求したロックを取得したと判定する動作は、前記第１のタイムスタンプおよび前記第２のタイムスタンプに基づき、前記第１のコマンドを前記第２のコマンドより前に受信したと判定する動作を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記永続化プロバイダが、前記第２のコマンドに関してどのように進めるかを判定する動作は、前記第２のコマンドを失敗とする動作を含むことを特徴とする請求項２に記載の方法。
【請求項６】
前記永続化プロバイダが、前記第２のコマンドに関してどのように進めるかを判定する動作は、前記アプリケーションホストを前記第１のコマンドがロックを取得したインスタンスのコピーに導く動作を含むことを特徴とする請求項２に記載の方法。
【請求項７】
前記永続化プロバイダが、前記第１のコマンドは前記第２のコマンドが要求したロックを取得したと判定する動作は、
前記第１のコマンドは前記インスタンスのバージョンに対するロックを取得したと判定する動作と、
前記第２のコマンドに対する前記ロック応答は、前記インスタンスの同一のバージョンに対するロックに対するものであったと判定する動作と
を含むことを特徴とする請求項２に記載の方法。
【請求項８】
前記永続化プロバイダが、前記追加情報に基づき、前記第１のコマンドは前記第２のコマンドが要求したロックを取得しなかったと判定する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記永続化プロバイダが、第３のコマンドを、前記アプリケーションホストに含まれる第３の実行スレッドから受信する動作であって、前記第３のコマンドは、１つまたは複数の条件を満たす場合に第３のインスタンスに対するロックの取得を要求するように構成される、受信する動作と、
前記永続化プロバイダが、前記第３のコマンドをコマンドログに記録する動作と、
前記永続化プロバイダが、前記第３のコマンドを前記インスタンスストアにサブミットする動作と、
前記永続化プロバイダが、前記コマンドログを参照し、前記第３のコマンドの現在の解決が、（ａ）前記第３のコマンドが前記第３のインスタンスに対するロックを取得したかどうか、ならびに（ｂ）前記第３のインスタンスおよび前記第２のインスタンスが同一のインスタンスであるかどうかを判定するには、十分な情報を提供していないと判定する動作であって、前記十分な情報を提供していないことは、前記第２のコマンドが要求したロックが、それ以前に前記第３のコマンドによって取得されたロックであったかどうかを曖昧にする、判定する動作と、
前記永続化プロバイダが、前記第３のコマンドのさらなる解決に到達するまで、前記第２のコマンドの処理を中断する動作であって、前記さらなる解決は、少なくとも、前記１つまたは複数の条件を満たすことに関する追加情報を提供する、中断する動作と、
前記永続化プロバイダが、前記第３のコマンドの解決に関する前記追加情報に基づき、前記第２のコマンドに関してどのように進めるかを判定する動作と
をさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記永続化プロバイダが、第２のコマンドを受信する動作は、前記永続化プロバイダが、前記第２のコマンドを、前記第１のコマンドを受信した後に受信する動作を含み、
前記永続化プロバイダが、前記第２のコマンドに対するロック応答を、前記インスタンスストアから受信する動作は、前記第２のコマンドに対するロック応答を、前記第１のコマンドに対応する応答を受信する前に受信する動作を含む
ことを特徴とする請求項１に記載の方法。
【請求項１１】
前記永続化プロバイダが、前記コマンドログを参照し、前記第１のコマンドの現在の解決が、十分な情報を提供していないと判定する動作は、前記第１のコマンド内のエイリアスがインスタンスに対していまだ解決されていないと判定する動作を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
１つまたは複数のプロセッサおよびシステムメモリを含むコンピュータアーキテクチャにおいて、２つ以上の実行スレッド間のロック競合を解決する方法であって、前記コンピュータアーキテクチャは、１つまたは複数のアプリケーションホスト、永続化プロバイダ、およびインスタンスストアをさらに含み、前記１つまたは複数のアプリケーションホストのそれぞれは、インスタンスを前記インスタンスストアに永続化し、かつ前記インスタンスストアからのインスタンスにアクセスするためのコマンドを発行するように構成された少なくとも１つの実行スレッドを含み、少なくとも前記コマンドのサブセットが、実行スレッドが実行中にインスタンスのロックを要求することを生じさせ、前記方法は、
前記永続化プロバイダが、第１のコマンドを、前記アプリケーションホストに含まれる第１の実行スレッドから受信する動作であって、前記第１のコマンドは、第１のインスタンスに対するロックの取得を要求するように構成される、受信する動作と、
前記永続化プロバイダが、前記第１のコマンドを前記インスタンスストアにサブミットする動作と、
前記永続化プロバイダが、前記第１のコマンドに対するロック応答を、前記インスタンスストアから受信する動作であって、前記ロック応答は、前記アプリケーションホストが前記第１のインスタンスに対するロックを取得したことを示し、前記第１のインスタンスに対するロックは、第１のインスタンスバージョンに対するものである、受信する動作と、
前記永続化プロバイダが、第２のコマンドを、前記アプリケーションホストに含まれる第２の実行スレッドから受信する動作であって、前記第２のコマンドは、前記第２のコマンドにより処理するために第２のインスタンスを前記第２の実行スレッドに対してロックすることを要求するように構成され、前記第２のコマンドは前記第１のコマンドより後に受信される、受信する動作と、
前記永続化プロバイダが、前記第２のコマンドを前記インスタンスストアにサブミットする動作と、
前記永続化プロバイダが、前記第２のコマンドに対するロック応答を前記インスタンスストアから受信する動作であって、前記ロック応答は、前記アプリケーションホストが前記第２のインスタンスに対するロックを取得したことを示し、前記第２のインスタンスに対するロックは、第２のインスタンスバージョンに対するものであり、前記第２のコマンドに対する前記ロック応答は前記第１のコマンドに対する前記ロック応答より後に受信され、前記第２のインスタンスバージョンは前記第１のインスタンスバージョンよりも新しい、受信する動作と、
前記永続化プロバイダが、前記第１のインスタンスおよび前記第２のインスタンスは同一のインスタンスであると判定する動作と、
前記永続化プロバイダが、前記第２のコマンドに対する前記ロック応答に対応する前記第２のインスタンスバージョンは前記第１のコマンドに対する前記ロック応答に対応する前記第１のインスタンスバージョンより新しいインスタンスバージョンであると判定する動作と、
前記第１のコマンドが前記第２のコマンドより後に受信されたとしても、前記第１のコマンドが旧インスタンスバージョンに対するロックを保持しているという前記判定に応じて、前記永続化プロバイダが、前記第１のコマンドを失敗とする動作と
を含むことを特徴とする方法。
【請求項１３】
前記インスタンスストアが前記第１のロック応答を前記永続化プロバイダに送った後、かつ前記インスタンスストアが前記第２のコマンドを前記永続化プロバイダから受信する前に、前記インスタンスストアが、１つまたは複数の他のコマンドを、１つまたは複数の他のアプリケーションホストから受信する動作と、
インスタンスクロックが、前記１つまたは複数の他のコマンドに応答し、バージョン更新規則に従って、前記インスタンスのバージョンを、前記第１のインスタンスバージョンから前記第２のインスタンスバージョンへと更新する動作と
をさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
永続性インスタンスに対するロック競合を解決するコンピュータシステムであって、
１つまたは複数のプロセッサと、
システムメモリと、
１つまたは複数のアプリケーションホスト、永続化プロバイダ、およびインスタンスストアを示すコンピュータ実行可能命令を格納する１つまたは複数のコンピュータ記憶媒体であって、前記１つまたは複数のアプリケーションホストのそれぞれは、少なくとも１つの実行スレッドを含み、
前記１つまたは複数のアプリケーションのそれぞれは、
インスタンスを前記インスタンスストアに永続化し、かつ前記インスタンスストアからのインスタンスにアクセスするためのコマンドを送信し、少なくとも前記コマンドのサブセットが、実行スレッドが実行中にインスタンスのロックを要求することを生じさせるように構成され、
前記インスタンスストアは、
前記インスタンスストアに格納されたインスタンスに対するロックの取得を要求するコマンドを、前記永続化プロバイダから受信し、
インスタンスクロックを用いて、インスタンスのバージョニングポリシーに従ってインスタンスのバージョンを保持し、
受信したコマンドに応答して、ロックがインスタンスに対していつ取得されたかを、ロックが取得された前記インスタンスのバージョンを示すことを含めて、前記永続化プロバイダに示し、
受信したコマンドに対するロックの取得の要求が、すでにロックされているインスタンスにいつ指示されたかを、前記永続化プロバイダに示す
ように構成され、
前記永続化プロバイダは、
インスタンスに対するロックの取得を要求するように構成されたコマンドを受信することを含め、前記１つまたは複数のアプリケーションホストに含まれる実行スレッドから前記コマンドを受信し、前記永続化プロバイダは、ロック競合を引き起こす可能性があるコマンドとロック競合を引き起こす可能性がないコマンドとを区別するように構成され、
コマンドを受信した論理時間を判定し、
コマンドを受信した論理時刻を含むコマンド情報をコマンドログに記録し、前記永続化プロバイダは、ロック競合を引き起こす可能性があると判定される受信されたコマンドのコマンド情報のみを記録するようにさらに構成され、
受信したコマンドに応答して、ロックがインスタンスに対していつ取得されたかを示す、前記インスタンスストアからの指示を受信し、
受信したコマンドに対するロックの取得の要求が、すでにロックされているインスタンスにいつ指示されたかを示す、前記インスタンスストアからの指示を受信し、
前記コマンドログに記録された情報と共に、受信した指示に基づき、アプリケーションホスト間のロック競合を検出し、
前記コマンドログに記録された前記コマンド情報と共に、受信した指示に基づき、ロック競合を解決する
ように構成される、コンピュータ記憶媒体と
を備えたことを特徴とするコンピュータシステム。