V16:サーバー側がダウンします

Product :4D - 4D Server
4D : v16hf2
OS : Windows

動画を撮りました。
http://forums.4d.fr/4DBB_Main/x_User/1337704/files/19286091.zip

1.サービスでサーバーを起動。
2.クライアントを接続。
3.クライアントから管理ウィンドウを出して検査を実行

接続が切れて確認してみると、サーバー側がダウンしています。

サービスからではなく、普通に立ち上げて、同様のことを行っても再現されません。
サービスからの起動がなんらかの影響を与えている様です。

ご不便をおかけしてしまい,ほんとうに申し訳ございません。

16.0 HF2とのことですが,210177以降でも同様でしょうか。

ACI0096581 サービス起動したサーバーがコマンドライン引数の「-d」を認識しない問題
ACI0096436 サービス起動したサーバーがデータファイルのパスを尋ねる問題

が当該ビルドで「修正」となっています。

再起動時に不要なダイアログ表示(上記バグ)が発生し,http://forums.4d.fr/Post/FR/19227573/1/19227875#19227875Windows 10/Server 2016で「デスクトップとの対話」が全面的に使用できなくなった>ことに伴い,サーバーが終了しているのかもしれません。

お世話になります。

明日、確認してみますが、これはデータファイルの場所を指定するダイアログが表示されているのでしょうか?

指摘させていただいている問題では、
1.クライアントは接続できているのですでにデータファイルはみつかっていて普通にデータは参照できる状態です。
2.管理ウィンドウから検査を実行しているだけなので、こちらでも再起動はかかっていないと思われます。

このフィックスされている問題がどの様な動作をするものなのかがよくわかりません。 :frowning:
ダイアログはどのタイミングで表示されるものなのでしょうか。

クライアントをv16hf2のまま、サーバーを210623にして起動しようとしたら’バージョンが違う’と拒否されました。
マイナーバージョンでのチェックが入っているみたいですね。フィックスで相当差異がおおきいのかな互換がないみたいです。 :frowning:

やっと確認できました。

指摘した問題は回避できるようです。
ですが、この一連の不具合の動作がよくかわりません。
4D内部でどの様なながれとなってサーバーがダウンしていたのでしょうか?不要なダイアログが表示されるタイミングがよくわかりません。

また、こちらも読んでみたのですが、なんとなくわかりません。解説をお願いします。

: Keisuke MIYAKO

http://forums.4d.fr/Post/FR/19227573/1/19227875#19227875Windows
10/Server 2016で「デスクトップとの対話」が全面的に使用できなくなった>ことに伴い,サーバーが終了しているのかもしれません。
デスクトップの対話がつかえないのは、Vista以降だったと思うのですが、これはwindows10とserver2016に限定されています。
windows7や8.1、server2003/2008などでは問題にはならないのでしょうか?

よろしくお願いします。 :pray:

追試で、意図的にサーバー上でデバッグウィンドウが表示される状態を作ってみたのですが応答不能になります。 :frowning:

Windowsでサービス起動した(セッション・ゼロ)アプリケーションにユーザーインタフェースを持たせることができる「デスクトップとの対話をサービスに許可」オプションの使用について,MIcrosoftは"否定的"な見解を示しており,段階的に制限を強くしてきた経緯があります。

https://ja.wikipedia.org/wiki/Windowsサービス
https://technet.microsoft.com/ja-jp/library/cc755249(v=ws.11).aspx

Windows Vista/2008以降,このオプションを有効にされていたとしても「対話型サービスの検出 - このコンピューター上で実行されているプログラムがメッセージの表示を試行しています。」ダイアログが表示され,すぐにはユーザーインタフェースが表示できなくなりました。とはいえ,サービスの設定で対話型サービスとして認知することにより,引き続きそのような"レガシー"サービスが使用できるようにもなっています。

Windows 10/2016以降,制限がさらに厳しくなり,たとえ認知された対話型サービスであっても,マウスやキーボードの操作ができなくなりました。このことが今回の問題に関係しています。

ACI0096581/ACI0096436は,いずれもサービス起動した4D Serverに関するバグであり,特定の状況下でダイアログが表示されることを問題視したものです(現象を確認するためには,Windows 10/2016よりも昔のOSでデスクトップとの対話をサービスに許可する必要があります)。確かに,MSCによるカレントデータファイルの検証には,サーバー側でダイアログを表示すること(たとえば再起動)が関係していないように思えますが,管理画面の更新など,何らかのユーザーインタフェース処理が背後で実行されているのかもしれません。両バグは,同じビルド番号210177で修正されているので,サービス起動に関する基本的な仕組みが見直されたように思い,情報として挙げされていただきました。

しかしながら,デバッガに関するご報告より,サービス起動した4D Serverのユーザーインタフェースが完全に抑制されたわけでもないようです。

解説ありがとうございます。

このダイアログなのですが、もしかして進捗を表示するプログレスウィンドウも該当するのでしょうか?
検索処理などで一定時間遅くなるような場合などに表示されているやつです。

ACI0096707

インタープリターモードでサービス運用されるわけではなく,
デバッガの表示は単なる「例」で,
当該OSで4D Serverをサービス起動した場合,
不意にデスクトップとの対話を試みてハングするようなことがあってはならない,
ということだと認識しています。

: Keiji HOSAKA

解説ありがとうございます。

このダイアログなのですが、もしかして進捗を表示するプログレスウィンドウも該当するのでしょうか?
検索処理などで一定時間遅くなるような場合などに表示されているやつです。

この件の回答でよいのでしょうか?
もし該当するのであれば、データの検査で落ちていたのが合点がいくのですが。 :-o

バグ報告は,ご質問と入れ違いでした。

リアルタイプモニターが導入されたとき,サーバー側はデフォルトでMESSAGES OFFとなりました。
ですから,MESSAGES ON/OFFの影響を受ける進捗バー全般(検索など)は,問題にならないと思います。

しかし,MSCや管理画面周りには,独自の進捗バー処理があり,今回の問題に関係しているのかもしれません。

入れ違いでしたか。すみませんでした。:oops:

実は、これ以外にもサーバーがダウンする事例があります。
今回の件でおそらくなのですが、4D側でだしている進捗バーウィンドウの中にMESSAGE OFFでも消えない場合があるのでは
ないかと推測します。
その事例では、集計処理をしている最中でした。大量にデータ処理をしている関係上、
サーバー側で進捗ウィンドウが出てていたのではないかと想像します。

ACI0096707のバグ報告の件でお願いがあります。

予想では、サービス起動時には、TRACEコマンド及びブレイクポイントは無視する方向になるかと思います。

後はエラーの場合なのですが、
イメージとしてはON ERR CALLでエラー情報を取得してLOG EVENTでエラー内容をイベントビュワーで確認できる様にしてほしいです。
もしくはLogsフォルダに独自フォーマットで書き込んでもらっても構いませんが、
クライアント側の管理ウィンドウでその内容を閲覧できる様にしてほしいです。

よろしくお願いします。 :pray:

本件ですが,近日中のNightly Buildでさらに修正されることになりました。

具体的には,

サービス起動された4D Serverでダイアログを表示するようなアクションは無視されるようになりました。
TRACE,エラー/ASSERT(False),ALERT等で確認することができます。
(プロセスやメソッドをアボートするのではなく,そのまま続行)

メッセージの代わりにログを・・・というのは,バグ修正の範疇を超えているように感じますので,
申し訳ありませんが,別件として扱わせていただきたいと思います。

よろしお願いします。

: Keisuke MIYAKO

メッセージの代わりにログを・・・というのは,バグ修正の範疇を超えているように感じますので,
申し訳ありませんが,別件として扱わせていただきたいと思います。

エラーダイアログの代わりに、これ提供しないと2度手間になりますよ。
一度みればわかる様な不具合について再度ログをしかけて発生を待たなくてはいけません。
とても不利だと思われます。

熟慮をお願いします。ほかのデベロッパーにも相談してみてください。 :pray:

いろいろ情報をいただいたので再度検証しなおしてみました。

もう一つの方は、windows 2008 serverで発生しており、ダイアログなどの表示が一切ない状態で発生しています。
検証した結果としては、全く違う問題の様です。
残念なことに他の原因でサーバー側がダウンする問題があるといわざる終えません。

引き続き検証をしたいと思います。 なにアドバイスがあればお願いします。:frowning:

追伸です。

http://4djug.forumjap.com/t135-topicJUG>の投稿でも触れましたが,
Windows 10/2016では,サービス > プロパティ > ログオン で
「デスクトップとの対話をサービスに許可」のチェックボックスを外しておくことが必要です。

チェックボックスが有効にされている場合,
Windows 10/2016規定の動作として,
サーバー側でダイアログを表示すると,
キーボード・マウス操作ができないために,
身動きが取れない状態になってしまいます。
(しかしサーバーが終了するわけではありません)

注記:

Interactive Services Detection(対話型サービスの検出)サービスを有効にするためには,
まず,レジストリキー
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows
「NoInteractiveServices」を「0」に変更する必要があります。
このサービスが実行されていない場合,
(上述したように,表示したところでキーボード・マウス操作はできないのですが)
サーバー側のダイアログを表示することができません。(そこで止まったようになります)

ログファイルについてですが,
SET DATABASE PARAMETERの「診断ログ」を有効にすれば,
かなり詳細な記録が作られるだけでなく,
ON ERR CALLが有効にされていれば,
LOG EVENTでメッセージを書き込むこともできます。

「2度手間になる」とのことですが,
「ON ERR CALLを利用せずに,4D Serverをサービス起動」した場合,
4D Serverが暗示的にエラーハンドリングメソッドをインストールし,
LOG EVENTを実行するべきだ,ということでしょうか。

その場合,なぜON ERR CALL/LOG EVENTを使用していないのか,
LOG EVENTはどのログ(イベントログ・診断ログ・サーバーログ・デバッグログ)に対して記録するのか,
という点については,どのように考えたら良いのでしょうか。

おせわになります。

windows10/2016でのお話でしたら、原因が特定できている。及び対応策が講じられる様なのでお任せします。
おそらくその様にすれば、問題がないものと思います。

ログファイルの件ですが、今のままだとエラーなのでダイアログがでず、無視するとおっしゃっていたので
原因を再度調べないといけないことを懸念しているのです。
最低限、ダイアログで表示されるはずの内容/情報は別の方法で提供してください。という意図です。

その他で構築したシステム的に詳細なログが必要な場合には、独自にON ERR CALLを仕掛ければよいのではないかと考えました。
弊社の場合にはご指摘通り、ON ERR CALLを仕掛けてとなりますが、
サーバー実行時にはON ERR CALLを仕掛けないといけないということが、現在周知されていないので
おそらく他の方の場合、原因不明でクラッシュした。と言うことになりかねないと思います。
4D社的にも不具合のサポートが増えてこまるのでは?

LOG EVENTと各種ログについては、ゾンビユーザーの件もあり調べてみたのですが、
私もよくわからない部分があるので詳しく解説していただければありがたいです。

どの様な場合に、どのログを使って記録するのが適切なのか、どの様に記録されているのか、
ログの内容をどの様にみればよいかなどお願いします。
4D社でないと解析できないのであれば、どの様な手順で提供してほしいのかもお願いします。
できれば独自にある程度までは解析したいとは思いますが…

サーバー側のエラーを記録する件について
http://forums.4d.fr/Post//19364054/1/

ログファイルを解析するツール等に関しては,
順次,資料を公開してゆきたいと思います。

9月13日のビルドより,サービス起動(デスクトップ対話もOFF)したサーバー側では,ダイアログが表示されないようになりました。v15, v16の両方に反映されます。