Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

XSOData POST creates too many local temporary tables

Willem_Pardaens
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi,

I've built 2 xsodata services with a 'create events before' modification exit to autogenerate the ID for an INSERT statement based on a sequence. My implementation is based on this tutorial: https://blogs.sap.com/2015/09/21/how-to-return-generated-value-in-xsodata-using-xsjslib-modification.... This is one of them:

function beforeCreate(param){
    let after = param.afterTableName;
    let pStmt = param.connection.prepareStatement('update "' + after + '" set ID = ID_SEQ.NEXTVAL, DATETIME = CURRENT_TIMESTAMP' );
    pStmt.executeUpdate();
    pStmt.close();
}

My understanding is that every time I do a POST to these services which would trigger the modification exit, it creates a new local temporary table to do the modification on before the data ends up in the 'actual table' linked to the service.

After doing a bit more than 32.000 posts to the services (13.000+ and 19.000+ respectively), they suddenly stop working with an error 500. Executing a standard SQL INSERT statement into the target table still works, so the table is fine, it's just the service which is having a problem. This is the error given:

- POSTMAN error: "Service exception: [132] transaction rolled back due to unavailable resource"

- Trace XS Engine Alerts: "RS_Container mm_container.cc(00090) : MM: exceed max number (32768) of containers."

- Trace XS Engine Executed Statements: "#create local temporary table "#NEW_MarketType140046384061216". Transaction rolled back due to unavailable resource: maximum number of row store containers (32768) exceeded"

I assume that too many local temporary tables have been created by the OData services and now 'the limit' is reached. My 3 questions:

- How can I reset/drop the temporary tables? I read that they should be dropped automatically at the end of the session, but I'm not sure how to 'end' my session? I had a look in "SYS"."M_TEMPORARY_TABLES" but there were only a few (1.100) in there, unrelated to my services.

- What should I change so that the modification exit drops that local table after it used it?

- Are there other/cleaner ways of achieving a POST to an OData service with autogenerated ID's so that they won't need/use any local temp tables? A table without an ID can't be used for a service to my understanding.

My HANA is on version 1.00.112.07.1477423516

Thanks

Willem

  • SAP Managed Tags:
1 REPLY 1

former_member664593
Participant
0 Kudos

Hi Willem.

Did you can resolve your problem? I have the same issue.

  • SAP Managed Tags: