getAllTmGroups is taking too much time to respond

We have recently noticed long delays in getting the translation memory groups. This is how we do it :

var tmManager = this._wsContext.getTmManager();
var results = tmManager.getAllTmGroups()

The call to getAllTmGroups() takes between 30 and 38 seconds, although there's only 91 groups.

In comparison, getting the translation memories is much faster :

var results = tmManager.getAllTms(false);

This only takes less than 1 second to return 114 records.

Is there a reason getAllTmGroups() is taking so much time ? Maybe you could indicate which Oracle tables are involved in the query so our DBA could investigate if it requires some fine-tuning ?

Thank you.

  • Hi,

    Could you do the same test by using any SOAP client tool like Boomerang on Chrome?

    For example, when I do testing using Boomerang on Chrome by sending the request to both getAllTmGroups() and getTms2(), the responses are as below.

    getAllTmGroups(): 300KB / 434ms.
    getTms2(true): 525KB / 785ms.
    getTms2(false): 223KB / 458ms.

    I did some tries, but the results were similar.
    It did not show the getAllTmGroups() was particularly slower than the others.

    I think using the SOAP client tool can simplify the test and separate a bottleneck element. Could you try like this?
    In addition to that, it might depend on the version of your WorldServer. Which version are you using?

    Best,
    Taiki
  • Hi,

    Thanks for replying.


    How do you actually call these methods from a SOAP client ? From Postman I was only able to call the REST API like this :

    `http://our-server/ws-api/v1/tms?token=1021239178`

    This returns all tms (and it is very fast) but I don't see how to call the groups. Besides it is not what we call from our C# application (see code in first post).


    Can you help on this ?

    We are using WS 11.3.0.4589.

     

    [EDIT] 

    I have noticed in the translation memories results there is a property called implicit". It seems that it is set to false for groups and true when it is not a group. Correct ? 

    If so, I guess I could call the REST API instead of using the SDK to retrieve the translation memories because it is much faster.   

    However how come it is so slow with the SDK  ?

  • I am using Boomerang in Chrome instead of Postman for testing SOAP APIs. I can find articles on the Internet how to use Postman with SOAP though.

    The WSDL of TM Manager is here in your WorldServer.

    /ws-legacy/services/TmWSTmManager?wsdl

    Once you have created a configuration of the call to this endpoint in Boomerang and specified a user token, and then call it, it must return the list of the TM groups. It also shows the size of the response and duration of the roundtrip which can use to compare the performance with the run in C#. 

    The 'implicit' value in the response of the REST call is, yes, if it is false, it is a TM sequence.

    I checked the release notes from 11.3.0 to the latest, but it seems there are no changes regarding this performance. 

  • Ok, I use WCF Storm for calling Soap services. I didn't know there was a wsdl at this URL, thank you.

    Now, when I call getAllTmGroups from WCFStorm, this is the output that I get :


    INFO : 19-02-27 08.28.18.42 : New proxy created for endpoint TmWSTmManager
    INFO : 19-02-27 08.28.18.42 : Using binding : TmWSTmManagerSoapBinding at address : my-server/.../TmWSTmManager
    INFO : 19-02-27 08.28.18.42 : Invoking getAllTmGroups
    INFO : 19-02-27 08.28.53.62 : Elapsed : 35.2022462 sec
    ERROR : 19-02-27 08.28.53.64 : Cannot assign object of type System.String[] to an object of type System.String.


    As you can see, I get an error, although when I call the SDK method directly, it works - but it takes about the same amount of time.

    I don't know why I have this error, but in any case you can see it took 35s to return. Whereas with the REST service, it takes less than 1s to return all the tms.