Jump to: output_first_mismatch    outcomes_full_history    elapsed_time_chart
Show cross-report outcomes.

Annotation type Annotation details
2 @message
firebird.driver.types.DatabaseError: invalid transaction handle (expecting explicit transaction start)

LOG DETAILS:

2024-05-12 18:17:12.716
2024-05-12 18:17:12.721 act = <firebird.qa.plugin.Action object at [hex]>
2024-05-12 18:17:12.725 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2024-05-12 18:17:12.730
2024-05-12 18:17:12.736 @pytest.mark.version('>=3')
2024-05-12 18:17:12.741 def test_1(act: Action, capsys):
2024-05-12 18:17:12.745 def check_events(seqno: int):
2024-05-12 18:17:12.750 with act.db.connect() as con:
2024-05-12 18:17:12.754 timed_event = Timer(1.0, send_events, args=[con, ["insert into test(id) values (rand()*1000)",]])
2024-05-12 18:17:12.759 with con.event_collector(['dml_event']) as events:
2024-05-12 18:17:12.764 timed_event.start()
2024-05-12 18:17:12.768 t1 = time()
2024-05-12 18:17:12.773 max4delivering = 3
2024-05-12 18:17:12.777 e = events.wait(max4delivering)
2024-05-12 18:17:12.782 t2 = time()
2024-05-12 18:17:12.787 print(e)
2024-05-12 18:17:12.792 print(f'{seqno}: event was SUCCESSFULLY delivered.' if t2-t1 < max4delivering
2024-05-12 18:17:12.797 else f'{seqno}: event was NOT delivered for {t2-t1}s (threshold is {max4delivering}s)')
2024-05-12 18:17:12.801
2024-05-12 18:17:12.806 #
2024-05-12 18:17:12.810 check_events(1)
2024-05-12 18:17:12.816 check_events(2)
2024-05-12 18:17:12.822 check_events(3)
2024-05-12 18:17:12.829 check_events(4)
2024-05-12 18:17:12.836 >      check_events(5)
2024-05-12 18:17:12.842
2024-05-12 18:17:12.848 tests/bugs/core_5210_test.py:87:
2024-05-12 18:17:12.854 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2024-05-12 18:17:12.860
2024-05-12 18:17:12.866 seqno = 5
2024-05-12 18:17:12.872
2024-05-12 18:17:12.878 def check_events(seqno: int):
2024-05-12 18:17:12.885 >      with act.db.connect() as con:
2024-05-12 18:17:12.891
2024-05-12 18:17:12.897 tests/bugs/core_5210_test.py:70:
2024-05-12 18:17:12.903 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2024-05-12 18:17:12.909
2024-05-12 18:17:12.915 self = Connection[1579], exc_type = None, exc_value = None, traceback = None
2024-05-12 18:17:12.921
2024-05-12 18:17:12.927 def __exit__(self, exc_type, exc_value, traceback) -> None:
2024-05-12 18:17:12.933 >       self.close()
2024-05-12 18:17:12.939
2024-05-12 18:17:12.946 ../lib/python3.11/site-packages/firebird/driver/core.py:1666:
2024-05-12 18:17:12.952 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2024-05-12 18:17:12.958
2024-05-12 18:17:12.964 self = Connection[1579]
2024-05-12 18:17:12.969
2024-05-12 18:17:12.975 def close(self) -> None:
2024-05-12 18:17:12.981 """Close the connection and release all associated resources.
2024-05-12 18:17:12.988
2024-05-12 18:17:12.995 Closes all event collectors, transaction managers (with rollback) and statements
2024-05-12 18:17:13.002 associated with this connection before attempt (see Hooks) to close the
2024-05-12 18:17:13.007 connection itself.
2024-05-12 18:17:13.013
2024-05-12 18:17:13.018 Hooks:
2024-05-12 18:17:13.022 Event `.ConnectionHook.DETACH_REQUEST`: Executed before connection
2024-05-12 18:17:13.028 is closed. Hook must have signature::
2024-05-12 18:17:13.033
2024-05-12 18:17:13.038 hook_func(connection: Connection) -> bool
2024-05-12 18:17:13.043
2024-05-12 18:17:13.047 .. note::
2024-05-12 18:17:13.052
2024-05-12 18:17:13.057 If any hook function returns True, connection is NOT closed.
2024-05-12 18:17:13.062
2024-05-12 18:17:13.067 Event `.ConnectionHook.CLOSED`: Executed after connection is closed.
2024-05-12 18:17:13.072 Hook must have signature::
2024-05-12 18:17:13.077
2024-05-12 18:17:13.082 hook_func(connection: Connection) -> None
2024-05-12 18:17:13.087
2024-05-12 18:17:13.092 Any value returned by hook is ignored.
2024-05-12 18:17:13.097
2024-05-12 18:17:13.102 Important:
2024-05-12 18:17:13.107 Closed connection SHALL NOT be used anymore.
2024-05-12 18:17:13.111 """
2024-05-12 18:17:13.116 if not self.is_closed():
2024-05-12 18:17:13.121 retain = False
2024-05-12 18:17:13.125 try:
2024-05-12 18:17:13.130 >               self._close()
2024-05-12 18:17:13.135
2024-05-12 18:17:13.140 ../lib/python3.11/site-packages/firebird/driver/core.py:1854:
2024-05-12 18:17:13.145 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2024-05-12 18:17:13.149
2024-05-12 18:17:13.154 self = Connection[1579]
2024-05-12 18:17:13.159
2024-05-12 18:17:13.164 def _close(self) -> None:
2024-05-12 18:17:13.170 if self.__schema is not None:
2024-05-12 18:17:13.175 self.__schema._set_internal(False)
2024-05-12 18:17:13.180 self.__schema.close()
2024-05-12 18:17:13.184 if self.__monitor is not None:
2024-05-12 18:17:13.189 self.__monitor._set_internal(False)
2024-05-12 18:17:13.194 self.__monitor.close()
2024-05-12 18:17:13.198 self._ic.close()
2024-05-12 18:17:13.203 for collector in self.__ecollectors:
2024-05-12 18:17:13.208 collector.close()
2024-05-12 18:17:13.212 >       self.main_transaction._finish(DefaultAction.ROLLBACK)
2024-05-12 18:17:13.217
2024-05-12 18:17:13.222 ../lib/python3.11/site-packages/firebird/driver/core.py:1691:
2024-05-12 18:17:13.227 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2024-05-12 18:17:13.231
2024-05-12 18:17:13.236 self = <firebird.driver.core.TransactionManager object at [hex]>
2024-05-12 18:17:13.240 default_action = <DefaultAction.ROLLBACK: 2>
2024-05-12 18:17:13.245
2024-05-12 18:17:13.250 def _finish(self, default_action: DefaultAction=None) -> None:
2024-05-12 18:17:13.254 try:
2024-05-12 18:17:13.259 if self._tra is not None:
2024-05-12 18:17:13.264 if default_action is None:
2024-05-12 18:17:13.268 default_action = self.default_action
2024-05-12 18:17:13.273 if default_action == DefaultAction.COMMIT:
2024-05-12 18:17:13.277 self.commit()
2024-05-12 18:17:13.282 else:
2024-05-12 18:17:13.287 >                   self.rollback()
2024-05-12 18:17:13.292
2024-05-12 18:17:13.296 ../lib/python3.11/site-packages/firebird/driver/core.py:2399:
2024-05-12 18:17:13.301 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2024-05-12 18:17:13.305
2024-05-12 18:17:13.310 self = <firebird.driver.core.TransactionManager object at [hex]>
2024-05-12 18:17:13.315
2024-05-12 18:17:13.320 def rollback(self, *, retaining: bool=False, savepoint: str=None) -> None:
2024-05-12 18:17:13.324 """Rolls back the transaction managed by this instance.
2024-05-12 18:17:13.329
2024-05-12 18:17:13.333 Arguments:
2024-05-12 18:17:13.339 retaining: When True, the transaction context is retained after rollback.
2024-05-12 18:17:13.344 savepoint: When specified, the transaction is rolled back to savepoint with given name.
2024-05-12 18:17:13.348
2024-05-12 18:17:13.353 Raises:
2024-05-12 18:17:13.358 InterfaceError: When both retaining and savepoint parameters are specified.
2024-05-12 18:17:13.362 """
2024-05-12 18:17:13.366 assert not self.__closed
2024-05-12 18:17:13.371 assert self.is_active()
2024-05-12 18:17:13.376 if retaining and savepoint:
2024-05-12 18:17:13.380 raise InterfaceError("Can't rollback to savepoint while retaining context")
2024-05-12 18:17:13.385 if savepoint:
2024-05-12 18:17:13.389 self.execute_immediate(f'rollback to {savepoint}')
2024-05-12 18:17:13.394 else:
2024-05-12 18:17:13.398 if retaining:
2024-05-12 18:17:13.403 self._tra.rollback_retaining()
2024-05-12 18:17:13.408 else:
2024-05-12 18:17:13.413 self._close_cursors()
2024-05-12 18:17:13.418 >               self._tra.rollback()
2024-05-12 18:17:13.422
2024-05-12 18:17:13.427 ../lib/python3.11/site-packages/firebird/driver/core.py:2487:
2024-05-12 18:17:13.432 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2024-05-12 18:17:13.437
2024-05-12 18:17:13.441 self = <firebird.driver.interfaces.iTransaction_v3 object at [hex]>
2024-05-12 18:17:13.446
2024-05-12 18:17:13.451 def rollback(self) -> None:
2024-05-12 18:17:13.455 "Replaces `isc_rollback_transaction()`"
2024-05-12 18:17:13.460 self.vtable.deprecatedRollback(self, self.status)
2024-05-12 18:17:13.464 >       self._check()
2024-05-12 18:17:13.469
2024-05-12 18:17:13.474 ../lib/python3.11/site-packages/firebird/driver/interfaces.py:438:
2024-05-12 18:17:13.479 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2024-05-12 18:17:13.484
2024-05-12 18:17:13.489 self = <firebird.driver.interfaces.iTransaction_v3 object at [hex]>
2024-05-12 18:17:13.494
2024-05-12 18:17:13.499 def _check(self) -> None:
2024-05-12 18:17:13.504 state = self.status.get_state()
2024-05-12 18:17:13.509 if StateFlag.ERRORS in state:
2024-05-12 18:17:13.514 >           raise self.__report(DatabaseError, self.status.get_errors())
2024-05-12 18:17:13.519 E           firebird.driver.types.DatabaseError: invalid transaction handle (expecting explicit transaction start)
2024-05-12 18:17:13.524
2024-05-12 18:17:13.529 ../lib/python3.11/site-packages/firebird/driver/interfaces.py:113: DatabaseError
2024-05-12 18:17:13.533 ---------------------------- Captured stdout setup -----------------------------
2024-05-12 18:17:13.538 Cached db: db-12.0-None-None-NONE.fdb [page_size=None, sql_dialect=None, charset='NONE'
2024-05-12 18:17:13.543 ----------------------------- Captured stdout call -----------------------------
2024-05-12 18:17:13.548 {'dml_event': 1}
2024-05-12 18:17:13.552 1: event was SUCCESSFULLY delivered.
2024-05-12 18:17:13.558 {'dml_event': 1}
2024-05-12 18:17:13.564 2: event was SUCCESSFULLY delivered.
2024-05-12 18:17:13.570 {'dml_event': 1}
2024-05-12 18:17:13.575 3: event was SUCCESSFULLY delivered.
2024-05-12 18:17:13.580 {'dml_event': 1}
2024-05-12 18:17:13.585 4: event was SUCCESSFULLY delivered.
2024-05-12 18:17:13.589 {'dml_event': 1}
2024-05-12 18:17:13.594 5: event was SUCCESSFULLY delivered.
3 #text
act = <firebird.qa.plugin.Action pytest object at [hex]>
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>

    @pytest.mark.version('>=3')
    def test_1(act: Action, capsys):
       def check_events(seqno: int):
          with act.db.connect() as con:
             timed_event = Timer(1.0, send_events, args=[con, ["insert into test(id) values (rand()*1000)",]])
             with con.event_collector(['dml_event']) as events:
                timed_event.start()
                t1 = time()
                max4delivering = 3
                e = events.wait(max4delivering)
                t2 = time()
             print(e)
             print(f'{seqno}: event was SUCCESSFULLY delivered.' if t2-t1 < max4delivering
                   else f'{seqno}: event was NOT delivered for {t2-t1}s (threshold is {max4delivering}s)')
    
       #
       check_events(1)
       check_events(2)
       check_events(3)
       check_events(4)
>      check_events(5)

tests/bugs/core_5210_test.py:87: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

seqno = 5

    def check_events(seqno: int):
>      with act.db.connect() as con:

tests/bugs/core_5210_test.py:70: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection[1579], exc_type = None, exc_value = None, traceback = None

    def __exit__(self, exc_type, exc_value, traceback) -> None:
>       self.close()

../lib/python3.11/site-packages/firebird/driver/core.py:1666: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection[1579]

    def close(self) -> None:
        """Close the connection and release all associated resources.
    
        Closes all event collectors, transaction managers (with rollback) and statements
        associated with this connection before attempt (see Hooks) to close the
        connection itself.
    
        Hooks:
            Event `.ConnectionHook.DETACH_REQUEST`: Executed before connection
            is closed. Hook must have signature::
    
                hook_func(connection: Connection) -> bool
    
            .. note::
    
               If any hook function returns True, connection is NOT closed.
    
            Event `.ConnectionHook.CLOSED`: Executed after connection is closed.
            Hook must have signature::
    
                hook_func(connection: Connection) -> None
    
            Any value returned by hook is ignored.
    
        Important:
            Closed connection SHALL NOT be used anymore.
        """
        if not self.is_closed():
            retain = False
            try:
>               self._close()

../lib/python3.11/site-packages/firebird/driver/core.py:1854: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection[1579]

    def _close(self) -> None:
        if self.__schema is not None:
            self.__schema._set_internal(False)
            self.__schema.close()
        if self.__monitor is not None:
            self.__monitor._set_internal(False)
            self.__monitor.close()
        self._ic.close()
        for collector in self.__ecollectors:
            collector.close()
>       self.main_transaction._finish(DefaultAction.ROLLBACK)

../lib/python3.11/site-packages/firebird/driver/core.py:1691: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <firebird.driver.core.TransactionManager pytest object at [hex]>
default_action = <DefaultAction.ROLLBACK: 2>

    def _finish(self, default_action: DefaultAction=None) -> None:
        try:
            if self._tra is not None:
                if default_action is None:
                    default_action = self.default_action
                if default_action == DefaultAction.COMMIT:
                    self.commit()
                else:
>                   self.rollback()

../lib/python3.11/site-packages/firebird/driver/core.py:2399: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <firebird.driver.core.TransactionManager pytest object at [hex]>

    def rollback(self, *, retaining: bool=False, savepoint: str=None) -> None:
        """Rolls back the transaction managed by this instance.
    
        Arguments:
            retaining: When True, the transaction context is retained after rollback.
            savepoint: When specified, the transaction is rolled back to savepoint with given name.
    
        Raises:
            InterfaceError: When both retaining and savepoint parameters are specified.
        """
        assert not self.__closed
        assert self.is_active()
        if retaining and savepoint:
            raise InterfaceError("Can't rollback to savepoint while retaining context")
        if savepoint:
            self.execute_immediate(f'rollback to {savepoint}')
        else:
            if retaining:
                self._tra.rollback_retaining()
            else:
                self._close_cursors()
>               self._tra.rollback()

../lib/python3.11/site-packages/firebird/driver/core.py:2487: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <firebird.driver.interfaces.iTransaction_v3 pytest object at [hex]>

    def rollback(self) -> None:
        "Replaces `isc_rollback_transaction()`"
        self.vtable.deprecatedRollback(self, self.status)
>       self._check()

../lib/python3.11/site-packages/firebird/driver/interfaces.py:438: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <firebird.driver.interfaces.iTransaction_v3 pytest object at [hex]>

    def _check(self) -> None:
        state = self.status.get_state()
        if StateFlag.ERRORS in state:
>           raise self.__report(DatabaseError, self.status.get_errors())
E           firebird.driver.types.DatabaseError: invalid transaction handle (expecting explicit transaction start)

../lib/python3.11/site-packages/firebird/driver/interfaces.py:113: DatabaseError
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 3.0.13.33809 2025.05.06 28ad0 P P 6539 5765 2025.07.02 15:19:27.851 2025.07.02 15:19:34.390 2025.07.02 14:27:22.408 2025.07.02 14:27:28.173
2 3.0.13.33808 2025.04.25 28426 P P 6930 5879 2025.05.06 13:52:47.557 2025.05.06 13:52:54.487 2025.05.06 12:50:40.719 2025.05.06 12:50:46.598
3 3.0.13.33803 2025.02.25 08ebd P P 7028 5902 2025.04.25 17:07:49.301 2025.04.25 17:07:56.329 2025.04.25 16:06:12.260 2025.04.25 16:06:18.162
4 3.0.13.33796 2025.01.29 0ab85 P P 1088 551 2025.02.25 15:40:32.357 2025.02.25 15:40:33.445 2025.02.25 14:38:58.938 2025.02.25 14:38:59.489
5 3.0.13.33796 2025.01.14 99b3b P P 1068 536 2025.01.28 17:55:02.395 2025.01.28 17:55:03.463 2025.01.28 16:51:43.884 2025.01.28 16:51:44.420
6 3.0.13.33795 2024.11.24 b8847 P P 1020 510 2025.01.13 15:32:19.816 2025.01.13 15:32:20.836 2025.01.13 14:30:01.841 2025.01.13 14:30:02.351
7 3.0.13.33794 2024.10.15 abe09 P P 817 427 2024.11.23 06:36:56.778 2024.11.23 06:36:57.595 2024.11.23 05:50:10.978 2024.11.23 05:50:11.405
8 3.0.13.33793 2024.10.04 82ccc P P 1039 456 2024.10.14 04:33:10.637 2024.10.14 04:33:11.676 2024.10.14 03:41:51.245 2024.10.14 03:41:51.701
9 3.0.13.33792 2024.08.31 d8791 P P 1090 455 2024.10.03 09:40:16.053 2024.10.03 09:40:17.143 2024.10.03 08:45:17.585 2024.10.03 08:45:18.040
10 3.0.13.33787 2024.08.17 2e0d6 P P 1918 929 2024.08.25 15:35:01.661 2024.08.25 15:35:03.579 2024.08.25 13:35:14.648 2024.08.25 13:35:15.577
11 3.0.13.33787 2024.08.09 df740 P P 1178 580 2024.08.16 12:56:35.208 2024.08.16 12:56:36.386 2024.08.16 11:54:22.810 2024.08.16 11:54:23.390
12 3.0.12.33746 2024.07.15 11dd4 P P 1134 516 2024.08.09 12:52:11.996 2024.08.09 12:52:13.130 2024.08.09 11:48:52.979 2024.08.09 11:48:53.495
13 3.0.12.33746 2024.06.11 8a5eb P P 887 403 2024.07.15 10:43:31.335 2024.07.15 10:43:32.222 2024.07.15 09:50:29.292 2024.07.15 09:50:29.695
14 3.0.12.33744 2024.05.09 9cf37 P F 704 359 2024.05.12 15:49:42.252 2024.05.12 15:49:42.956 2024.05.12 15:01:57.010 2024.05.12 15:01:57.369
15 3.0.12.33744 2024.04.20 af6b2 P P 740 312 2024.05.08 17:05:11.027 2024.05.08 17:05:11.767 2024.05.08 16:19:35.931 2024.05.08 16:19:36.243

Elapsed time, ms. Chart for last 15 runs:

Last commits information (all timestamps in UTC):