Rechercher

Résumé
· Juil 29, 2024

Nuevas publicaciones en la Comunidad de InterSystems, 22-28 julio

Artículos
#InterSystems IRIS
#Comunidad de Desarrolladores Oficial
#InterSystems IRIS for Health
Anuncios
#InterSystems Official
Debates
22-28 julioWeek at a GlanceInterSystems Developer Community
Résumé
· Juil 29, 2024

InterSystems 开发者社区中文版:每周摘要(2024年7月22日-28日)

文章
问题
#InterSystems IRIS
 
讨论
七月 22 - 28, 2024Week at a GlanceInterSystems Developer Community
Question
· Juil 29, 2024

Died workers of WorkMgr

Started some work using WorkMgr, but then I noticed, that it stuck and does not get any responses from workers anymore

And I found that messages log contains logs about dead processes, why WorkMgr daemon did not restart died processes?

How to restart them without restarting IRIS

07/29/24-15:10:59:589 (856) 2 [Generic.Event] Process terminated abnormally (pid 949, jobid 0x0002001d)
07/29/24-15:10:59:603 (856) 0 [Generic.Event] cleaned dead job, pid: 949, jobid 0x0002001d
07/29/24-15:10:59:603 (856) 2 [Generic.Event] Process terminated abnormally (pid 951, jobid 0x0001001f)
07/29/24-15:10:59:603 (856) 0 [Generic.Event] cleaned dead job, pid: 951, jobid 0x0001001f
07/29/24-15:10:59:603 (856) 2 [Generic.Event] Process terminated abnormally (pid 952, jobid 0x00010020)
07/29/24-15:10:59:604 (856) 0 [Generic.Event] cleaned dead job, pid: 952, jobid 0x00010020
07/29/24-15:10:59:604 (856) 2 [Generic.Event] Process terminated abnormally (pid 953, jobid 0x00010021)
07/29/24-15:10:59:604 (856) 0 [Generic.Event] cleaned dead job, pid: 953, jobid 0x00010021
07/29/24-15:10:59:604 (856) 2 [Generic.Event] Process terminated abnormally (pid 954, jobid 0x00010022)
07/29/24-15:10:59:604 (856) 0 [Generic.Event] cleaned dead job, pid: 954, jobid 0x00010022
07/29/24-15:10:59:604 (856) 2 [Generic.Event] Process terminated abnormally (pid 955, jobid 0x00010023)
07/29/24-15:10:59:604 (856) 0 [Generic.Event] cleaned dead job, pid: 955, jobid 0x00010023
07/29/24-15:10:59:604 (856) 2 [Generic.Event] Process terminated abnormally (pid 956, jobid 0x00010024)
07/29/24-15:10:59:604 (856) 0 [Generic.Event] cleaned dead job, pid: 956, jobid 0x00010024
07/29/24-15:10:59:604 (856) 2 [Generic.Event] Process terminated abnormally (pid 957, jobid 0x00010025)
07/29/24-15:10:59:604 (856) 0 [Generic.Event] cleaned dead job, pid: 957, jobid 0x00010025
07/29/24-15:10:59:604 (856) 2 [Generic.Event] Process terminated abnormally (pid 958, jobid 0x00010026)
07/29/24-15:10:59:604 (856) 0 [Generic.Event] cleaned dead job, pid: 958, jobid 0x00010026
07/29/24-15:10:59:604 (856) 2 [Generic.Event] Process terminated abnormally (pid 959, jobid 0x00010027)
07/29/24-15:10:59:604 (856) 0 [Generic.Event] cleaned dead job, pid: 959, jobid 0x00010027
07/29/24-15:10:59:604 (856) 2 [Generic.Event] Process terminated abnormally (pid 960, jobid 0x00010028)
07/29/24-15:10:59:604 (856) 0 [Generic.Event] cleaned dead job, pid: 960, jobid 0x00010028
Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Résumé
· Juil 29, 2024

【週間ダイジェスト】 7/22 ~ 7/28 の開発者コミュニティへの投稿

7/22 ~ 7/28Week at a GlanceInterSystems Developer Community
Article
· Juil 28, 2024 2m de lecture

SQLでレコードをSelectするとSQLエラー -114 が発生します

これは InterSystems FAQ サイトの記事です。

通常SQLCODE -114(一致する行が既に別のユーザにロックされています)のエラーはロックが競合した場合に発生します。

こちらはレコードロック競合があったり、ロック閾値を超える更新を行いテーブルロックに昇格した際に、そのテーブルレコードに対して別のプロセスよりSelectを行い共有ロックを取ろうとして失敗した(ロック待ちがタイムアウトとなった)場合に発生します。

Selectで共有ロックを取る場合というのは、IRIS の ISOLATION LEVEL がREAD COMMITTED(デフォルトはREAD UNCOMMITTED)で、Selectを行った場合です。

例:Sample.Personテーブルにテーブルロックがかかった状態で以下を実行する場合

USER>:sql
SQL Command Line Shell
----------------------------------------------------
 
The command prefix is currently set to: <<nothing>>.
Enter <command>, 'q' to quit, '?' for help.
[SQL]USER>>set transaction isolation level read committed    // Read Committed セット
:
[SQL]USER>>select Name from Sample.Person where Age < 10
2.      select Name from Sample.Person where Age < 10
Name
 
 
[SQLCODE: <-114>:<ひとつまたはそれ以上のマッチする行が別のユーザによりロックされています>]
[%msg: <Unable to acquire shared lock on table Sample.Person for RowID value: 4>]
0 Rows(s) Affected


こちらは、

  • 他のプロセスが該当テーブルの該当IDをロックしている
  • ロック閾値によるテーブルロックを行っている
  • システムのロックテーブルが不足しているためのロックテーブルフル状態

のいずれかになっているものと考えられます。

ロックテーブルフルの場合、messages.log に「LOCK TABLE FULL!!!」のエラーが記録されます。

ロックテーブルフルの場合にロックテーブルサイズを変更する方法は、2023.1 より前のバージョンの場合は こちらの記事 をご覧ください。

2023.1以降のバージョンでは、ロックテーブルサイズは既定で 0 に設定されています。
0 の場合は、構成されたグローバルバッファサイズ(データベースキャッシュサイズ)に基づき、最も効果的な設定値が自動構成されます。


enlightened【ご参考】
SQLのUPDATEやDELETEで、ある程度の数のレコードを一括更新するとSQLエラー -110 が発生します

Discussion (0)0
Connectez-vous ou inscrivez-vous pour continuer