Question & Answer
Question
What is the CDT and memory limitation? Or the cause for error - java.lang.NoSuchMethodException
Cause
Default Memory parameters.
Answer
CDT defines a maximum memory to operate. Based on the number of records in a table it calculates the approximate memory which will be used for comparison of records. If the memory exceeds the 'maximum memory' then instead of doing the comparisons in-memory, CDT will serialize the records (in small buckets) and then compare them.
For abstract tables, this serialization does not work because we have an impl object which does not have a concrete table, rather the 'tableName' is the abstract table. Due to this, while serializing the impl object, the system gets the table name as 'yfs_pla_zone_set' (abstract) and hence gives error while accessing methods which are not present in the abstract db home.
Based on the memory calculations, it turns out that 10240 is the number of records, when CDT will go for serialization rather than in-memory comparison.
For making it work we will to have to increase the 'maximum memory' value so that instead of serialized comparison, 'in-memory' comparisons are done for this abstract table records. The default value of the below property is (10*1024*1024). We can set it to twice as follows in customer_overrides.properties.
yfs.cdt.bucket.maxBytes=20971520
Was this topic helpful?
Document Information
Modified date:
16 June 2018
UID
swg21616275