@@ -391,8 +391,11 @@ aqo_stat_reset(void)
391
391
elog (ERROR , "[AQO] hash table corrupted" );
392
392
num_remove ++ ;
393
393
}
394
+ aqo_state -> stat_changed = true;
394
395
LWLockRelease (& aqo_state -> stat_lock );
395
- Assert (num_remove == num_entries ); /* Is it really impossible? */
396
+
397
+ if (num_remove != num_entries )
398
+ elog (ERROR , "[AQO] Stat memory storage is corrupted or parallel access without a lock was detected." );
396
399
397
400
aqo_stat_flush ();
398
401
@@ -1231,9 +1234,10 @@ aqo_qtexts_reset(void)
1231
1234
}
1232
1235
aqo_state -> qtexts_changed = true;
1233
1236
LWLockRelease (& aqo_state -> qtexts_lock );
1234
- Assert (num_remove == num_entries - 1 ); /* Is it really impossible? */
1237
+ if (num_remove != num_entries - 1 )
1238
+ elog (ERROR , "[AQO] Query texts memory storage is corrupted or parallel access without a lock was detected." );
1235
1239
1236
- /* TODO: clean disk storage */
1240
+ aqo_qtexts_flush ();
1237
1241
1238
1242
return num_remove ;
1239
1243
}
@@ -1439,6 +1443,7 @@ _fill_knn_data(const DataEntry *entry, List **reloids)
1439
1443
ptr += sizeof (double ) * data -> cols ;
1440
1444
}
1441
1445
}
1446
+
1442
1447
/* copy targets from DSM storage */
1443
1448
memcpy (data -> targets , ptr , sizeof (double ) * entry -> rows );
1444
1449
ptr += sizeof (double ) * entry -> rows ;
@@ -1461,7 +1466,11 @@ _fill_knn_data(const DataEntry *entry, List **reloids)
1461
1466
* reloids = lappend_oid (* reloids , ObjectIdGetDatum (* (Oid * )ptr ));
1462
1467
ptr += sizeof (Oid );
1463
1468
}
1464
- Assert (ptr - (char * ) dsa_get_address (data_dsa , entry -> data_dp ) == sz );
1469
+
1470
+ offset = ptr - (char * ) dsa_get_address (data_dsa , entry -> data_dp );
1471
+ if (offset != sz )
1472
+ elog (PANIC , "[AQO] Shared memory ML storage is corrupted." );
1473
+
1465
1474
return data ;
1466
1475
}
1467
1476
@@ -1710,9 +1719,10 @@ aqo_data_reset(void)
1710
1719
}
1711
1720
aqo_state -> data_changed = true;
1712
1721
LWLockRelease (& aqo_state -> data_lock );
1713
- Assert (num_remove == num_entries );
1722
+ if (num_remove != num_entries )
1723
+ elog (ERROR , "[AQO] Query ML memory storage is corrupted or parallel access without a lock has detected." );
1714
1724
1715
- /* TODO: clean disk storage */
1725
+ aqo_data_flush ();
1716
1726
1717
1727
return num_remove ;
1718
1728
}
@@ -1844,8 +1854,11 @@ aqo_queries_reset(void)
1844
1854
elog (ERROR , "[AQO] hash table corrupted" );
1845
1855
num_remove ++ ;
1846
1856
}
1857
+ aqo_state -> queries_changed = true;
1847
1858
LWLockRelease (& aqo_state -> queries_lock );
1848
- Assert (num_remove == num_entries - 1 );
1859
+
1860
+ if (num_remove != num_entries - 1 )
1861
+ elog (ERROR , "[AQO] Queries memory storage is corrupted or parallel access without a lock has detected." );
1849
1862
1850
1863
aqo_queries_flush ();
1851
1864
0 commit comments