#はじめに
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系の問題は解決できるのかな?と思いました。