Check firebird.log [no messages found for interval when this test was running]
Jump to: output_first_mismatch    outcomes_full_history    elapsed_time_chart
Show cross-report outcomes.

Annotation type Annotation details
2 @message
assert   
    checked_mode: table, STDLOG: Records affected: 10
    checked_mode: table, STDLOG: ID
    checked_mode: table, STDLOG:
    checked_mode: table, STDLOG: -140
    checked_mode: table, STDLOG: -130
    checked_mode: table, STDLOG: -120
    checked_mode: table, STDLOG: -110
    checked_mode: table, STDLOG: -2
    checked_mode: table, STDLOG: -1
    checked_mode: table, STDLOG: 11
    checked_mode: table, STDLOG: 12
    checked_mode: table, STDLOG: 13
    checked_mode: table, STDLOG: 14
    checked_mode: table, STDLOG: Records affected: 10
    checked_mode: table, STDLOG: OLD_ID OP SNAP_NO_RANK
    checked_mode: table, STDLOG:
  - checked_mode: table, STDLOG: 1 UPD 1
  + checked_mode: table, STDLOG: 1UPD 1
  - checked_mode: table, STDLOG: -14 UPD 2
  + checked_mode: table, STDLOG: -14UPD 2
  - checked_mode: table, STDLOG: -13 UPD 2
  + checked_mode: table, STDLOG: -13UPD 2
  - checked_mode: table, STDLOG: -12 UPD 2
  + checked_mode: table, STDLOG: -12UPD 2
  - checked_mode: table, STDLOG: -11 UPD 2
  + checked_mode: table, STDLOG: -11UPD 2
  - checked_mode: table, STDLOG: 1 UPD 2
  + checked_mode: table, STDLOG: 1UPD 2
  - checked_mode: table, STDLOG: 2 UPD 2
  + checked_mode: table, STDLOG: 2UPD 2
  - checked_mode: table, STDLOG: 110 UPD 2
  + checked_mode: table, STDLOG: 110UPD 2
  - checked_mode: table, STDLOG: 120 UPD 2
  + checked_mode: table, STDLOG: 120UPD 2
  - checked_mode: table, STDLOG: 130 UPD 2
  + checked_mode: table, STDLOG: 130UPD 2
  - checked_mode: table, STDLOG: 140 UPD 2
  + checked_mode: table, STDLOG: 140UPD 2
    checked_mode: table, STDLOG: Records affected: 11

LOG DETAILS:

2025-07-01 06:05:11.342
2025-07-01 06:05:11.347 act = <firebird.qa.plugin.Action object at [hex]>
2025-07-01 06:05:11.351 fn_worker_sql = PosixPath('/var/tmp/qa_2024/test_12486/tmp_worker.sql')
2025-07-01 06:05:11.356 fn_worker_log = PosixPath('/var/tmp/qa_2024/test_12486/tmp_worker.log')
2025-07-01 06:05:11.360 fn_worker_err = PosixPath('/var/tmp/qa_2024/test_12486/tmp_worker.err')
2025-07-01 06:05:11.365 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2025-07-01 06:05:11.369
2025-07-01 06:05:11.374 @pytest.mark.trace
2025-07-01 06:05:11.378 @pytest.mark.version('>=4.0.2')
2025-07-01 06:05:11.383 def test_1(act: Action, fn_worker_sql: Path, fn_worker_log: Path, fn_worker_err: Path, capsys):
2025-07-01 06:05:11.387 sql_init = (act.files_dir / 'read-consist-sttm-restart-DDL.sql').read_text()
2025-07-01 06:05:11.392
2025-07-01 06:05:11.397 for checked_mode in('table', 'view'):
2025-07-01 06:05:11.401 target_obj = 'test' if checked_mode == 'table' else 'v_test'
2025-07-01 06:05:11.406
2025-07-01 06:05:11.410 SQL_TO_BE_RESTARTED = f"update /* {SQL_TAG_THAT_WE_WAITING_FOR} */ {target_obj} set id = -id order by id ROWS 10"
2025-07-01 06:05:11.415
2025-07-01 06:05:11.419 # add rows with ID = 1, 2:
2025-07-01 06:05:11.424 sql_addi = f'''
2025-07-01 06:05:11.428 set term ^;
2025-07-01 06:05:11.433 execute block as
2025-07-01 06:05:11.437 begin
2025-07-01 06:05:11.442 rdb$set_context('USER_SESSION', 'WHO', 'INIT_DATA');
2025-07-01 06:05:11.447 end
2025-07-01 06:05:11.455 ^
2025-07-01 06:05:11.463 set term ;^
2025-07-01 06:05:11.472 insert into {target_obj}(id, x) select row_number()over(),row_number()over() from rdb$types rows 2;
2025-07-01 06:05:11.479 commit;
2025-07-01 06:05:11.484 '''
2025-07-01 06:05:11.489
2025-07-01 06:05:11.494 act.isql(switches=['-q'], input = ''.join( (sql_init, sql_addi) ) )
2025-07-01 06:05:11.499 # ::: NOTE ::: We have to immediately quit if any error raised in prepare phase.
2025-07-01 06:05:11.504 # See also letter from dimitr, 01-feb-2022 14:46
2025-07-01 06:05:11.509 assert act.stderr == ''
2025-07-01 06:05:11.515 act.reset()
2025-07-01 06:05:11.520
2025-07-01 06:05:11.525 trace_cfg_items = [
2025-07-01 06:05:11.530 'time_threshold = 0',
2025-07-01 06:05:11.535 'log_errors = true',
2025-07-01 06:05:11.540 'log_statement_start = true',
2025-07-01 06:05:11.544 'log_statement_finish = true',
2025-07-01 06:05:11.549 ]
2025-07-01 06:05:11.554
2025-07-01 06:05:11.560 with act.trace(db_events = trace_cfg_items, encoding=locale.getpreferredencoding()):
2025-07-01 06:05:11.566
2025-07-01 06:05:11.573 with act.db.connect() as con_lock_1, act.db.connect() as con_lock_2, act.db.connect() as con_monitoring:
2025-07-01 06:05:11.580
2025-07-01 06:05:11.585 tpb_monitoring = tpb(isolation=Isolation.READ_COMMITTED_RECORD_VERSION, lock_timeout=0)
2025-07-01 06:05:11.590 tx_monitoring = con_monitoring.transaction_manager(tpb_monitoring)
2025-07-01 06:05:11.595 cur_monitoring = tx_monitoring.cursor()
2025-07-01 06:05:11.600
2025-07-01 06:05:11.605 for i,c in enumerate((con_lock_1,con_lock_2)):
2025-07-01 06:05:11.613 sttm = f"execute block as begin rdb$set_context('USER_SESSION', 'WHO', 'LOCKER #{i+1}'); end"
2025-07-01 06:05:11.620 c.execute_immediate(sttm)
2025-07-01 06:05:11.625
2025-07-01 06:05:11.631 #########################
2025-07-01 06:05:11.638 ###  L O C K E R - 1  ###
2025-07-01 06:05:11.645 #########################
2025-07-01 06:05:11.651
2025-07-01 06:05:11.657 con_lock_1.execute_immediate( f'update /* LOCKER-1 */ {target_obj} set id=id where id = 2' )
2025-07-01 06:05:11.662
2025-07-01 06:05:11.673 worker_sql = f'''
2025-07-01 06:05:11.683 set list on;
2025-07-01 06:05:11.691 set autoddl off;
2025-07-01 06:05:11.698 set term ^;
2025-07-01 06:05:11.709 execute block returns (whoami varchar(30)) as
2025-07-01 06:05:11.722 begin
2025-07-01 06:05:11.731 whoami = 'WORKER'; -- , ATT#' || current_connection;
2025-07-01 06:05:11.738 rdb$set_context('USER_SESSION','WHO', whoami);
2025-07-01 06:05:11.745 -- suspend;
2025-07-01 06:05:11.750 end
2025-07-01 06:05:11.756 ^
2025-07-01 06:05:11.761 set term ;^
2025-07-01 06:05:11.774 commit;
2025-07-01 06:05:11.785 SET KEEP_TRAN_PARAMS ON;
2025-07-01 06:05:11.796 set transaction read committed read consistency;
2025-07-01 06:05:11.810 set list off;
2025-07-01 06:05:11.820 set wng off;
2025-07-01 06:05:11.831 set count on;
2025-07-01 06:05:11.844
2025-07-01 06:05:11.854 -- WORKER. THIS MUST BE LOCKED NOW BY LOCKER_i:
2025-07-01 06:05:11.863 {SQL_TO_BE_RESTARTED};
2025-07-01 06:05:11.872
2025-07-01 06:05:11.884 -- check results:
2025-07-01 06:05:11.892 -- ###############
2025-07-01 06:05:11.902 select id from {target_obj} order by id; -- this will produce output only after all lockers do their commit/rollback
2025-07-01 06:05:11.909
2025-07-01 06:05:11.915 select v.old_id, v.op, v.snap_no_rank from v_worker_log v where v.op = 'upd';
2025-07-01 06:05:11.922
2025-07-01 06:05:11.934 set width who 10;
2025-07-01 06:05:11.943 -- DO NOT check this! Values can differ here from one run to another!
2025-07-01 06:05:11.949 -- select id, trn, who, old_id, new_id, op, rec_vers, global_cn, snap_no from tlog_done order by id;
2025-07-01 06:05:11.954
2025-07-01 06:05:11.959 rollback;
2025-07-01 06:05:11.964
2025-07-01 06:05:11.968 '''
2025-07-01 06:05:11.973
2025-07-01 06:05:11.979 fn_worker_sql.write_text(worker_sql)
2025-07-01 06:05:11.985
2025-07-01 06:05:11.991 with fn_worker_log.open(mode='w') as hang_out, fn_worker_err.open(mode='w') as hang_err:
2025-07-01 06:05:11.997
2025-07-01 06:05:12.004 ############################################################################
2025-07-01 06:05:12.011 ###  L A U N C H     W O R K E R    U S I N G     I S Q L,   A S Y N C.  ###
2025-07-01 06:05:12.019 ############################################################################
2025-07-01 06:05:12.026 p_worker = subprocess.Popen([act.vars['isql'], '-i', str(fn_worker_sql),
2025-07-01 06:05:12.034 '-user', act.db.user,
2025-07-01 06:05:12.041 '-password', act.db.password,
2025-07-01 06:05:12.049 '-pag', '999999',
2025-07-01 06:05:12.057 act.db.dsn
2025-07-01 06:05:12.064 ],
2025-07-01 06:05:12.071 stdout = hang_out,
2025-07-01 06:05:12.078 stderr = hang_err
2025-07-01 06:05:12.085 )
2025-07-01 06:05:12.097 # NB: when ISQL will establish attach, first record that it must lock is ID = 1 -- see above SQL_TO_BE_RESTARTED
2025-07-01 06:05:12.107 # We must to ensure that this (worker) attachment has been really created and LOCKS this record:
2025-07-01 06:05:12.114 #
2025-07-01 06:05:12.120 wait_for_record_become_locked(tx_monitoring, cur_monitoring, f'update {target_obj} set id=id where id=1', SQL_TAG_THAT_WE_WAITING_FOR)
2025-07-01 06:05:12.125
2025-07-01 06:05:12.130
2025-07-01 06:05:12.135 #########################
2025-07-01 06:05:12.140 ###  L O C K E R - 2  ###
2025-07-01 06:05:12.146 #########################
2025-07-01 06:05:12.153 con_lock_2.execute_immediate( f'insert /* LOCKER-2 */ into {target_obj}(id) values(110)' )
2025-07-01 06:05:12.166 con_lock_2.execute_immediate( f'insert /* LOCKER-2 */ into {target_obj}(id) values(-11)' )
2025-07-01 06:05:12.174 con_lock_2.commit()
2025-07-01 06:05:12.182 con_lock_2.execute_immediate( f'update /* LOCKER-2 */ {target_obj} set id=id where id = 110' )
2025-07-01 06:05:12.189 con_lock_2.execute_immediate( f'update /* LOCKER-2 */ {target_obj} set id=id where id = -11' )
2025-07-01 06:05:12.195
2025-07-01 06:05:12.207 #########################
2025-07-01 06:05:12.217 ###  L O C K E R - 1  ###
2025-07-01 06:05:12.226 #########################
2025-07-01 06:05:12.235 con_lock_1.commit() # releases record with ID = 2 ==> now it can be locked by worker.
2025-07-01 06:05:12.245
2025-07-01 06:05:12.259 # We have to WAIT HERE until worker will actually 'catch' just released record with ID = 2.
2025-07-01 06:05:12.268 #
2025-07-01 06:05:12.276 wait_for_record_become_locked(tx_monitoring, cur_monitoring, f'update {target_obj} set id=id where id=2', SQL_TAG_THAT_WE_WAITING_FOR)
2025-07-01 06:05:12.284 # If we come here then it means that record with ID = 2 for sure is locked by WORKER.
2025-07-01 06:05:12.292
2025-07-01 06:05:12.300 con_lock_1.execute_immediate( f'insert /* LOCKER-1 */ into {target_obj}(id) values(120)' )
2025-07-01 06:05:12.308 con_lock_1.execute_immediate( f'insert /* LOCKER-1 */ into {target_obj}(id) values(-12)' )
2025-07-01 06:05:12.317 con_lock_1.commit()
2025-07-01 06:05:12.330 con_lock_1.execute_immediate( f'update /* LOCKER-1 */ {target_obj} set id=id where id = 120' )
2025-07-01 06:05:12.341 con_lock_1.execute_immediate( f'update /* LOCKER-1 */ {target_obj} set id=id where id = -12' )
2025-07-01 06:05:12.353
2025-07-01 06:05:12.364
2025-07-01 06:05:12.373 #########################
2025-07-01 06:05:12.381 ###  L O C K E R - 2  ###
2025-07-01 06:05:12.388 #########################
2025-07-01 06:05:12.394 con_lock_2.commit() # releases TWO records with ID = -11 and 110.
2025-07-01 06:05:12.400
2025-07-01 06:05:12.407 # We have to WAIT HERE until worker will actually 'catch' just released records, in the order of its cursor: first with ID = -11, then with ID = 110.
2025-07-01 06:05:12.413 #
2025-07-01 06:05:12.419 wait_for_record_become_locked(tx_monitoring, cur_monitoring, f'update {target_obj} set id=id where id = 110', SQL_TAG_THAT_WE_WAITING_FOR)
2025-07-01 06:05:12.427 # If we come here then it means that TWO records with ID = -11 and 110 for sure are locked by WORKER.
2025-07-01 06:05:12.440
2025-07-01 06:05:12.448
2025-07-01 06:05:12.462 con_lock_2.execute_immediate( f'insert into /* LOCKER-2 */ {target_obj}(id) values(130)' )
2025-07-01 06:05:12.471 con_lock_2.execute_immediate( f'insert into /* LOCKER-2 */ {target_obj}(id) values(-13)' )
2025-07-01 06:05:12.480 con_lock_2.commit()
2025-07-01 06:05:12.488 con_lock_2.execute_immediate( f'update /* LOCKER-2 */ {target_obj} set id=id where id = 130' )
2025-07-01 06:05:12.495 con_lock_2.execute_immediate( f'update /* LOCKER-2 */ {target_obj} set id=id where id = -13' )
2025-07-01 06:05:12.502
2025-07-01 06:05:12.509 #########################
2025-07-01 06:05:12.515 ###  L O C K E R - 1  ###
2025-07-01 06:05:12.522 #########################
2025-07-01 06:05:12.533 con_lock_1.commit() # releases TWO records with ID = -12 and 120.
2025-07-01 06:05:12.540
2025-07-01 06:05:12.546 # We have to WAIT HERE until worker will actually 'catch' just released records, in the order of its cursor: first with ID = -12, then with ID = 120.
2025-07-01 06:05:12.551 #
2025-07-01 06:05:12.557 wait_for_record_become_locked(tx_monitoring, cur_monitoring, f'update {target_obj} set id=id where id = 120', SQL_TAG_THAT_WE_WAITING_FOR)
2025-07-01 06:05:12.565 # If we come here then it means that TWO records with ID = -12 and 120 for sure are locked by WORKER.
2025-07-01 06:05:12.571
2025-07-01 06:05:12.577
2025-07-01 06:05:12.584 con_lock_1.execute_immediate( f'insert /* LOCKER-1 */ into {target_obj}(id) values(140)' )
2025-07-01 06:05:12.592 con_lock_1.execute_immediate( f'insert /* LOCKER-1 */ into {target_obj}(id) values(-14)' )
2025-07-01 06:05:12.599 con_lock_1.commit()
2025-07-01 06:05:12.611 con_lock_1.execute_immediate( f'update /* LOCKER-1 */ {target_obj} set id=id where id = 140' )
2025-07-01 06:05:12.626 con_lock_1.execute_immediate( f'update /* LOCKER-1 */ {target_obj} set id=id where id = -14' )
2025-07-01 06:05:12.637
2025-07-01 06:05:12.645 #########################
2025-07-01 06:05:12.652 ###  L O C K E R - 2  ###
2025-07-01 06:05:12.658 #########################
2025-07-01 06:05:12.664 con_lock_2.commit()
2025-07-01 06:05:12.670
2025-07-01 06:05:12.676 # We have to WAIT HERE until worker will actually 'catch' just released records, in the order of its cursor: first with ID = -13, then with ID = 130.
2025-07-01 06:05:12.683 #
2025-07-01 06:05:12.690 wait_for_record_become_locked(tx_monitoring, cur_monitoring, f'update {target_obj} set id=id where id = 130', SQL_TAG_THAT_WE_WAITING_FOR)
2025-07-01 06:05:12.701 # If we come here then it means that TWO records with ID = -13 and 130 for sure are locked by WORKER.
2025-07-01 06:05:12.709
2025-07-01 06:05:12.715 #########################
2025-07-01 06:05:12.722 ###  L O C K E R - 1  ###
2025-07-01 06:05:12.728 #########################
2025-07-01 06:05:12.735 con_lock_1.commit() # WORKER will complete his job after this
2025-07-01 06:05:12.743
2025-07-01 06:05:12.754
2025-07-01 06:05:12.762 # Here we wait for ISQL complete its mission:
2025-07-01 06:05:12.769 p_worker.wait()
2025-07-01 06:05:12.776
2025-07-01 06:05:12.783 #< with act.db.connect()
2025-07-01 06:05:12.791
2025-07-01 06:05:12.803 for g in (fn_worker_log, fn_worker_err):
2025-07-01 06:05:12.814 with g.open() as f:
2025-07-01 06:05:12.825 for line in f:
2025-07-01 06:05:12.835 if line.split():
2025-07-01 06:05:12.844 if g == fn_worker_log:
2025-07-01 06:05:12.855 print(f'checked_mode: {checked_mode}, STDLOG: {line}')
2025-07-01 06:05:12.864 else:
2025-07-01 06:05:12.872 print(f'UNEXPECTED STDERR {line}')
2025-07-01 06:05:12.878
2025-07-01 06:05:12.884 expected_stdout_worker = f"""
2025-07-01 06:05:12.890 checked_mode: {checked_mode}, STDLOG: Records affected: 10
2025-07-01 06:05:12.897 checked_mode: {checked_mode}, STDLOG: ID
2025-07-01 06:05:12.905 checked_mode: {checked_mode}, STDLOG:
2025-07-01 06:05:12.912 checked_mode: {checked_mode}, STDLOG: -140
2025-07-01 06:05:12.925 checked_mode: {checked_mode}, STDLOG: -130
2025-07-01 06:05:12.933 checked_mode: {checked_mode}, STDLOG: -120
2025-07-01 06:05:12.939 checked_mode: {checked_mode}, STDLOG: -110
2025-07-01 06:05:12.945 checked_mode: {checked_mode}, STDLOG: -2
2025-07-01 06:05:12.950 checked_mode: {checked_mode}, STDLOG: -1
2025-07-01 06:05:12.955 checked_mode: {checked_mode}, STDLOG: 11
2025-07-01 06:05:12.959 checked_mode: {checked_mode}, STDLOG: 12
2025-07-01 06:05:12.966 checked_mode: {checked_mode}, STDLOG: 13
2025-07-01 06:05:12.972 checked_mode: {checked_mode}, STDLOG: 14
2025-07-01 06:05:12.978 checked_mode: {checked_mode}, STDLOG: Records affected: 10
2025-07-01 06:05:12.984 checked_mode: {checked_mode}, STDLOG: OLD_ID OP SNAP_NO_RANK
2025-07-01 06:05:12.990 checked_mode: {checked_mode}, STDLOG:
2025-07-01 06:05:12.997 checked_mode: {checked_mode}, STDLOG: 1 UPD 1
2025-07-01 06:05:13.004 checked_mode: {checked_mode}, STDLOG: -14 UPD 2
2025-07-01 06:05:13.011 checked_mode: {checked_mode}, STDLOG: -13 UPD 2
2025-07-01 06:05:13.018 checked_mode: {checked_mode}, STDLOG: -12 UPD 2
2025-07-01 06:05:13.025 checked_mode: {checked_mode}, STDLOG: -11 UPD 2
2025-07-01 06:05:13.033 checked_mode: {checked_mode}, STDLOG: 1 UPD 2
2025-07-01 06:05:13.040 checked_mode: {checked_mode}, STDLOG: 2 UPD 2
2025-07-01 06:05:13.048 checked_mode: {checked_mode}, STDLOG: 110 UPD 2
2025-07-01 06:05:13.055 checked_mode: {checked_mode}, STDLOG: 120 UPD 2
2025-07-01 06:05:13.062 checked_mode: {checked_mode}, STDLOG: 130 UPD 2
2025-07-01 06:05:13.071 checked_mode: {checked_mode}, STDLOG: 140 UPD 2
2025-07-01 06:05:13.082 checked_mode: {checked_mode}, STDLOG: Records affected: 11
2025-07-01 06:05:13.090 """
2025-07-01 06:05:13.097
2025-07-01 06:05:13.103 act.expected_stdout = expected_stdout_worker
2025-07-01 06:05:13.108 act.stdout = capsys.readouterr().out
2025-07-01 06:05:13.113 >               assert act.clean_stdout == act.clean_expected_stdout
2025-07-01 06:05:13.122 E               assert
2025-07-01 06:05:13.133 E                   checked_mode: table, STDLOG: Records affected: 10
2025-07-01 06:05:13.140 E                   checked_mode: table, STDLOG: ID
2025-07-01 06:05:13.146 E                   checked_mode: table, STDLOG:
2025-07-01 06:05:13.151 E                   checked_mode: table, STDLOG: -140
2025-07-01 06:05:13.156 E                   checked_mode: table, STDLOG: -130
2025-07-01 06:05:13.160 E                   checked_mode: table, STDLOG: -120
2025-07-01 06:05:13.165 E                   checked_mode: table, STDLOG: -110
2025-07-01 06:05:13.170 E                   checked_mode: table, STDLOG: -2
2025-07-01 06:05:13.175 E                   checked_mode: table, STDLOG: -1
2025-07-01 06:05:13.180 E                   checked_mode: table, STDLOG: 11
2025-07-01 06:05:13.185 E                   checked_mode: table, STDLOG: 12
2025-07-01 06:05:13.191 E                   checked_mode: table, STDLOG: 13
2025-07-01 06:05:13.197 E                   checked_mode: table, STDLOG: 14
2025-07-01 06:05:13.203 E                   checked_mode: table, STDLOG: Records affected: 10
2025-07-01 06:05:13.210 E                   checked_mode: table, STDLOG: OLD_ID OP SNAP_NO_RANK
2025-07-01 06:05:13.220 E                   checked_mode: table, STDLOG:
2025-07-01 06:05:13.231 E                 - checked_mode: table, STDLOG: 1 UPD 1
2025-07-01 06:05:13.252 E                 + checked_mode: table, STDLOG: 1UPD 1
2025-07-01 06:05:13.261 E                 - checked_mode: table, STDLOG: -14 UPD 2
2025-07-01 06:05:13.275 E                 + checked_mode: table, STDLOG: -14UPD 2
2025-07-01 06:05:13.281 E                 - checked_mode: table, STDLOG: -13 UPD 2
2025-07-01 06:05:13.295 E                 + checked_mode: table, STDLOG: -13UPD 2
2025-07-01 06:05:13.305 E                 - checked_mode: table, STDLOG: -12 UPD 2
2025-07-01 06:05:13.321 E                 + checked_mode: table, STDLOG: -12UPD 2
2025-07-01 06:05:13.328 E                 - checked_mode: table, STDLOG: -11 UPD 2
2025-07-01 06:05:13.351 E                 + checked_mode: table, STDLOG: -11UPD 2
2025-07-01 06:05:13.359 E                 - checked_mode: table, STDLOG: 1 UPD 2
2025-07-01 06:05:13.379 E                 + checked_mode: table, STDLOG: 1UPD 2
2025-07-01 06:05:13.389 E                 - checked_mode: table, STDLOG: 2 UPD 2
2025-07-01 06:05:13.410 E                 + checked_mode: table, STDLOG: 2UPD 2
2025-07-01 06:05:13.420 E                 - checked_mode: table, STDLOG: 110 UPD 2
2025-07-01 06:05:13.442 E                 + checked_mode: table, STDLOG: 110UPD 2
2025-07-01 06:05:13.452 E                 - checked_mode: table, STDLOG: 120 UPD 2
2025-07-01 06:05:13.470 E                 + checked_mode: table, STDLOG: 120UPD 2
2025-07-01 06:05:13.481 E                 - checked_mode: table, STDLOG: 130 UPD 2
2025-07-01 06:05:13.498 E                 + checked_mode: table, STDLOG: 130UPD 2
2025-07-01 06:05:13.510 E                 - checked_mode: table, STDLOG: 140 UPD 2
2025-07-01 06:05:13.528 E                 + checked_mode: table, STDLOG: 140UPD 2
2025-07-01 06:05:13.539 E                   checked_mode: table, STDLOG: Records affected: 11
2025-07-01 06:05:13.551
2025-07-01 06:05:13.560 tests/functional/transactions/test_read_consist_sttm_restart_on_update_03.py:480: AssertionError
2025-07-01 06:05:13.567 ---------------------------- Captured stdout setup -----------------------------
2025-07-01 06:05:13.575 Creating db: localhost:/var/tmp/qa_2024/test_12486/test.fdb [page_size=None, sql_dialect=None, charset='NONE', user=SYSDBA, password=masterkey]
3 #text
act = <firebird.qa.plugin.Action pytest object at [hex]>
fn_worker_sql = PosixPath('/var/tmp/qa_2024/test_12486/tmp_worker.sql')
fn_worker_log = PosixPath('/var/tmp/qa_2024/test_12486/tmp_worker.log')
fn_worker_err = PosixPath('/var/tmp/qa_2024/test_12486/tmp_worker.err')
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>

    @pytest.mark.trace
    @pytest.mark.version('>=4.0.2')
    def test_1(act: Action, fn_worker_sql: Path, fn_worker_log: Path, fn_worker_err: Path, capsys):
        sql_init = (act.files_dir / 'read-consist-sttm-restart-DDL.sql').read_text()
    
        for checked_mode in('table', 'view'):
            target_obj = 'test' if checked_mode == 'table' else 'v_test'
    
            SQL_TO_BE_RESTARTED = f"update /* {SQL_TAG_THAT_WE_WAITING_FOR} */ {target_obj} set id = -id order by id ROWS 10"
    
            # add rows with ID = 1, 2:
            sql_addi = f'''
                set term ^;
                execute block as
                begin
                    rdb$set_context('USER_SESSION', 'WHO', 'INIT_DATA');
                end
                ^
                set term ;^
                insert into {target_obj}(id, x) select row_number()over(),row_number()over() from rdb$types rows 2;
                commit;
            '''
    
            act.isql(switches=['-q'], input = ''.join( (sql_init, sql_addi) ) )
            # ::: NOTE ::: We have to immediately quit if any error raised in prepare phase.
            # See also letter from dimitr, 01-feb-2022 14:46
            assert act.stderr == ''
            act.reset()
    
            trace_cfg_items = [
                'time_threshold = 0',
                'log_errors = true',
                'log_statement_start = true',
                'log_statement_finish = true',
            ]
    
            with act.trace(db_events = trace_cfg_items, encoding=locale.getpreferredencoding()):
    
                with act.db.connect() as con_lock_1, act.db.connect() as con_lock_2, act.db.connect() as con_monitoring:
    
                    tpb_monitoring = tpb(isolation=Isolation.READ_COMMITTED_RECORD_VERSION, lock_timeout=0)
                    tx_monitoring = con_monitoring.transaction_manager(tpb_monitoring)
                    cur_monitoring = tx_monitoring.cursor()
    
                    for i,c in enumerate((con_lock_1,con_lock_2)):
                        sttm = f"execute block as begin rdb$set_context('USER_SESSION', 'WHO', 'LOCKER #{i+1}'); end"
                        c.execute_immediate(sttm)
    
                    #########################
                    ###  L O C K E R - 1  ###
                    #########################
    
                    con_lock_1.execute_immediate( f'update /* LOCKER-1 */ {target_obj} set id=id where id = 2' )
    
                    worker_sql = f'''
                        set list on;
                        set autoddl off;
                        set term ^;
                        execute block returns (whoami varchar(30)) as
                        begin
                            whoami = 'WORKER'; -- , ATT#' || current_connection;
                            rdb$set_context('USER_SESSION','WHO', whoami);
                            -- suspend;
                        end
                        ^
                        set term ;^
                        commit;
                        SET KEEP_TRAN_PARAMS ON;
                        set transaction read committed read consistency;
                        set list off;
                        set wng off;
                        set count on;
    
                        -- WORKER. THIS MUST BE LOCKED NOW BY LOCKER_i:
                        {SQL_TO_BE_RESTARTED};
    
                        -- check results:
                        -- ###############
                        select id from {target_obj} order by id; -- this will produce output only after all lockers do their commit/rollback
    
                        select v.old_id, v.op, v.snap_no_rank from v_worker_log v where v.op = 'upd';
    
                        set width who 10;
                        -- DO NOT check this! Values can differ here from one run to another!
                        -- select id, trn, who, old_id, new_id, op, rec_vers, global_cn, snap_no from tlog_done order by id;
    
                        rollback;
    
                    '''
    
                    fn_worker_sql.write_text(worker_sql)
    
                    with fn_worker_log.open(mode='w') as hang_out, fn_worker_err.open(mode='w') as hang_err:
    
                        ############################################################################
                        ###  L A U N C H     W O R K E R    U S I N G     I S Q L,   A S Y N C.  ###
                        ############################################################################
                        p_worker = subprocess.Popen([act.vars['isql'], '-i', str(fn_worker_sql),
                                                       '-user', act.db.user,
                                                       '-password', act.db.password,
                                                       '-pag', '999999',
                                                       act.db.dsn
                                                    ],
                                                      stdout = hang_out,
                                                      stderr = hang_err
                                                   )
                        # NB: when ISQL will establish attach, first record that it must lock is ID = 1 -- see above SQL_TO_BE_RESTARTED
                        # We must to ensure that this (worker) attachment has been really created and LOCKS this record:
                        #
                        wait_for_record_become_locked(tx_monitoring, cur_monitoring, f'update {target_obj} set id=id where id=1', SQL_TAG_THAT_WE_WAITING_FOR)
    
    
                        #########################
                        ###  L O C K E R - 2  ###
                        #########################
                        con_lock_2.execute_immediate( f'insert /* LOCKER-2 */ into {target_obj}(id) values(110)' )
                        con_lock_2.execute_immediate( f'insert /* LOCKER-2 */ into {target_obj}(id) values(-11)' )
                        con_lock_2.commit()
                        con_lock_2.execute_immediate( f'update /* LOCKER-2 */ {target_obj} set id=id where id = 110' )
                        con_lock_2.execute_immediate( f'update /* LOCKER-2 */ {target_obj} set id=id where id = -11' )
    
                        #########################
                        ###  L O C K E R - 1  ###
                        #########################
                        con_lock_1.commit() # releases record with ID = 2 ==> now it can be locked by worker.
    
                        # We have to WAIT HERE until worker will actually 'catch' just released record with ID = 2.
                        #
                        wait_for_record_become_locked(tx_monitoring, cur_monitoring, f'update {target_obj} set id=id where id=2', SQL_TAG_THAT_WE_WAITING_FOR)
                        # If we come here then it means that record with ID = 2 for sure is locked by WORKER.
    
                        con_lock_1.execute_immediate( f'insert /* LOCKER-1 */ into {target_obj}(id) values(120)' )
                        con_lock_1.execute_immediate( f'insert /* LOCKER-1 */ into {target_obj}(id) values(-12)' )
                        con_lock_1.commit()
                        con_lock_1.execute_immediate( f'update /* LOCKER-1 */ {target_obj} set id=id where id = 120' )
                        con_lock_1.execute_immediate( f'update /* LOCKER-1 */ {target_obj} set id=id where id = -12' )
    
    
                        #########################
                        ###  L O C K E R - 2  ###
                        #########################
                        con_lock_2.commit() # releases TWO records with ID = -11 and 110.
    
                        # We have to WAIT HERE until worker will actually 'catch' just released records, in the order of its cursor: first with ID = -11, then with ID = 110.
                        #
                        wait_for_record_become_locked(tx_monitoring, cur_monitoring, f'update {target_obj} set id=id where id = 110', SQL_TAG_THAT_WE_WAITING_FOR)
                        # If we come here then it means that TWO records with ID = -11 and 110 for sure are locked by WORKER.
    
    
                        con_lock_2.execute_immediate( f'insert into /* LOCKER-2 */ {target_obj}(id) values(130)' )
                        con_lock_2.execute_immediate( f'insert into /* LOCKER-2 */ {target_obj}(id) values(-13)' )
                        con_lock_2.commit()
                        con_lock_2.execute_immediate( f'update /* LOCKER-2 */ {target_obj} set id=id where id = 130' )
                        con_lock_2.execute_immediate( f'update /* LOCKER-2 */ {target_obj} set id=id where id = -13' )
    
                        #########################
                        ###  L O C K E R - 1  ###
                        #########################
                        con_lock_1.commit() # releases TWO records with ID = -12 and 120.
    
                        # We have to WAIT HERE until worker will actually 'catch' just released records, in the order of its cursor: first with ID = -12, then with ID = 120.
                        #
                        wait_for_record_become_locked(tx_monitoring, cur_monitoring, f'update {target_obj} set id=id where id = 120', SQL_TAG_THAT_WE_WAITING_FOR)
                        # If we come here then it means that TWO records with ID = -12 and 120 for sure are locked by WORKER.
    
    
                        con_lock_1.execute_immediate( f'insert /* LOCKER-1 */ into {target_obj}(id) values(140)' )
                        con_lock_1.execute_immediate( f'insert /* LOCKER-1 */ into {target_obj}(id) values(-14)' )
                        con_lock_1.commit()
                        con_lock_1.execute_immediate( f'update /* LOCKER-1 */ {target_obj} set id=id where id = 140' )
                        con_lock_1.execute_immediate( f'update /* LOCKER-1 */ {target_obj} set id=id where id = -14' )
    
                        #########################
                        ###  L O C K E R - 2  ###
                        #########################
                        con_lock_2.commit()
    
                        # We have to WAIT HERE until worker will actually 'catch' just released records, in the order of its cursor: first with ID = -13, then with ID = 130.
                        #
                        wait_for_record_become_locked(tx_monitoring, cur_monitoring, f'update {target_obj} set id=id where id = 130', SQL_TAG_THAT_WE_WAITING_FOR)
                        # If we come here then it means that TWO records with ID = -13 and 130 for sure are locked by WORKER.
    
                        #########################
                        ###  L O C K E R - 1  ###
                        #########################
                        con_lock_1.commit() # WORKER will complete his job after this
    
    
                        # Here we wait for ISQL complete its mission:
                        p_worker.wait()
    
                #< with act.db.connect()
    
                for g in (fn_worker_log, fn_worker_err):
                    with g.open() as f:
                        for line in f:
                            if line.split():
                                if g == fn_worker_log:
                                    print(f'checked_mode: {checked_mode}, STDLOG: {line}')
                                else:
                                    print(f'UNEXPECTED STDERR {line}')
    
                expected_stdout_worker = f"""
                    checked_mode: {checked_mode}, STDLOG: Records affected: 10
                    checked_mode: {checked_mode}, STDLOG: ID
                    checked_mode: {checked_mode}, STDLOG:
                    checked_mode: {checked_mode}, STDLOG: -140
                    checked_mode: {checked_mode}, STDLOG: -130
                    checked_mode: {checked_mode}, STDLOG: -120
                    checked_mode: {checked_mode}, STDLOG: -110
                    checked_mode: {checked_mode}, STDLOG: -2
                    checked_mode: {checked_mode}, STDLOG: -1
                    checked_mode: {checked_mode}, STDLOG: 11
                    checked_mode: {checked_mode}, STDLOG: 12
                    checked_mode: {checked_mode}, STDLOG: 13
                    checked_mode: {checked_mode}, STDLOG: 14
                    checked_mode: {checked_mode}, STDLOG: Records affected: 10
                    checked_mode: {checked_mode}, STDLOG: OLD_ID OP SNAP_NO_RANK
                    checked_mode: {checked_mode}, STDLOG:
                    checked_mode: {checked_mode}, STDLOG: 1 UPD 1
                    checked_mode: {checked_mode}, STDLOG: -14 UPD 2
                    checked_mode: {checked_mode}, STDLOG: -13 UPD 2
                    checked_mode: {checked_mode}, STDLOG: -12 UPD 2
                    checked_mode: {checked_mode}, STDLOG: -11 UPD 2
                    checked_mode: {checked_mode}, STDLOG: 1 UPD 2
                    checked_mode: {checked_mode}, STDLOG: 2 UPD 2
                    checked_mode: {checked_mode}, STDLOG: 110 UPD 2
                    checked_mode: {checked_mode}, STDLOG: 120 UPD 2
                    checked_mode: {checked_mode}, STDLOG: 130 UPD 2
                    checked_mode: {checked_mode}, STDLOG: 140 UPD 2
                    checked_mode: {checked_mode}, STDLOG: Records affected: 11
                """
    
                act.expected_stdout = expected_stdout_worker
                act.stdout = capsys.readouterr().out
>               assert act.clean_stdout == act.clean_expected_stdout
E               assert   
E                   checked_mode: table, STDLOG: Records affected: 10
E                   checked_mode: table, STDLOG: ID
E                   checked_mode: table, STDLOG:
E                   checked_mode: table, STDLOG: -140
E                   checked_mode: table, STDLOG: -130
E                   checked_mode: table, STDLOG: -120
E                   checked_mode: table, STDLOG: -110
E                   checked_mode: table, STDLOG: -2
E                   checked_mode: table, STDLOG: -1
E                   checked_mode: table, STDLOG: 11
E                   checked_mode: table, STDLOG: 12
E                   checked_mode: table, STDLOG: 13
E                   checked_mode: table, STDLOG: 14
E                   checked_mode: table, STDLOG: Records affected: 10
E                   checked_mode: table, STDLOG: OLD_ID OP SNAP_NO_RANK
E                   checked_mode: table, STDLOG:
E                 - checked_mode: table, STDLOG: 1 UPD 1
E                 + checked_mode: table, STDLOG: 1UPD 1
E                 - checked_mode: table, STDLOG: -14 UPD 2
E                 + checked_mode: table, STDLOG: -14UPD 2
E                 - checked_mode: table, STDLOG: -13 UPD 2
E                 + checked_mode: table, STDLOG: -13UPD 2
E                 - checked_mode: table, STDLOG: -12 UPD 2
E                 + checked_mode: table, STDLOG: -12UPD 2
E                 - checked_mode: table, STDLOG: -11 UPD 2
E                 + checked_mode: table, STDLOG: -11UPD 2
E                 - checked_mode: table, STDLOG: 1 UPD 2
E                 + checked_mode: table, STDLOG: 1UPD 2
E                 - checked_mode: table, STDLOG: 2 UPD 2
E                 + checked_mode: table, STDLOG: 2UPD 2
E                 - checked_mode: table, STDLOG: 110 UPD 2
E                 + checked_mode: table, STDLOG: 110UPD 2
E                 - checked_mode: table, STDLOG: 120 UPD 2
E                 + checked_mode: table, STDLOG: 120UPD 2
E                 - checked_mode: table, STDLOG: 130 UPD 2
E                 + checked_mode: table, STDLOG: 130UPD 2
E                 - checked_mode: table, STDLOG: 140 UPD 2
E                 + checked_mode: table, STDLOG: 140UPD 2
E                   checked_mode: table, STDLOG: Records affected: 11

tests/functional/transactions/test_read_consist_sttm_restart_on_update_03.py:480: AssertionError
Full history of outcomes and elapsed time, ms:
NN SNAP_INFO CS_outcome SS_outcome CS_run_time SS_run_time CS_run_beg CS_run_end SS_run_beg SS_run_end
1 6.0.0.884 2025.06.30 f7e5f F F 3861 3092 2025.07.01 02:42:24.278 2025.07.01 02:42:28.139 2025.06.30 23:58:10.942 2025.06.30 23:58:14.034
2 6.0.0.881 2025.06.27 7035d P P 8325 6850 2025.06.30 02:36:08.953 2025.06.30 02:36:17.278 2025.06.29 23:48:40.179 2025.06.29 23:48:47.029
3 6.0.0.877 2025.06.26 8e38f P P 7297 6735 2025.06.27 02:13:05.458 2025.06.27 02:13:12.755 2025.06.26 23:37:52.070 2025.06.26 23:37:58.805
4 6.0.0.876 2025.06.25 b1bec P P 7280 5999 2025.06.26 02:16:57.058 2025.06.26 02:17:04.338 2025.06.25 23:39:47.883 2025.06.25 23:39:53.882
5 6.0.0.863 2025.06.24 c3c20 P P 8290 5966 2025.06.25 02:17:11.078 2025.06.25 02:17:19.368 2025.06.24 23:39:30.769 2025.06.24 23:39:36.735
6 6.0.0.858 2025.06.23 8d6f7 P P 7265 5938 2025.06.24 02:17:15.961 2025.06.24 02:17:23.226 2025.06.23 23:39:23.318 2025.06.23 23:39:29.256
7 6.0.0.849 2025.06.20 7b79c P P 7254 6028 2025.06.21 02:29:01.666 2025.06.21 02:29:08.920 2025.06.20 23:49:27.098 2025.06.20 23:49:33.126
8 6.0.0.848 2025.06.19 c483c P P 7250 6006 2025.06.20 02:25:23.699 2025.06.20 02:25:30.949 2025.06.19 23:45:45.532 2025.06.19 23:45:51.538
9 6.0.0.845 2025.06.18 22b12 P P 7231 6003 2025.06.19 02:34:07.783 2025.06.19 02:34:15.014 2025.06.18 23:49:56.107 2025.06.18 23:50:02.110
10 6.0.0.843 2025.06.16 995f4 P P 8116 6157 2025.06.18 02:32:32.378 2025.06.18 02:32:40.494 2025.06.17 23:51:07.309 2025.06.17 23:51:13.466
11 6.0.0.840 2025.06.14 29bca P P 7291 5967 2025.06.16 02:24:15.396 2025.06.16 02:24:22.687 2025.06.15 23:43:16.526 2025.06.15 23:43:22.493
12 6.0.0.838 2025.06.13 0e28a P P 7296 5825 2025.06.14 02:38:34.113 2025.06.14 02:38:41.409 2025.06.13 23:51:58.290 2025.06.13 23:52:04.115
13 6.0.0.835 2025.06.12 2cf29 P P 7222 6808 2025.06.13 02:36:56.143 2025.06.13 02:37:03.365 2025.06.12 23:54:43.718 2025.06.12 23:54:50.526
14 6.0.0.834 2025.06.11 e889f P P 7395 5984 2025.06.12 02:33:04.315 2025.06.12 02:33:11.710 2025.06.11 23:51:12.314 2025.06.11 23:51:18.298
15 6.0.0.800 2025.06.10 1f226 P P 7359 6415 2025.06.11 01:04:50.722 2025.06.11 01:04:58.081 2025.06.10 22:53:10.934 2025.06.10 22:53:17.349
16 6.0.0.799 2025.06.07 be644 P P 7262 6586 2025.06.10 01:07:18.998 2025.06.10 01:07:26.260 2025.06.09 22:52:34.643 2025.06.09 22:52:41.229
17 6.0.0.797 2025.06.06 303e8 P P 7512 6805 2025.06.07 01:11:31.445 2025.06.07 01:11:38.957 2025.06.06 22:52:29.082 2025.06.06 22:52:35.887
18 6.0.0.795 2025.05.29 7a71a P P 7358 6876 2025.06.06 01:05:38.437 2025.06.06 01:05:45.795 2025.06.05 22:50:46.582 2025.06.05 22:50:53.458
19 6.0.0.792 2025.05.28 b4327 P P 8347 7317 2025.05.29 01:20:57.258 2025.05.29 01:21:05.605 2025.05.28 22:55:09.222 2025.05.28 22:55:16.539
20 6.0.0.791 2025.05.27 02db8 P P 7513 7283 2025.05.28 01:18:46.220 2025.05.28 01:18:53.733 2025.05.27 22:54:19.471 2025.05.27 22:54:26.754
21 6.0.0.789 2025.05.21 64051 P P 7556 6728 2025.05.25 01:10:48.751 2025.05.25 01:10:56.307 2025.05.24 22:52:55.574 2025.05.24 22:53:02.302
22 6.0.0.787 2025.05.20 230ad P P 7398 7108 2025.05.21 01:07:57.101 2025.05.21 01:08:04.499 2025.05.20 22:50:44.126 2025.05.20 22:50:51.234
23 6.0.0.783 2025.05.12 37320 P P 7676 6474 2025.05.19 12:39:13.751 2025.05.19 12:39:21.427 2025.05.19 10:38:29.130 2025.05.19 10:38:35.604
24 6.0.0.779 2025.05.11 136fa P P 7448 7110 2025.05.12 01:03:16.571 2025.05.12 01:03:24.019 2025.05.11 22:49:23.227 2025.05.11 22:49:30.337
25 6.0.0.778 2025.05.07 d735e P P 8321 6954 2025.05.08 01:03:53.160 2025.05.08 01:04:01.481 2025.05.07 22:48:13.861 2025.05.07 22:48:20.815
26 6.0.0.776 2025.05.06 007cd P P 7463 6995 2025.05.07 00:59:45.675 2025.05.07 00:59:53.138 2025.05.06 22:48:35.611 2025.05.06 22:48:42.606
27 6.0.0.770 2025.05.05 82c4a P P 7394 7140 2025.05.06 00:57:54.371 2025.05.06 00:58:01.765 2025.05.05 22:47:23.430 2025.05.05 22:47:30.570
28 6.0.0.767 2025.05.01 cdd29 P P 7420 7245 2025.05.02 00:52:14.654 2025.05.02 00:52:22.074 2025.05.01 22:46:15.442 2025.05.01 22:46:22.687
29 6.0.0.762 2025.04.30 5cb15 P P 8562 7180 2025.05.01 00:50:39.820 2025.05.01 00:50:48.382 2025.04.30 22:44:40.274 2025.04.30 22:44:47.454
30 6.0.0.755 2025.04.29 739c6 P P 7493 7136 2025.04.30 00:54:52.154 2025.04.30 00:54:59.647 2025.04.29 22:46:21.894 2025.04.29 22:46:29.030
31 6.0.0.753 2025.04.27 29ab3 P P 7436 7418 2025.04.28 00:56:55.908 2025.04.28 00:57:03.344 2025.04.27 22:45:19.659 2025.04.27 22:45:27.077
32 6.0.0.745 2025.04.21 78ad8 P P 7638 7417 2025.04.26 00:52:00.426 2025.04.26 00:52:08.064 2025.04.25 22:46:36.798 2025.04.25 22:46:44.215
33 6.0.0.744 2025.04.19 e883a P P 7586 7393 2025.04.20 00:54:29.720 2025.04.20 00:54:37.306 2025.04.19 22:47:21.166 2025.04.19 22:47:28.559
34 6.0.0.742 2025.04.17 abc3b P P 7520 7084 2025.04.19 00:56:58.418 2025.04.19 00:57:05.938 2025.04.18 22:47:23.278 2025.04.18 22:47:30.362
35 6.0.0.737 2025.04.16 fe52b P P 7474 7400 2025.04.17 00:53:03.351 2025.04.17 00:53:10.825 2025.04.16 22:47:37.289 2025.04.16 22:47:44.689
36 6.0.0.736 2025.04.14 3e6be P P 7430 7113 2025.04.15 00:28:26.537 2025.04.15 00:28:33.967 2025.04.14 22:36:32.425 2025.04.14 22:36:39.538
37 6.0.0.735 2025.04.13 6635c P P 7461 6788 2025.04.14 00:34:58.501 2025.04.14 00:35:05.962 2025.04.13 22:37:47.534 2025.04.13 22:37:54.322
38 6.0.0.734 2025.04.12 12f3f P P 7583 6920 2025.04.13 00:32:13.772 2025.04.13 00:32:21.355 2025.04.12 22:36:53.854 2025.04.12 22:37:00.774
39 6.0.0.730 2025.04.11 240b8 P P 7525 7019 2025.04.12 00:35:02.713 2025.04.12 00:35:10.238 2025.04.11 22:37:09.207 2025.04.11 22:37:16.226
40 6.0.0.726 2025.04.10 d79c6 P P 7351 6437 2025.04.11 00:35:07.704 2025.04.11 00:35:15.055 2025.04.10 22:37:11.789 2025.04.10 22:37:18.226
41 6.0.0.725 2025.04.09 a2b05 P P 7496 6958 2025.04.10 00:34:54.806 2025.04.10 00:35:02.302 2025.04.09 22:37:21.424 2025.04.09 22:37:28.382
42 6.0.0.722 2025.04.08 a8b86 P P 7447 7354 2025.04.09 00:49:31.656 2025.04.09 00:49:39.103 2025.04.08 22:45:20.889 2025.04.08 22:45:28.243
43 6.0.0.719 2025.04.06 90fd9 P P 7453 7268 2025.04.07 00:49:05.429 2025.04.07 00:49:12.882 2025.04.06 22:43:07.994 2025.04.06 22:43:15.262
44 6.0.0.717 2025.04.04 53d70 P P 7528 7131 2025.04.05 00:44:35.686 2025.04.05 00:44:43.214 2025.04.04 22:42:10.960 2025.04.04 22:42:18.091
45 6.0.0.716 2025.04.03 fc636 P P 7661 7364 2025.04.04 00:45:25.541 2025.04.04 00:45:33.202 2025.04.03 22:44:11.594 2025.04.03 22:44:18.958
46 6.0.0.715 2025.04.02 907ed P P 7507 7152 2025.04.03 00:48:19.408 2025.04.03 00:48:26.915 2025.04.02 22:44:09.526 2025.04.02 22:44:16.678
47 6.0.0.710 2025.04.01 40651 P P 7402 7229 2025.04.02 00:45:26.053 2025.04.02 00:45:33.455 2025.04.01 22:42:56.153 2025.04.01 22:43:03.382
48 6.0.0.708 2025.03.31 cb069 P P 7535 6553 2025.04.01 00:34:13.282 2025.04.01 00:34:20.817 2025.03.31 22:38:02.430 2025.03.31 22:38:08.983
49 6.0.0.707 2025.03.28 4bd4f P P 7454 6879 2025.03.31 00:37:38.402 2025.03.31 00:37:45.856 2025.03.30 22:38:03.979 2025.03.30 22:38:10.858
50 6.0.0.698 2025.03.26 d72a7 P P 7462 7089 2025.03.28 00:56:49.947 2025.03.28 00:56:57.409 2025.03.27 22:46:10.834 2025.03.27 22:46:17.923
51 6.0.0.693 2025.03.24 0b559 P P 7475 7185 2025.03.25 00:46:50.767 2025.03.25 00:46:58.242 2025.03.24 22:41:23.141 2025.03.24 22:41:30.326
52 6.0.0.687 2025.03.22 730aa P P 7804 6930 2025.03.24 00:58:59.555 2025.03.24 00:59:07.359 2025.03.23 22:49:08.858 2025.03.23 22:49:15.788
53 6.0.0.686 2025.03.20 71bf6 P P 7731 7284 2025.03.21 01:03:08.917 2025.03.21 01:03:16.648 2025.03.20 22:52:48.950 2025.03.20 22:52:56.234
54 6.0.0.685 2025.03.19 a8577 P P 8662 7484 2025.03.20 01:12:19.285 2025.03.20 01:12:27.947 2025.03.19 22:50:28.731 2025.03.19 22:50:36.215
55 6.0.0.680 2025.03.18 90d29 P P 7561 6578 2025.03.19 11:25:09.142 2025.03.19 11:25:16.703 2025.03.19 09:34:21.883 2025.03.19 09:34:28.461
56 6.0.0.677 2025.03.16 c0a60 P P 7567 7247 2025.03.17 00:51:43.019 2025.03.17 00:51:50.586 2025.03.16 22:44:35.202 2025.03.16 22:44:42.449
57 6.0.0.676 2025.03.15 3034f P P 7587 6615 2025.03.16 16:24:38.540 2025.03.16 16:24:46.127 2025.03.16 14:35:42.787 2025.03.16 14:35:49.402
58 6.0.0.673 2025.03.13 40f5b P P 7660 6570 2025.03.14 00:48:24.543 2025.03.14 00:48:32.203 2025.03.13 22:43:55.709 2025.03.13 22:44:02.279
59 6.0.0.671 2025.03.12 a4fff P P 8351 6920 2025.03.13 00:51:42.017 2025.03.13 00:51:50.368 2025.03.12 22:46:56.247 2025.03.12 22:47:03.167
60 6.0.0.663 2025.03.11 daad2 P P 7439 7205 2025.03.12 00:52:23.931 2025.03.12 00:52:31.370 2025.03.11 22:45:50.035 2025.03.11 22:45:57.240
61 6.0.0.661 2025.03.07 b9869 P P 7173 5962 2025.03.11 00:27:22.465 2025.03.11 00:27:29.638 2025.03.10 22:35:53.119 2025.03.10 22:35:59.081
62 6.0.0.660 2025.03.04 a6700 P P 7556 6552 2025.03.07 00:37:49.959 2025.03.07 00:37:57.515 2025.03.06 22:40:57.082 2025.03.06 22:41:03.634
63 6.0.0.658 2025.03.03 f15f8 P P 7326 5970 2025.03.04 00:31:07.801 2025.03.04 00:31:15.127 2025.03.03 22:36:35.036 2025.03.03 22:36:41.006
64 6.0.0.656 2025.02.27 25fb4 P P 7567 7248 2025.03.03 01:05:28.206 2025.03.03 01:05:35.773 2025.03.02 22:48:39.743 2025.03.02 22:48:46.991
65 6.0.0.655 2025.02.25 6e3e0 P P 7300 6903 2025.02.27 00:35:15.362 2025.02.27 00:35:22.662 2025.02.26 22:37:59.401 2025.02.26 22:38:06.304
66 6.0.0.654 2025.02.24 b7141 P P 7570 6040 2025.02.25 00:38:29.783 2025.02.25 00:38:37.353 2025.02.24 22:39:42.694 2025.02.24 22:39:48.734
67 6.0.0.652 2025.02.22 22662 P P 7644 6554 2025.02.24 07:58:32.421 2025.02.24 07:58:40.065 2025.02.24 00:52:45.762 2025.02.24 00:52:52.316
68 6.0.0.647 2025.02.21 9fccb P P 7471 6936 2025.02.22 00:40:43.863 2025.02.22 00:40:51.334 2025.02.21 22:41:56.739 2025.02.21 22:42:03.675
69 6.0.0.640 2025.02.19 9b8ac P P 8099 7258 2025.02.20 00:35:25.466 2025.02.20 00:35:33.565 2025.02.19 22:38:06.231 2025.02.19 22:38:13.489
70 6.0.0.639 2025.02.18 201a4 P P 7711 6911 2025.02.19 00:29:36.551 2025.02.19 00:29:44.262 2025.02.18 22:36:08.507 2025.02.18 22:36:15.418
71 6.0.0.637 2025.02.12 6d0f5 P P 9155 7308 2025.02.14 00:48:35.246 2025.02.14 00:48:44.401 2025.02.13 22:44:06.594 2025.02.13 22:44:13.902
72 6.0.0.636 2025.02.11 0424f P P 8607 6531 2025.02.12 00:43:56.439 2025.02.12 00:44:05.046 2025.02.11 22:43:16.155 2025.02.11 22:43:22.686
73 6.0.0.635 2025.02.10 f640f P P 7421 6950 2025.02.11 00:42:48.448 2025.02.11 00:42:55.869 2025.02.10 22:43:05.906 2025.02.10 22:43:12.856
74 6.0.0.629 2025.02.07 194f9 P P 7432 7021 2025.02.08 00:42:48.749 2025.02.08 00:42:56.181 2025.02.07 22:42:08.271 2025.02.07 22:42:15.292
75 6.0.0.628 2025.02.06 859d5 P P 7407 7187 2025.02.07 01:01:27.442 2025.02.07 01:01:34.849 2025.02.06 22:48:43.562 2025.02.06 22:48:50.749
76 6.0.0.621 2025.02.05 34fe7 P P 7369 7016 2025.02.06 00:56:28.444 2025.02.06 00:56:35.813 2025.02.05 22:49:23.673 2025.02.05 22:49:30.689
77 6.0.0.609 2025.02.04 76d57 P P 7460 6841 2025.02.05 00:51:12.066 2025.02.05 00:51:19.526 2025.02.04 22:45:02.697 2025.02.04 22:45:09.538
78 6.0.0.607 2025.02.03 1985b P P 7390 6879 2025.02.04 00:48:47.079 2025.02.04 00:48:54.469 2025.02.03 22:46:01.087 2025.02.03 22:46:07.966
79 6.0.0.601 2025.02.01 6af07 P P 7944 6077 2025.02.02 00:38:37.374 2025.02.02 00:38:45.318 2025.02.01 22:41:34.710 2025.02.01 22:41:40.787
80 6.0.0.600 2025.01.27 188de P P 9000 6647 2025.01.28 00:48:05.239 2025.01.28 00:48:14.239 2025.01.27 22:43:57.754 2025.01.27 22:44:04.401
81 6.0.0.599 2025.01.25 ba588 P P 7004 6535 2025.01.26 00:46:29.502 2025.01.26 00:46:36.506 2025.01.25 22:44:47.295 2025.01.25 22:44:53.830
82 6.0.0.598 2025.01.23 ddbc3 P P 7058 6202 2025.01.25 00:47:42.241 2025.01.25 00:47:49.299 2025.01.24 22:43:40.788 2025.01.24 22:43:46.990
83 6.0.0.595 2025.01.22 e62f3 P P 7100 6666 2025.01.23 00:39:38.307 2025.01.23 00:39:45.407 2025.01.22 22:38:47.469 2025.01.22 22:38:54.135
84 6.0.0.594 2025.01.21 47fb6 P P 7848 6470 2025.01.22 00:33:15.350 2025.01.22 00:33:23.198 2025.01.21 22:38:40.047 2025.01.21 22:38:46.517
85 6.0.0.590 2025.01.20 9dc1e P P 8484 6059 2025.01.21 00:41:28.421 2025.01.21 00:41:36.905 2025.01.20 22:43:18.614 2025.01.20 22:43:24.673
86 6.0.0.588 2025.01.19 b1c4e P P 8287 6108 2025.01.20 00:39:51.414 2025.01.20 00:39:59.701 2025.01.19 22:40:38.839 2025.01.19 22:40:44.947
87 6.0.0.587 2025.01.18 63e6e P P 7039 6112 2025.01.19 00:43:46.923 2025.01.19 00:43:53.962 2025.01.18 22:42:34.458 2025.01.18 22:42:40.570
88 6.0.0.585 2025.01.16 2d6bb P P 7442 6643 2025.01.18 00:36:39.027 2025.01.18 00:36:46.469 2025.01.17 22:39:12.855 2025.01.17 22:39:19.498
89 6.0.0.584 2025.01.15 a0aa2 P P 7383 6046 2025.01.16 00:41:28.933 2025.01.16 00:41:36.316 2025.01.15 22:42:14.485 2025.01.15 22:42:20.531
90 6.0.0.581 2025.01.14 21e9e P P 7060 5977 2025.01.15 00:41:56.627 2025.01.15 00:42:03.687 2025.01.14 22:41:07.739 2025.01.14 22:41:13.716
91 6.0.0.577 2025.01.13 7e293 P P 7371 7040 2025.01.14 00:44:06.063 2025.01.14 00:44:13.434 2025.01.13 22:41:44.456 2025.01.13 22:41:51.496
92 6.0.0.576 2025.01.12 05898 P P 8389 6954 2025.01.13 00:38:01.697 2025.01.13 00:38:10.086 2025.01.12 22:39:32.593 2025.01.12 22:39:39.547
93 6.0.0.573 2025.01.10 c20f3 P P 7417 6047 2025.01.11 00:40:01.708 2025.01.11 00:40:09.125 2025.01.10 22:40:28.211 2025.01.10 22:40:34.258
94 6.0.0.571 2024.12.31 81bba P P 7588 6929 2025.01.01 00:12:54.611 2025.01.01 00:13:02.199 2024.12.31 22:19:02.526 2024.12.31 22:19:09.455
95 6.0.0.570 2024.12.30 c3c8d P P 8312 6529 2024.12.31 00:13:39.783 2024.12.31 00:13:48.095 2024.12.30 22:18:54.951 2024.12.30 22:19:01.480
96 6.0.0.565 2024.12.28 5fc59 P P 6629 6060 2024.12.30 12:46:31.260 2024.12.30 12:46:37.889 2024.12.30 11:26:34.196 2024.12.30 11:26:40.256
97 6.0.0.564 2024.12.26 12514 P P 7935 6875 2024.12.27 00:14:49.956 2024.12.27 00:14:57.891 2024.12.26 22:19:04.711 2024.12.26 22:19:11.586
98 6.0.0.560 2024.12.25 fa83e P P 8420 6758 2024.12.26 00:07:12.806 2024.12.26 00:07:21.226 2024.12.25 22:18:46.631 2024.12.25 22:18:53.389
99 6.0.0.559 2024.12.23 cc800 P P 8095 6778 2024.12.25 00:08:25.116 2024.12.25 00:08:33.211 2024.12.24 22:19:37.808 2024.12.24 22:19:44.586
100 6.0.0.556 2024.12.22 a0404 P P 6741 6721 2024.12.23 00:14:23.372 2024.12.23 00:14:30.113 2024.12.22 22:18:50.883 2024.12.22 22:18:57.604
101 6.0.0.555 2024.12.19 6990a P P 6622 6091 2024.12.21 13:21:58.133 2024.12.21 13:22:04.755 2024.12.21 12:02:04.846 2024.12.21 12:02:10.937
102 6.0.0.553 2024.12.17 d1f8a P P 7566 6648 2024.12.18 00:09:10.993 2024.12.18 00:09:18.559 2024.12.17 22:19:46.743 2024.12.17 22:19:53.391
103 6.0.0.552 2024.12.11 85e25 P P 7665 6761 2024.12.16 00:13:26.331 2024.12.16 00:13:33.996 2024.12.15 22:19:21.662 2024.12.15 22:19:28.423
104 6.0.0.550 2024.12.10 b37ac P P 8162 6490 2024.12.11 00:07:52.854 2024.12.11 00:08:01.016 2024.12.10 22:21:18.793 2024.12.10 22:21:25.283
105 6.0.0.548 2024.12.08 2cc77 P P 6524 6743 2024.12.09 00:02:38.467 2024.12.09 00:02:44.991 2024.12.08 22:16:19.822 2024.12.08 22:16:26.565
106 6.0.0.544 2024.12.05 96943 P P 7181 6351 2024.12.06 00:06:07.095 2024.12.06 00:06:14.276 2024.12.05 22:21:08.028 2024.12.05 22:21:14.379
107 6.0.0.543 2024.12.03 30b77 P P 8108 6959 2024.12.04 00:05:50.410 2024.12.04 00:05:58.518 2024.12.03 22:19:18.592 2024.12.03 22:19:25.551
108 6.0.0.540 2024.12.02 4a1f4 P P 6715 6480 2024.12.03 00:02:05.917 2024.12.03 00:02:12.632 2024.12.02 22:16:21.259 2024.12.02 22:16:27.739
109 6.0.0.539 2024.11.28 1f283 P P 7658 6948 2024.11.30 00:15:10.896 2024.11.30 00:15:18.554 2024.11.29 22:18:41.755 2024.11.29 22:18:48.703
110 6.0.0.535 2024.11.26 77b95 P P 7944 6728 2024.11.26 23:58:19.847 2024.11.26 23:58:27.791 2024.11.26 22:15:37.731 2024.11.26 22:15:44.459
111 6.0.0.534 2024.11.25 e9584 P P 8184 6814 2024.11.25 23:59:35.899 2024.11.25 23:59:44.083 2024.11.25 22:16:34.455 2024.11.25 22:16:41.269
112 6.0.0.533 2024.11.17 933ac P P 7667 6098 2024.11.22 10:02:19.032 2024.11.22 10:02:26.699 2024.11.22 08:44:51.871 2024.11.22 08:44:57.969
113 6.0.0.532 2024.11.16 9e263 F F 8084 5905 2024.11.16 23:49:23.415 2024.11.16 23:49:31.499 2024.11.16 22:14:51.851 2024.11.16 22:14:57.756
114 6.0.0.530 2024.11.15 49804 F F 7534 6361 2024.11.16 01:56:18.690 2024.11.16 01:56:26.224 2024.11.16 00:15:27.248 2024.11.16 00:15:33.609
115 6.0.0.528 2024.11.14 9625b F F 6908 6482 2024.11.15 01:59:58.164 2024.11.15 02:00:05.072 2024.11.15 00:16:21.867 2024.11.15 00:16:28.349
116 6.0.0.526 2024.11.12 65b80 P P 8196 6315 2024.11.14 01:59:48.026 2024.11.14 01:59:56.222 2024.11.14 00:16:19.015 2024.11.14 00:16:25.330
117 6.0.0.523 2024.11.08 8ca23 P P 7327 6137 2024.11.11 01:55:59.512 2024.11.11 01:56:06.839 2024.11.11 00:14:46.898 2024.11.11 00:14:53.035
118 6.0.0.520 2024.11.07 4eefa F F 4508 3419 2024.11.08 01:51:07.940 2024.11.08 01:51:12.448 2024.11.08 00:13:08.727 2024.11.08 00:13:12.146
119 6.0.0.516 2024.11.04 b0c36 P P 6306 5843 2024.11.05 01:51:30.441 2024.11.05 01:51:36.747 2024.11.05 00:13:58.214 2024.11.05 00:14:04.057
120 6.0.0.515 2024.10.30 d53f3 P P 8030 5963 2024.11.04 01:54:04.278 2024.11.04 01:54:12.308 2024.11.04 00:14:28.423 2024.11.04 00:14:34.386
121 6.0.0.512 2024.10.29 833ef P P 7888 6352 2024.10.30 01:57:19.394 2024.10.30 01:57:27.282 2024.10.30 00:16:03.658 2024.10.30 00:16:10.010
122 6.0.0.511 2024.10.26 c4bc9 P P 7653 6305 2024.10.29 01:55:43.211 2024.10.29 01:55:50.864 2024.10.29 00:15:50.792 2024.10.29 00:15:57.097
123 6.0.0.509 2024.10.25 3aedb P P 8272 6550 2024.10.26 02:07:18.481 2024.10.26 02:07:26.753 2024.10.26 00:19:59.704 2024.10.26 00:20:06.254
124 6.0.0.508 2024.10.24 a8f5b P P 6554 6346 2024.10.25 02:00:54.248 2024.10.25 02:01:00.802 2024.10.25 00:16:48.252 2024.10.25 00:16:54.598
125 6.0.0.502 2024.10.22 6bfd7 P P 7940 6446 2024.10.23 02:00:53.688 2024.10.23 02:01:01.628 2024.10.23 00:16:36.604 2024.10.23 00:16:43.050
126 6.0.0.500 2024.10.21 be565 P P 7687 6036 2024.10.22 18:05:25.369 2024.10.22 18:05:33.056 2024.10.22 16:45:51.816 2024.10.22 16:45:57.852
127 6.0.0.499 2024.10.19 6214b P P 6600 6380 2024.10.20 02:00:27.324 2024.10.20 02:00:33.924 2024.10.20 00:17:32.885 2024.10.20 00:17:39.265
128 6.0.0.498 2024.10.18 591a7 P P 7854 6292 2024.10.19 01:59:03.509 2024.10.19 01:59:11.363 2024.10.19 00:16:03.372 2024.10.19 00:16:09.664
129 6.0.0.494 2024.10.17 cf5a4 P P 7332 6375 2024.10.18 01:59:49.556 2024.10.18 01:59:56.888 2024.10.18 00:17:14.967 2024.10.18 00:17:21.342
130 6.0.0.491 2024.10.14 dc5fb P P 7190 6005 2024.10.15 01:56:16.827 2024.10.15 01:56:24.017 2024.10.15 00:14:52.700 2024.10.15 00:14:58.705
131 6.0.0.489 2024.10.11 2ba59 P P 7809 6383 2024.10.12 02:04:19.952 2024.10.12 02:04:27.761 2024.10.12 00:17:31.351 2024.10.12 00:17:37.734
132 6.0.0.488 2024.10.09 1c93e P P 8309 6484 2024.10.10 02:13:05.563 2024.10.10 02:13:13.872 2024.10.10 00:22:06.832 2024.10.10 00:22:13.316
133 6.0.0.487 2024.10.06 065a3 P P 8146 6419 2024.10.07 02:12:06.125 2024.10.07 02:12:14.271 2024.10.07 00:21:41.338 2024.10.07 00:21:47.757
134 6.0.0.485 2024.10.04 e95c1 P P 8453 6730 2024.10.05 02:12:28.273 2024.10.05 02:12:36.726 2024.10.05 00:22:38.658 2024.10.05 00:22:45.388
135 6.0.0.483 2024.10.02 5e5ae P P 6908 6780 2024.10.03 02:08:09.109 2024.10.03 02:08:16.017 2024.10.03 00:21:02.189 2024.10.03 00:21:08.969
136 6.0.0.478 2024.09.30 b5010 P P 7671 6425 2024.10.01 02:02:44.728 2024.10.01 02:02:52.399 2024.10.01 00:19:53.436 2024.10.01 00:19:59.861
137 6.0.0.474 2024.09.26 e4efb P P 6980 6551 2024.09.30 02:02:57.368 2024.09.30 02:03:04.348 2024.09.30 00:17:27.885 2024.09.30 00:17:34.436
138 6.0.0.471 2024.09.24 01b51 P P 7736 6407 2024.09.26 00:07:47.287 2024.09.26 00:07:55.023 2024.09.25 22:18:57.862 2024.09.25 22:19:04.269
139 6.0.0.470 2024.09.23 77cc0 P P 7446 6603 2024.09.24 00:05:30.456 2024.09.24 00:05:37.902 2024.09.23 22:18:55.577 2024.09.23 22:19:02.180
140 6.0.0.467 2024.09.21 ea0b8 P P 6651 6406 2024.09.23 00:03:40.094 2024.09.23 00:03:46.745 2024.09.22 22:17:49.921 2024.09.22 22:17:56.327
141 6.0.0.466 2024.09.20 32dc6 P P 6789 6512 2024.09.21 00:01:53.757 2024.09.21 00:02:00.546 2024.09.20 22:17:13.430 2024.09.20 22:17:19.942
142 6.0.0.461 2024.09.17 2c895 P P 7307 6316 2024.09.18 00:40:57.748 2024.09.18 00:41:05.055 2024.09.17 22:41:22.686 2024.09.17 22:41:29.002
143 6.0.0.460 2024.09.11 3c253 P P 7909 6404 2024.09.17 00:41:36.637 2024.09.17 00:41:44.546 2024.09.16 22:42:27.529 2024.09.16 22:42:33.933
144 6.0.0.457 2024.09.09 fdc6f P P 8585 6677 2024.09.10 01:07:24.771 2024.09.10 01:07:33.356 2024.09.09 22:53:15.292 2024.09.09 22:53:21.969
145 6.0.0.455 2024.09.07 500d8 P P 7964 6708 2024.09.08 01:02:35.448 2024.09.08 01:02:43.412 2024.09.07 22:51:15.112 2024.09.07 22:51:21.820
146 6.0.0.454 2024.09.05 4d70f P P 8620 6777 2024.09.06 00:44:58.425 2024.09.06 00:45:07.045 2024.09.05 22:44:10.790 2024.09.05 22:44:17.567
147 6.0.0.452 2024.09.04 9ff9c P P 9052 6497 2024.09.05 00:42:18.417 2024.09.05 00:42:27.469 2024.09.04 22:42:53.263 2024.09.04 22:42:59.760
148 6.0.0.450 2024.09.02 27124 P P 7340 7743 2024.09.04 01:56:54.058 2024.09.04 01:57:01.398 2024.09.03 23:17:34.512 2024.09.03 23:17:42.255
149 6.0.0.447 2024.09.01 056ec P P 10179 7665 2024.09.02 01:14:09.817 2024.09.02 01:14:19.996 2024.09.01 22:50:10.561 2024.09.01 22:50:18.226
150 6.0.0.446 2024.08.30 fe1b2 P P 10219 7611 2024.09.01 01:12:14.167 2024.09.01 01:12:24.386 2024.08.31 22:57:59.093 2024.08.31 22:58:06.704
151 6.0.0.444 2024.08.28 785d4 P P 7241 6575 2024.08.30 01:28:18.339 2024.08.30 01:28:25.580 2024.08.29 23:10:13.350 2024.08.29 23:10:19.925
152 6.0.0.442 2024.08.21 4a68f P P 8747 6608 2024.08.28 03:39:47.452 2024.08.28 03:39:56.199 2024.08.28 00:06:04.432 2024.08.28 00:06:11.040
153 6.0.0.441 2024.08.20 75042 P P 8301 6231 2024.08.21 00:56:17.536 2024.08.21 00:56:25.837 2024.08.20 22:47:07.718 2024.08.20 22:47:13.949
154 6.0.0.438 2024.08.16 088b5 P P 8157 6312 2024.08.19 00:05:04.056 2024.08.19 00:05:12.213 2024.08.18 22:23:29.837 2024.08.18 22:23:36.149
155 6.0.0.437 2024.08.14 3c88b P P 8316 5969 2024.08.16 00:01:47.625 2024.08.16 00:01:55.941 2024.08.15 22:22:36.261 2024.08.15 22:22:42.230
156 6.0.0.432 2024.08.11 e82ac P P 6759 6551 2024.08.13 00:00:58.328 2024.08.13 00:01:05.087 2024.08.12 22:21:19.277 2024.08.12 22:21:25.828
157 6.0.0.431 2024.08.09 de5a7 P P 6966 6535 2024.08.10 00:01:07.031 2024.08.10 00:01:13.997 2024.08.09 22:21:46.834 2024.08.09 22:21:53.369
158 6.0.0.428 2024.08.08 9191b P P 7633 6448 2024.08.09 00:00:56.356 2024.08.09 00:01:03.989 2024.08.08 22:21:04.353 2024.08.08 22:21:10.801
159 6.0.0.423 2024.08.07 33b41 P P 7171 6494 2024.08.08 09:48:59.656 2024.08.08 09:49:06.827 2024.08.08 08:27:30.346 2024.08.08 08:27:36.840
160 6.0.0.421 2024.08.06 ed60d P P 6268 5854 2024.08.06 23:43:07.036 2024.08.06 23:43:13.304 2024.08.06 22:13:54.304 2024.08.06 22:14:00.158
161 6.0.0.419 2024.08.05 3505a P P 7015 5722 2024.08.05 23:45:11.753 2024.08.05 23:45:18.768 2024.08.05 22:13:52.482 2024.08.05 22:13:58.204
162 6.0.0.409 2024.08.02 ec18f P P 7263 6099 2024.08.04 23:48:42.889 2024.08.04 23:48:50.152 2024.08.04 22:14:35.513 2024.08.04 22:14:41.612
163 6.0.0.406 2024.08.01 b20be P P 7219 5908 2024.08.01 23:47:21.290 2024.08.01 23:47:28.509 2024.08.01 22:13:53.241 2024.08.01 22:13:59.149
164 6.0.0.405 2024.07.31 a62ac P P 6756 5841 2024.07.31 23:46:17.505 2024.07.31 23:46:24.261 2024.07.31 22:13:39.660 2024.07.31 22:13:45.501
165 6.0.0.403 2024.07.29 30f03 P P 6760 5893 2024.07.29 23:46:02.637 2024.07.29 23:46:09.397 2024.07.29 22:13:27.621 2024.07.29 22:13:33.514
166 6.0.0.401 2024.07.26 24e41 P P 7967 5922 2024.07.26 23:42:59.253 2024.07.26 23:43:07.220 2024.07.26 22:13:27.090 2024.07.26 22:13:33.012
167 6.0.0.400 2024.07.24 5bb78 P P 8376 5616 2024.07.24 23:42:49.929 2024.07.24 23:42:58.305 2024.07.24 22:13:37.243 2024.07.24 22:13:42.859
168 6.0.0.398 2024.07.23 85b18 P P 6730 6254 2024.07.23 23:48:22.193 2024.07.23 23:48:28.923 2024.07.23 22:19:30.032 2024.07.23 22:19:36.286
169 6.0.0.397 2024.07.22 c734c P P 8473 5891 2024.07.22 23:42:38.736 2024.07.22 23:42:47.209 2024.07.22 22:13:33.593 2024.07.22 22:13:39.484
170 6.0.0.396 2024.07.13 cf952 P P 7586 5848 2024.07.21 23:43:55.393 2024.07.21 23:44:02.979 2024.07.21 22:13:27.963 2024.07.21 22:13:33.811
171 6.0.0.395 2024.07.10 845f4 P P 7292 6090 2024.07.12 23:44:49.077 2024.07.12 23:44:56.369 2024.07.12 22:12:38.293 2024.07.12 22:12:44.383
172 6.0.0.392 2024.07.09 ea301 P P 6779 6064 2024.07.09 23:40:02.566 2024.07.09 23:40:09.345 2024.07.09 22:11:51.669 2024.07.09 22:11:57.733
173 6.0.0.391 2024.07.08 7d50c P P 6791 6260 2024.07.08 23:41:10.192 2024.07.08 23:41:16.983 2024.07.08 22:12:50.797 2024.07.08 22:12:57.057
174 6.0.0.389 2024.07.05 cc71c P P 6829 6082 2024.07.05 23:45:24.722 2024.07.05 23:45:31.551 2024.07.05 22:12:41.857 2024.07.05 22:12:47.939
175 6.0.0.388 2024.06.30 e5700 P P 8143 5873 2024.06.30 23:41:12.177 2024.06.30 23:41:20.320 2024.06.30 22:13:04.641 2024.06.30 22:13:10.514
176 6.0.0.387 2024.06.27 7c28a P P 6609 6173 2024.06.27 23:40:11.212 2024.06.27 23:40:17.821 2024.06.27 22:12:46.984 2024.06.27 22:12:53.157
177 6.0.0.386 2024.06.23 7c57f P P 6649 5844 2024.06.23 23:37:27.597 2024.06.23 23:37:34.246 2024.06.23 22:11:29.301 2024.06.23 22:11:35.145
178 6.0.0.384 2024.06.21 24d99 P P 6771 6043 2024.06.21 23:42:05.894 2024.06.21 23:42:12.665 2024.06.21 22:13:01.204 2024.06.21 22:13:07.247
179 6.0.0.374 2024.06.13 0097d P P 6673 6148 2024.06.20 23:40:04.381 2024.06.20 23:40:11.054 2024.06.20 22:12:16.335 2024.06.20 22:12:22.483
180 6.0.0.373 2024.06.09 363f0 P P 7256 6203 2024.06.13 13:48:45.798 2024.06.13 13:48:53.054 2024.06.13 12:35:39.136 2024.06.13 12:35:45.339
181 6.0.0.371 2024.06.08 f7130 P P 7244 5914 2024.06.11 22:35:09.475 2024.06.11 22:35:16.719 2024.06.11 21:28:45.609 2024.06.11 21:28:51.523
182 6.0.0.366 2024.05.30 ab2c9 P P 9694 5780 2024.06.12 09:50:54.056 2024.06.12 09:51:03.750 2024.06.12 08:03:09.409 2024.06.12 08:03:15.189
183 6.0.0.363 2024.05.27 06703 P P 6966 5792 2024.06.12 14:41:54.051 2024.06.12 14:42:01.017 2024.06.12 13:31:51.263 2024.06.12 13:31:57.055
184 6.0.0.359 2024.05.23 9cb11 P P 6833 5882 2024.06.12 12:33:33.860 2024.06.12 12:33:40.693 2024.06.12 11:24:19.147 2024.06.12 11:24:25.029
185 6.0.0.358 2024.05.21 995dd P P 7006 5817 2024.06.12 17:16:44.443 2024.06.12 17:16:51.449 2024.06.12 16:09:10.642 2024.06.12 16:09:16.459
186 6.0.0.357 2024.05.18 bf6c4 P P 6970 5928 2024.06.12 21:53:11.231 2024.06.12 21:53:18.201 2024.06.12 20:45:02.068 2024.06.12 20:45:07.996
187 6.0.0.356 2024.05.17 eab06 P P 7223 5869 2024.06.13 05:59:37.488 2024.06.13 05:59:44.711 2024.06.13 04:51:44.229 2024.06.13 04:51:50.098
188 6.0.0.355 2024.05.16 8dd6e P P 7555 5945 2024.06.13 08:07:29.674 2024.06.13 08:07:37.229 2024.06.13 06:59:18.388 2024.06.13 06:59:24.333
189 6.0.0.354 2024.05.15 d3adc P P 7140 6175 2024.06.13 11:13:17.249 2024.06.13 11:13:24.389 2024.06.13 10:00:51.210 2024.06.13 10:00:57.385
190 6.0.0.351 2024.05.14 2e3e0 P P 6932 6241 2024.06.13 16:26:59.108 2024.06.13 16:27:06.040 2024.06.13 15:14:07.860 2024.06.13 15:14:14.101

Elapsed time, ms. Chart for last 150 runs:

Last commits information (all timestamps in UTC):