Lifetimeで発生する問題の対処法


はじめに

OutsystemsのLifetimeを運用する上で、Lifetime↔各環境間でSyncが上手くいかない場合があります。

プロセスがそのまま生きているとSyncができない状態にもなります。

この辺の情報があまりなかったため、対処法について書きます。
但し、この状態になる原因は様々なため、対処法の1つと思っていただけると幸いです。

想定読者

Outsystemsのインフラ担当者 or LifeTimeを触るであろう方

エラーの確認箇所

まずはそれぞれ発生するエラーの原因を判明するためにここをチェックしましょう。

・LifeTimeサーバのServicecenterのErrorsログ

・LifeTimeサーバのServicecenterのProcessesログ

個人的には、Forgeとして提供されているBPT Utilsを利用するのをおすすめします。
実行中のプロセスのkillなどを楽にできます。
https://www.outsystems.com/forge/component-overview/1313/bpt-utils

実際に弊社で起こった問題とその対処法

 Unexpected character encountered while parsing value: $. Path '', line 0, position 0.

対処法

対象の環境のモバイルconfig周りのデータを一旦リセットすることにより解消

delete from ossys_App_Mobile_Config;
delete from ossys_Mobile_Certificate;
delete from ossys_Mobile_Config_Data; 

Login denied for 'Plat****'. Invalid password.

通常、このエラーは、各環境のトークンがLifeTime環境のトークンと一致しないと発生します。

2.1 次のクエリを実行して、ユーザー「PlatformServices」でログインを試みたIPアドレスを見つけます。

SELECT DISTINCT IPADDRESS from OSSYS_LOGIN_ATTEMPT where userid=(SELECT id FROM OSSYS_USER WHERE username LIKE 'PlatformServices')

2.2 上記のクエリからこれらのIPを取得したら、ユーザーPlatformServicesのブロックを解除するために、すべてのIPについて、対象の環境データベースで次のクエリを実行する必要があります。

PlatformServices ユーザーに対して複数のIPアドレスがブロックされている可能性があります。

INSERT INTO OSSYS_LOGIN_ATTEMPT (USERID, USERNAME, INSTANT, IPADDRESS, USERNAMEFAILURECOUNT, IPADDRESSFAILURECOUNT, SUCCESS, RESULT)VALUES ((select id from ossys_user where username like 'PlatformServices'), 'PlatformServices', GETDATE(), '<ip>', 0, 0, 0, 'Unblocked')

2.3 Lifetimeのデータベースで対象の環境のIDを確認します

OSLTM_ENVIRONMENTテーブルではLifetimeに繋がっている各環境のステータスの確認が可能です

SELECT * from OSLTM_ENVIRONMENT WHERE NAME like <Environment_name>

2.4 前の手順の結果に基づいて、Lifetime環境データベースの各環境の保存済みトークンを削除します。

DELETE FROM OSLTM_ENVIRONMENTTOKEN WHERE ID = <Environment_id>

2.5 対象の環境のデータベースで環境トークンを削除します。

DELETE from OSSYS_PARAMETER WHERE name = 'ClientApplicationToken'

2.6 LifeTimeのデプロイサイクルから対象の環境の登録を解除します。

2.7 対象の環境のConfigurationToolを実行して、実稼働環境でService Centerインストールを実行します。この手順により、トークンが再作成されます。

2.8 LifeTimeのデプロイサイクルに対象の環境を再度登録し、同期が正常に完了したかどうかを確認します。

ここで、エラーが発生しなかったらOKです。

最後に

2.6

の手順で実施しているように、Syncで不具合が起きた場合、LifetimeのデプロイサイクルからSyncが上手くいかない環境を外すと思いますが、
OSLTM_ENVIRONMENTテーブルの内容を確認して、トークン等を削除することでSync系の問題は解決できるのかな?と思いました。