0

を使用して、クラスター化された ML 4.2.9 サーバーでXDBCサーバー構成を更新しています。

admin:appserver-set-max-time-limit($config,$id,$maxTimeLimit )
admin:save-configuration-without-restart()

ただし、この構成を設定した後、MarkLogic はこの変更を保持する 2 つの方法を指定します。

  1. admin:save-configuration-without-restart()
  2. admin:保存構成()

1 については、ML のドキュメントには、「この関数を使用して、サーバーの再起動が必要な変更 (App Server のポート割り当ての変更などの「コールド」変更) を保存した場合、次回 MarkLogic サーバーが再起動するまで変更は有効になりません。 (ただし、それらは構成に保存されます)"

admin:appserver-set-max-time-limit寒い変化なのか暑い変化なのか、誰か教えてください。つまり、使用する場合、変更はできるだけ早く有効になりますadmin:save-configuration-without-restart()(使用する予定です)。それ以外の場合は、サーバーのダウンタイムを考慮できるように、これらの変更を計画されたアクティビティとして展開する必要があります。

ありがとう

4

3 に答える 3

2

熱い変化です。これは管理 UI で確認できます。「最大時間制限」の横にアスタリスク (*) がありません。

しかし、あなたのコードはおかしく見えます。それが機能していない理由だと思います。http://docs.marklogic.com/5.0doc/docapp.xqy#display.xqy?fname=http://pubs/5.0doc/apidoc/admin.xml&category=Admin+Library&function=adminの例をもう一度見てください。:再起動せずに設定を保存

let $config := admin:get-configuration()
let $spec := admin:forest-set-enabled($config, 
  xdmp:forest("myForest"), fn:true() )
return
  admin:save-configuration-without-restart($spec)

コードに admin:save-configuration-without-restart() の引数がないため、何もしません。さらに、構成の新しいバージョンを保存することが重要です。通常、XQuery 変数は不変であるため、サンプルでは新しい変数を使用してこれを行います。同じ変数名をリサイクルすることもできますが、これは変更ではなく再利用であることを理解することが重要です。

let $config := admin:get-configuration()
let $config := admin:forest-set-enabled($config,
  xdmp:forest("myForest"), fn:true() )
return
  admin:save-configuration-without-restart($config)

または、これは私が通常行っていることに近く、xdmp:set突然変異に使用します。私はxdmp:setほとんどのアプリケーション コードでは使用しませんが、デプロイの利点は可変性を導入する欠点を上回ります。

declare variable $CFG := admin:get-configuration() ;

xdmp:set(
  $CFG, admin:forest-set-enabled($CFG, xdmp:forest("myForest"), fn:true())
,
admin:save-configuration-without-restart($CFG)

これをテストする 1 つの方法は、管理 UI を確認することです。再起動の有無にかかわらず、変更が反映されない場合は、コードに問題があります。

于 2012-09-03T18:20:59.573 に答える
0

@mblakeleこれが私が使用した実際のコードです

xquery version "1.0-ml"; 

import module namespace admin = "http://marklogic.com/xdmp/admin" 
          at "/MarkLogic/admin.xqy";

declare variable $maxTimeLimit := 60;
declare variable $defaultTimeLimit := 60;

if ($defaultTimeLimit<=$maxTimeLimit) 
then ( 
    let $config := admin:get-configuration()
    let $groupid := admin:group-get-id($config, "Default")
    let $ids:= admin:group-get-xdbcserver-ids($config, $groupid)
    return (
            for $id in $ids 
                        return 
            let $new_config := admin:appserver-set-max-time-limit($config,$id,$maxTimeLimit )
                let $final_config := admin:appserver-set-default-time-limit($new_config,$id,$defaultTimeLimit )
                return admin:save-configuration-without-restart($final_config)

))
else ()

これは私にとってトリックであり、管理UIで、タイムアウト値が更新されていることがわかります。しかし、通常60秒以上かかる別のXQueryを実行しても、タイムアウトにはなりません。理由は何ですか?また、http://docs.marklogic.com/5.0doc/docapp.xqy#display.xqy?fname = http://pubs/5.0doc/apidoc/admin.xml&category=Admin+Library&function=admin:saveの例-configuration-without-restartは、admin:forest-set-enabled($config,xdmp:forest("myForest"), fn:true() )

admin:forest-set-enabledを呼び出すことは本当に必要ですか?私が見ることができるように、構成の変更は保存されます(それらは効果的ではありませんが)

于 2012-09-04T08:59:43.397 に答える