障害のある更新のためのソリューションに大きな睡眠時間がありますか?
-
09-12-2019 - |
質問
農場上の解決策の更新に問題があります。そのため、いくつかの機能を変更し、2つの機能を追加しました。主な変化は解決策の主な特徴に対して行われました。
テストクラウドではうまくいきます。私たちのテスト環境では、最初にうまく機能しますが、再展開後、それ以上働いていません。更新された機能は完全にインストールされていませんでした。これは顧客環境でも起こり、他のテスト展開は同じ問題を抱えています。
だから我々が提供した更新スクリプトを変更しました。この時点で、update-spsolutionコマンドとデプロイされた機能のすべての機能のアップグレードの間のスリープ時間があります。 20秒から5分まで睡眠時間を上げた。
新しいアップデートが正常に発生しましたが、古い状態を再作成し、古い更新ファイルを使って解決策をもう一度インストールしましたが、これは大丈夫です.-)。 (ええ、悪い状況はあります)
重要なアップデートプロセスはこのように見えます:
Update-SPSolution -LiteralPath $wspFile -Identity $fileName -Force -GACDeployment -ErrorAction:Stop -ErrorVariable:updateError -Confirm:$false
Start-Sleep -Seconds $sleep
$site = Get-SPSite $SiteUrl
$siteFeatureToUpgrade = $site.QueryFeatures("Site", $true);
foreach($f in $siteFeatureToUpgrade)
{
$f.Upgrade($false);
}
.
スリープの値は20回20回300回、この睡眠時間は更新の問題を解決することができますか?私はそうは思わない。
ありがとうございました。
解決
Update-SPSolution
呼び出しは非同期です。より正確には、このコマンドは最終的に実行されるタイマージョブのみを作成します。
この関数を使用して、ジョブの実行終了を待つことができます。
function Wait-SPSolutionDeploymentJobToFinish
{
param
(
[Parameter(Mandatory=$true)]
[string]$SolutionFileName
)
process {
$JobName = "*solution-deployment*$SolutionFileName*"
$job = Get-SPTimerJob | ?{ $_.Name -like $JobName }
if ($job -eq $null)
{
Write-Host 'Timer job not found'
}
else
{
$JobFullName = $job.Name
Write-Host -NoNewLine "Waiting to finish job $JobFullName"
while ((Get-SPTimerJob $JobFullName) -ne $null)
{
Write-Host -NoNewLine .
Start-Sleep -Seconds 2
}
Write-Host "Finished waiting for job.."
}
}
}
Update-SPSolution -LiteralPath $wspFile -Identity $fileName -Force -GACDeployment -ErrorAction:Stop -ErrorVariable:updateError -Confirm:$false
#Start-Sleep -Seconds $sleep
Wait-SPSolutionDeploymentJobToFinish $fileName
$site = Get-SPSite $SiteUrl
$siteFeatureToUpgrade = $site.QueryFeatures("Site", $true);
foreach($f in $siteFeatureToUpgrade)
{
$f.Upgrade($false);
}
. 所属していません sharepoint.stackexchange