I am deploying a change in a table adding multiple fields to it. This PROD table has around 4 million rows to it. Few of the fields being added are foreign keys to another table (e.g. User Identifier). The publish isn't successful and it throws the error:


Connection time out
Connection timed out while contacting 'xxx.xxx.xxx'.
Check your network connection and if the problem persists increase the 'Short operations Timeout' value in Preferences.


Any suggestion on how are we getting to go about this?

Based on what I got from the net, the suggestion is to create another table do the changes from there and then transfer the data in. Because on this case, it took a really long time for OutSystems to deploy the table update (adding the fields) thus reaching a timeout. Although I think that I can't do manual table alteration because OutSystems will not recognize the changes done directly on the table and not thru 1click publish.

One thing we could do is to max up the short timeout settings up to 6000 secs but I am still not confident that the deployment will be finished on time.

Any recommendations how to pull this through?

Hello JC.

Do you really need to change this entity?
What about creating an extension entity to hold the new information?

Cheers.

Eduardo Jauch wrote:

Hello JC.

Do you really need to change this entity?
What about creating an extension entity to hold the new information?

Cheers.

Hi Eduardo,

Thanks for this workaround however, this will entail a lot of change in the application. I didn't actually expected I will get this error in PROD. As much as possible, I would want the solution to push the original eSpace.


Hi JC,

I understand.

The problem, it seems (I think), is that as OutSystems does not insert NULL values in a record, when you add a new attribute to an entity that already has data, the platform will have to "populate" the new attribute with a default value (from attribute or from data type). And if you are adding FKs, it will also index them (if I am not mistaken).

And if your entity has a considerable number of rows, this may lead to problems, as it seems...

I would try to increase the Timeout, as this seems to be only a problem of time... But I may be wrong.
I'll try to ask someone more experienced in these issues to give some insight...

Cheers.

Hi Eduardo,

Thanks for getting my point with small words (typing on a mobile phone lol). At this point, the only thing I can think of is increasing the timeout. Yet I am not sure if it would work. And with that, it is hard to get approval of the business since this is a PROD instance. The unfortunate part is, when the deployment fails, the SQL rollback is at least twice as long. They can't afford downtime that long.

Anyway posted this as well on the support portal.

You did well, as this seems to be a case for the support.

Anyway, if someone else already had to do something like this, I hope they will see this post and bring how they worked this.

I still think that extending a model that is already in production for quite some time should always be done through new entities/extensions, to avoid messing with the data and have this kind of problem.

The new entities would be empty and being extensions, would be a matter of doing a simple join in the places where you need the information.

If you receive a solution/workaround from the support, please, let us know.

Cheers.

Hi Eduardo,

Can't find a resource regarding the maximum value for Database Update Query Timeout. What reasonable big value can I put on this? (Had to check your profile to see if you are from OutSystems to ask this. Lol)

Thanks

Hi,

I'm MVP, but I'm not an OutSystems employee :)

Maybe this will help: https://success.outsystems.com/Support/Enterprise_Customers/Maintenance_and_Operations/Timeouts_Under_the_Hood

For system operations, the sql timeout must be defined in Configuration tool. The problem is that everything will use this as default, and I'm not sure you want to mess with the Production environment...

Cheers