repoapi.py
changeset 9111 9c867d852067
parent 9105 55738c9dc26f
child 9116 57387c6482e5
equal deleted inserted replaced
9110:ed8b383d94fd 9111:9c867d852067
   147 
   147 
   148     def __init__(self, session, autoclose_session=False):
   148     def __init__(self, session, autoclose_session=False):
   149         self._session = session # XXX there is no real reason to keep the
   149         self._session = session # XXX there is no real reason to keep the
   150                                 # session around function still using it should
   150                                 # session around function still using it should
   151                                 # be rewritten and migrated.
   151                                 # be rewritten and migrated.
   152         self._cnxid = None
       
   153         self._cnx = None
   152         self._cnx = None
   154         self._open = None
   153         self._open = None
   155         self._web_request = False
   154         self._web_request = False
   156         self.vreg = session.vreg
   155         self.vreg = session.vreg
   157         self._set_user(session.user)
   156         self._set_user(session.user)
   158         self._autoclose_session = autoclose_session
   157         self._autoclose_session = autoclose_session
   159 
   158 
   160     def __enter__(self):
   159     def __enter__(self):
   161         assert self._open is None
   160         assert self._open is None
   162         self._open = True
   161         self._open = True
   163         self._cnxid = '%s-%s' % (self._session.id, uuid4().hex)
   162         self._cnx = self._session.new_cnx()
   164         self._cnx = self._session.get_cnx(self._cnxid)
   163         self._cnx.__enter__()
   165         self._cnx.ctx_count += 1
   164         self._cnx.ctx_count += 1
   166 
   165 
   167     def __exit__(self, exc_type, exc_val, exc_tb):
   166     def __exit__(self, exc_type, exc_val, exc_tb):
   168         self._open = False
   167         self._open = False
   169         self._cnxid = None
       
   170         self._cnx.ctx_count -= 1
   168         self._cnx.ctx_count -= 1
   171         self._session.close_cnx(self._cnx)
   169         self._cnx.__exit__(exc_type, exc_val, exc_tb)
   172         self._cnx = None
   170         self._cnx = None
   173         if self._autoclose_session:
   171         if self._autoclose_session:
   174             # we have to call repo.close to unsure the repo properly forget the
   172             # we have to call repo.close to unsure the repo properly forget the
   175             # session calling session.close() is not enought :-(
   173             # session calling session.close() is not enought :-(
   176             self._session.repo.close(self._session.id)
   174             self._session.repo.close(self._session.id)