BAQ TIMEOUT - what is used

Yesterday, I got great help from this site, (thank you Brandon and Pierre)
and the key suspect in a solution was the BAQ TIMEOUT.

The summary was this

When a BAQ request was OVER 30000 ms (30 secs) an ERROR occurred.
When a BAQ request was UNDER 30000 ms (30 secs)
OR the internal BAQ timeout limit was set to 40000000,
there was NO ERROR.

We confirmed our Epicor application servers* had a
BAQ QueryTimeout set to 500 or set to 0 (unlimited).

  • We have multiple app servers.

We confirmed our MS-SQL Remote Query setting is at 600 seconds.

So neither of these is close to 30 seconds.
So IS there another TIMEOUT setting somewhere?

1 Like

Open the Epicor Administration Console, right-click on the environment generating BAQ timeouts and select Application Server Settings. There, I suggest you enter 3600 for the BAQ timeout setting.

2 Likes

Alex
Thank you for the reply.
And this is the setting i mentioned in my post and is set to 500 or 0
my experienced BAQ timeout was at 30 secs
i am trying to resolve the apparent difference.

0 is bad. Please try with 3600.

Thanks

Zero does not mean ā€œinfiniteā€ for query execution. We prevented this ā€˜defaultā€™ behavior for server process safe and long life reasons.
When you set 0 in queryTimeout config BAQ engine uses ā€œmagicā€ 30 second timeout value.

2 Likes

Not sure if you know this but you can set a timeout value on the BAQ itself.

In the BAQ designer, goto Actions then Execution Settings. By default the timeout parameter is not there, you have to add it. Click on the new button and put Timeout in the setting name and a value.

image

Note: screen shot is from external BAQ but I am pretty sure the normal BAQ is the same.

Brett

4 Likes

If 0 is set on BAQ query timeout (app server settings) then it will be because it is hitting the .Net timeout of 30 seconds. Have a look at this KB0029725.

2 Likes

Except you canā€™t change this on Epicor SaaS since itā€™s in the administratino toolā€¦

Sorry I have no idea what you can or cant do when SaaS. A question for Mark Wonsil???

Some items in the Administration Tool are available directly in the product, like the License Tracker. However, Mark is correct that you do not have access to any of the settings in the .webconfig file.

Separately, if your query is running more than 30 seconds, thereā€™s probably a better way to write the BAQ or a another way to solve the problem youā€™re working on. On prem resources feel infinite and we can get sloppy on our coding. In the old days, we used to work to save bytes in memory (PIC 999 comp-3 anybody?) but then memory got cheaper. And man, do we use memory now.

The bargain with cloud computing is that you control your costs and only get charged for what you use. Epicor SaaS gives you the best of both worlds. They pay the usage fee no matter how much you use. So itā€™s in their right to limit poor coding.

A straight query pulling all of your data from the Parttran or GLjrndtl is not ā€˜poor codingā€™. Itā€™s a poor driver that says ā€˜you can have access to your data when in the cloud, but only 30 seconds of access. If your data grows beyond that, your are out of luckā€™

For the record, 30 seconds is my personal goal to keep my queries under and not an official Epicor Cloud restriction.

Iā€™m running into a similar issue where the Epicor Admin Console, and BAQ Execution Parameters seem to have no affect and a 30 second timeout is applied to my report.

Any other areas to check?

i would look at Paulā€™s note

1 Like

Hi,
Totally right, agree with @PaulMorgan, we had this issue 3 months ago when all first BAQ done during implementation has the timeout error when executing, on SaaS is very simple to modify this time set, follow KB0029725 as said and also, my personal recommendation, try to add a date or any other kind of filter to shorter the execution of each BAQ to get better performance.

Regards,
Mario Mancilla
E10 MT Cloud - v700

1 Like

I had already modified the App Server BAQ Timeout (In the Epicor Admin Console)

I call BAQ with Customization
here is my code call:

session = (Session)this.oTrans.Session;
	    DynamicQueryAdapter qda = new DynamicQueryAdapter(oTrans);
		qda.BOConnect();
		QueryExecutionDataSet qds = qda.GetQueryExecutionParametersByID(BaqID);
		qds.ExecutionParameter.Clear();

can i pass timeout parameter? :thinking: :thinking:
Thank you so much have a nice day :grin: :grin: