編集:サンプルコードを簡略化しようとしたときに、誤って問題を誤って伝えました。私のコードの重要な部分は、要素を追加した後に配列をソートしようとしていることです。ハングは挿入ではなくソートで発生します。次の抽象化されたコードは、一貫してハングします。
<?=
local('a' = array)
#a->insert('test1' = map('a'='1'))
#a->insert('test2' = map('b'='2')) // comment-out to make work
#a->sort
#a
?>
次のように、一意のキーごとに値のペアを配列に挿入する結果セットがあります。
resultset(2) => {
records => {
if(!$logTypeClasses->contains(field('logTypeClass'))) => {
local(i) = pair(field('logTypeClass'), map('title' = field('logType'), 'class' = field('logTypeClass')))
log_critical(#i)
$logTypeClasses->insert(#i) // Lasso hangs on this line, will return if commented-out
}
}
}
奇妙なことに、なげなわが#i
ぶら下がっていないと、ローカル変数をスレッド変数に挿入できません。エラーが発生することはなく、ページが返されることもありません。無期限にハングするだけです。
ペアが正しくログに記録されていることがわかります。これにより、ペアを生成する構文が正しいと思います。
ペアの値側が値を持つマップでない限り、コードを機能させることができます。つまり、ペアの値側が文字列、または空のマップである場合でも機能します。key=value パラメーターをマップに追加するとすぐに失敗します。
明らかな何かが欠けているに違いありません。ポインタはありますか?お時間をいただき、ご検討いただきありがとうございます。