CCS PowerShell Search-Assets cmdlet timing out after 1 minute
search cancel

CCS PowerShell Search-Assets cmdlet timing out after 1 minute

book

Article ID: 235068

calendar_today

Updated On:

Products

Control Compliance Suite Standards Server Control Compliance Suite

Issue/Introduction

The Search-Assets cmdlet in CCS 12.x has been timing out after 1 minute.

ERROR:

ps>$a = Search-Assets -AppServerNameAndPort "localhost:1431" -ContainerPath "Asset System\Assets - Windows Servers"

Search-Assets : This request operation sent to net.tcp://localhost:1431/CCS/Services/Applications/AssetSystem/IAssetService/WindowsSecurity did not receive a reply within the configured timeout (00:01:00). The time allotted to this operation may have been a portion of a longer timeout. This may be because the service is still processing the operation or because the service was unable to send a reply message. 
Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service can connect to the client.
At line:1 char:6
+ $a = Search-Assets -AppServerNameAndPort "localhost:1431" -ContainerPath 
"Asset ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~
+ CategoryInfo : InvalidOperation: 
(System.TimeoutE...ProcessRecord():TimeoutException 
) [Search-Assets], TimeoutException
+ FullyQualifiedErrorId : SearchAsset,Symantec.CSM.PS.Assets.SearchAssets

Cause

To much data to be returned within the 1 minute allotment.

Or performance/resources may be causing issue.

Resolution

To resolve the problem, Update the file named
'Symantec.CSM.PS.Framework.dll.config' which is located in "C:\Program Files
(x86)\Symantec\CCS\PowerShell Snap-ins" by either replacing it with the enclosed
copy or manually updating the existing file with the desired values.

Configurable Binding settings are found in this section of the document.  The
enclosed file has "SendTimeout" with a value of "2" which will time out after 2
minutes instead of 1.  In our test environment with 4k assets the powershell
query finished succssfully in under 2 minutes.  Keep in mind that as the number
of assets grows it may become necessary to increase the timeout value to a
larger value.

<!-- NETTCP/HTTP/HTTPS Common Configurable Properties-->

        <add key="CloseTimeout" value="1"/>
        <add key="ReceiveTimeout" value="10"/>
        <add key="OpenTimeout" value="1"/>
        <add key="SendTimeout" value="2"/>
        <add key="MaxReceivedMessageSize" value="2147483647"/>
        <add key="MaxBufferPoolSize" value="2147483647"/>


Note:
Config is loaded at DLL loading so for any changes to take effect you should close current Powershell window to unload DLL and restart powershell for DLLs to load again.

If performance is a being impacted you may need to increase each of the timeout values e.g.

        <add key="CloseTimeout" value="30"/>
        <add key="ReceiveTimeout" value="60"/>
        <add key="OpenTimeout" value="30"/>
        <add key="SendTimeout" value="30"/>

Additional Information

Timeout configuration has already been provisioned. It is in <<CCS Installation Directory>>\PowerShell Snap-ins\Symantec.CSM.PS.Framework.dll.config 
Like with any binding there are 4 timeouts
1. OpenTimeout
2. CloseTimeout
3. SendTimeout
4. ReceiveTimeout

First three are set to 1 minute each and ReceiveTimeout is set to 10 minutes.
Open and Close are really small operations and 1 minute is sufficiently large 
value for OpenTimeout and CloseTimeout. ReceiveTimeout is set to 10 minutes 
and is not responsible for the issue we are currently facing. SendTimeout is 
causing the issue. Changing this value to 2 minutes (or more) solves the issue.