The Olskroken release provides the following improvements to performance.  


swAdmin2: Improved login time and new system requirement

The login time for the swAdmin2 client has been optimized. As part of this change, swAdmin2 users must have .NET 6 installed on their computer. This is a breaking change. If your computer does not already have it installed, the client will prompt you to download it, and redirect you to the Microsoft download page for that purpose.



Server: Entry for long read calls in process

When a long (>60 seconds) call is made, it can potentially affect other system users. To identify such read calls while they are still in process, we have added a "Long call in process" message to the TcpSubServer log that provides the user xID of the account running the long call. Administrators can then investigate and provide suggestions for refining the search. Time is reported in seconds. 



Server: Time limit on Q_GetItems searches

For improved user experience, there is now a 3-minute time limit on QGetItems searches. QGetItems searches are General searches (done against the entire database, as opposed to in a specific item structure or view). It is very rare to come even close to the 3-minute time limit, unless the database is very large (30+ GB), and the search is, for example, for a specific value across ALL attributes in the database. e.g.: 


<Filter><AttributesContains value="61898"/><Not><HasNextVersion/></Not></Filter>


This is almost always not the user's intended/needed search. In addition, these searches affect other users' ability to log in and to work. 


Should one of these searches reach the new time limit, the user will receive the following message: 



The user can then refine their search by adding additional criteria, e.g., Item Type: 


<Filter><ItemTypeEquals sid="RRQ"/><Or><AttributesContains value="61898"/></Or></Filter>


Server administrators can find instances of this in the swServer.log if they wish to investigate such searches.


2023-04-27 07:30:20,105 [5212] INFO - Terminating search, filter: <Filter><Or><AttributesContains value="1"/></Or><Not><HasNextVersion/></Not></Filter>

2023-04-27 07:30:20,105 [5212] INFO - Exception: Your search exceeds the maximum allowed search time of 3 minutes, and has been terminated to avoid affecting other users. Please refine your search further.


Component Graph: Server call removed

A server call has been removed from the ComponentGraph extension view  which will have an overall positive affect on performance for customers using the view. 


Structure tree: Optimized loading of structural parts

The loading of structure trees consisting of structural parts, e.g., a test suite, design signals, etc., has been optimized. The initial loading is faster as a result of only reading the item structure and not the corresponding node structure. If, at some point, the tree needs to read a node when you select an item, it will do it then, as opposed to upfront. 


Example: Test Suite containing 17,011 test cases 

Loading times:

R42: 55.4 seconds

R43: 2.9 seconds


As a result of this optimization, users no longer need to prefix Items with "Item.", e.g., in the structure tree grid and in view configurations. For example, "Item.SID" should now be written as only "SID".

This is a breaking change.


Example: 

Adding Field codes to the tree grid


Note: Because the structure tree is now only loading the item structure, node field codes no longer work in the context of the structure tree.


Example: 

In report configuration: 

<Report>

  <Log>#{Name}, #{SID}, #{Version}</Log>

</Report>


Note: "Item.Name", "Item.SID", etc. still work in the context of a node

<Report>

  <TopNode>

    <ForEachSubNode type="ISSP">

      <ForEachSubNode type="ITEC">

        <Text>#{Item.Name} Test Case status: #{Attribute:PTCS}</Text>

      </ForEachSubNode>

    </ForEachSubNode>

  </TopNode>

</Report>


Structure tree: Optimization when adding part

The updating of a large structure tree that occurs as a result of inserting a new part at the top of the tree is now optimized. This optimization will benefit both the user doing the operation, as well as other active system users.