@@ -224,6 +224,21 @@ bool _db_get_log_ranges(uint32_t tick, LogRangesPerTxInTick &logRange) {
224224 if (!val) {
225225 return false ;
226226 }
227+ if (sizeof (LogRangesPerTxInTick) - val->size () == 16 ) // oracle machine logging mismatches
228+ {
229+ struct {
230+ long long fromLogId[1024 +5 ];
231+ long long length[1024 +5 ];
232+ } old_struct;
233+ memcpy (&old_struct, val->data (), val->size ());
234+ memset (&logRange, 0 , sizeof (logRange));
235+ for (int i = 0 ; i < 1024 +5 ; i++)
236+ {
237+ logRange.fromLogId [i] = old_struct.fromLogId [i];
238+ logRange.length [i] = old_struct.length [i];
239+ }
240+ return true ;
241+ }
227242 if (val->size () != sizeof (LogRangesPerTxInTick)) {
228243 Logger::get ()->warn (" LogRange size mismatch for key {}: got {}, expected {}" ,
229244 key.c_str (), val->size (), sizeof (LogRangesPerTxInTick));
@@ -1509,7 +1524,21 @@ bool db_get_cLogRange_from_kvrocks(uint32_t tick, LogRangesPerTxInTick& outLogRa
15091524 ZSTD_getErrorName (dSize));
15101525 return false ;
15111526 }
1512-
1527+ if (dstSize - dSize == 16 ) // oracle machine logging mismatches
1528+ {
1529+ struct {
1530+ long long fromLogId[1024 +5 ];
1531+ long long length[1024 +5 ];
1532+ } old_struct;
1533+ memcpy (&old_struct, &outLogRange, dSize);
1534+ memset (&outLogRange, 0 , sizeof (outLogRange));
1535+ for (int i = 0 ; i < 1024 +5 ; i++)
1536+ {
1537+ outLogRange.fromLogId [i] = old_struct.fromLogId [i];
1538+ outLogRange.length [i] = old_struct.length [i];
1539+ }
1540+ return true ;
1541+ }
15131542 if (dSize != dstSize) {
15141543 Logger::get ()->warn (" Decompressed ResponseAllLogIdRangesFromTick size mismatch for key {}: got {}, expected {}" ,
15151544 key.c_str (), dSize, dstSize);
0 commit comments