Rhodecode crashes if Mercurial repository missing an expected file

Issue #879 resolved
G
created an issue

I imported a repository into Rhodecode. Then deleted it and placed another in its place (same directory name, different repository). When I attempted to click on the repository name in Rhodecode it crashed with the following error:

Error - <class 'mercurial.error.LookupError'>: 00manifest.i@13b5a52e2474: no node
URL: https://bbs.darktech.org/hg/vtlr
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\weberror\\errormiddleware.py', line 162 in __call__
  app_iter = self.application(environ, sr_checker)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\beaker\\middleware.py', line 155 in __call__
  return self.wrap_app(environ, session_start_response)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\routes\\middleware.py', line 131 in __call__
  response = self.app(environ, start_response)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\wsgiapp.py', line 107 in __call__
  response = self.dispatch(controller, environ, start_response)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\wsgiapp.py', line 312 in dispatch
  return controller(environ, start_response)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\base.py', line 312 in __call__
  return WSGIController.__call__(self, environ, start_response)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\controllers\\core.py', line 211 in __call__
  response = self._dispatch_call()
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\controllers\\core.py', line 162 in _dispatch_call
  response = self._inspect_call(func)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\controllers\\core.py', line 105 in _inspect_call
  result = self._perform_call(func, args)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\controllers\\core.py', line 57 in _perform_call
  return func(**args)
File '<string>', line 2 in index
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\auth.py', line 562 in __wrapper
  return func(*fargs, **fkwargs)
File '<string>', line 2 in index
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\auth.py', line 624 in __wrapper
  return func(*fargs, **fkwargs)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\controllers\\summary.py', line 185 in index
  ts_max_y, recurse_limit)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\celerylib\\__init__.py', line 81 in run_task
  return ResultWrapper(task(*args, **kwargs))
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\celery\\task\\base.py', line 241 in __call__
  return self.run(*args, **kwargs)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\celery\\app\\__init__.py', line 141 in run
  return fun(*args, **kwargs)
File '<string>', line 2 in get_commits_stats
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\celerylib\\__init__.py', line 124 in __wrapper
  ret = func(*fargs, **fkwargs)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\celerylib\\tasks.py', line 193 in get_commits_stats
  "added":len(cs.added),
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\vcs\\backends\\hg\\changeset.py', line 367 in added
  return AddedFileNodesGenerator([n for n in self.status[1]], self)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\vcs\\utils\\lazy.py', line 40 in __get__
  value = self._func(obj)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\vcs\\backends\\hg\\changeset.py', line 70 in status
  self._ctx.node())
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\localrepo.py', line 1536 in status
  mf2 = mfmatches(ctx2)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\localrepo.py', line 1451 in mfmatches
  mf = ctx.manifest().copy()
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\context.py', line 180 in manifest
  return self._manifest
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\util.py', line 277 in __get__
  result = self.func(obj)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\context.py', line 150 in _manifest
  return self._repo.manifest.read(self._changeset[0])
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\manifest.py', line 59 in read
  text = self.revision(node)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\revlog.py', line 897 in revision
  rev = self.rev(node)
File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\revlog.py', line 301 in rev
  raise LookupError(node, self.indexfile, _('no node'))
LookupError: 00manifest.i@13b5a52e2474: no node

Expected behavior: Rhodecode should never crash on missing repository files.

Comments (14)

  1. Marcin Kuzminski repo owner

    RhodeCode uses various caching mechanism to keep things fast, if you mangle with repository data without telling that to rhodecode there are going to be issues. Simply invalidating cache of that repo after such operation would prevent from this error.

  2. G reporter

    Marcin,

    I disagree that this issue is invalid. It is perfectly unacceptable that a stale cache should take down the entire server. Can't you catch the exception, flush the cache and retry the operation?

  3. Marcin Kuzminski repo owner

    I don't agree this case should be handled, you first tell that to RC: here is new repo, import it and cache it, then you explicitly trick rhodecode with replacing the repository data. There's a mismatch in files and mercurial manifest, the crash is actually saying "hey something is not ok here, i expected x and got y"

    By invalidating cache, you're forcing RC to read new data. This could lead to much more issues in case that some statistics/comments/pull requests are made on repository, that you later replace with another one.

  4. Marcin Kuzminski repo owner

    No Catching exception could hide real repository corruption, and would make unneeded complication in the code, and BTW there's a special command to invalidate cache from command line.

    paster cache-keys yourinifile.ini --cleanup
    

    Next time you want to do something like this, run this after, and all going to be fine.

  5. G reporter
    1. If a single server is hosting 1000s of repositories and one of them is edited in some unexpected way, it makes no sense to crash the entire server. Imagine if Bitbucket or Github went down every time they encountered a single repository that happened to contain unexpected values.

    2. A cache, by definition, is there to return previously-computed values. If the cache gets stale for whatever reason, you're supposed to be able to recompute the value (and update the cache accordingly).

    3. I fail to see how regenerating the cache would cause a problem if a comment/pull request is later replaced with another one. If Rhodecode encounters a caching problem, I expect it to dump the entire cache. In such a case, it wouldn't matter if I replaced comments or pull requests because you'd reparse them as well.

    4. I understand and accept that regenerating the cache may cause the resetting of statistics. That's not unexpected. If the repository changed in some fundamental way, then the old statistics no longer hold.

    5. This issue is not necessarily the result of repository corruption. If it is (in which case regenerating the cache will fail), you should catch the error and display an error message to the user: "The requested repository may be corrupt and cannot be accessed at this time". This way at most a single repository is blocked off, and the rest of the server remains offline.

  6. Marcin Kuzminski repo owner

    re pt1. It's not the server that goes down, all other repos are going to be accessible just the single repo that is corrupted will be crashing.

    If you replace one repo with another one nothing previously done on origin repo applies, so any comments/pull requests made needs to be deleted. Files changesets comments simply wouldn't match, there's no way to re-parse them

  7. G reporter

    Sorry for the misunderstanding. I am/was under the impression that the entire server went down when this happened. Here is the continuation of the log after the stack-trace:

    CGI Variables
    -------------
      CONNECTION_TYPE: 'Keep-Alive'
      CONTENT_TYPE: '; charset="utf-8"'
      HTTP_ACCEPT: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
      HTTP_ACCEPT_ENCODING: 'gzip,deflate,sdch'
      HTTP_ACCEPT_LANGUAGE: 'en-US,en;q=0.8'
      HTTP_COOKIE: 'atlassian.xsrf.token=A6N4-FM5X-KNGU-B4D4|d4b64001c2a8388ce399fefa7ff3bdfc6d8403a8|lout; menu.3.4=true; AJS.conglomerate.cookie=""; doc-sidebar=300px; hudson_auto_refresh=true; JSESSIONID=D8382602857ED0A6C257D75056C310CB; rhodecode=b8789fe9f36786852a02245c90f12e75124cecfe5c5957834f054d8faf6c5a7b145aee72'
      HTTP_HOST: 'bbs.darktech.org'
      HTTP_REFERER: 'https://bbs.darktech.org/hg'
      HTTP_USER_AGENT: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36'
      PATH_INFO: '/vtlr'
      REMOTE_ADDR: '192.168.1.1'
      REQUEST_METHOD: 'GET'
      SCRIPT_NAME: '/hg'
      SERVER_NAME: 'bbs.darktech.org'
      SERVER_PORT: '1003'
      SERVER_PROTOCOL: 'HTTP/1.1'
      SERVER_SOFTWARE: 'waitress'
    
    
    WSGI Variables
    --------------
      application: <beaker.middleware.SessionMiddleware object at 0x00000000048F7908>
      beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x00000000048F7908>>
      beaker.session: {'_authentication_token': '516e2ac0cecbfc0dec28f4715fa79d8557deb8ce', 'rhodecode_user': {'username': u'gili.tzabari', 'is_authenticated': True, 'user_id': 2L}, '_accessed_time': 1373410317.818, '_creation_time': 1373308547.392}
      paste.registry: <paste.registry.Registry object at 0x00000000049E3FD0>
      paste.throw_errors: True
      pylons.action_method: <bound method SummaryController.index of <rhodecode.controllers.summary.SummaryController object at 0x00000000048F77F0>>
      pylons.controller: <rhodecode.controllers.summary.SummaryController object at 0x00000000048F77F0>
      pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'}
      pylons.pylons: <pylons.util.PylonsContext object at 0x00000000048F7278>
      pylons.routes_dict: {'action': u'index', 'controller': u'summary', 'repo_name': u'vtlr'}
      routes.cached_hostinfo: {'host': 'bbs.darktech.org', 'protocol': 'https'}
      routes.route: <routes.route.Route object at 0x0000000004364C88>
      routes.url: <routes.util.URLGenerator object at 0x00000000068FAF28>
      webob._parsed_query_vars: (GET([]), '')
      webob.adhoc_attrs: {'user': <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')>, 'language': 'en-us'}
      wsgi process: 'Multithreaded'
      wsgi._org_proto: 'http'
      wsgi.file_wrapper: <class 'waitress.buffers.ReadOnlyFileBasedBuffer'>
      wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x00000000068FAF28>, {'action': u'index', 'controller': u'summary', 'repo_name': u'vtlr'})
    ------------------------------------------------------------
    2013-07-09 18:51:57.986 INFO  [rhodecode.RequestWrapper] IP: 192.168.1.1 Request to /vtlr time: 0.172s
    2013-07-09 18:51:58.013 INFO  [rhodecode.lib.base] IP: 192.168.1.1 User: <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')> accessed /vtlr
    2013-07-09 18:51:58.019 INFO  [rhodecode.RequestWrapper] IP: 192.168.1.1 Request to /vtlr time: 0.034s
    2013-07-09 18:51:59.390 INFO  [rhodecode.lib.base] IP: 192.168.1.1 User: <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')> accessed /vtlr
    2013-07-09 18:51:59.446 INFO  [rhodecode.lib.auth] user gili.tzabari is authenticated and granted access to SummaryController:index using RegularAuth
    2013-07-09 18:51:59.470 INFO  [rhodecode.lib.celerylib.tasks] running task with lockkey task_0fd17c3804a1903506b13f98aea516ff.lock
    2013-07-09 18:55:20.305 INFO  [rhodecode.model] initializing db for mysql://rhodecode:XXXXX@127.0.0.1/rhodecode
    2013-07-09 18:55:20.306 INFO  [rhodecode.lib.auth] getting information about all available permissions
    2013-07-09 18:55:20.418 ERROR [rhodecode.lib.vcs.backends.git.repository] Couldn't run git command (git --version).
    Original error was:Subprocess exited due to an error:
    'git' is not recognized as an internal or external command,
    
    operable program or batch file.
    
    
    
    2013-07-09 18:55:20.418 WARNI [rhodecode.lib.utils] Unable to detect git version, org error was: EnvironmentError("Subprocess exited due to an error:\n'git' is not recognized as an internal or external command,\r\noperable program or batch file.\r\n",)
    2013-07-09 18:55:20.418 INFO  [rhodecode.model.scm] scanning for repositories in C:\Users\Gili\Documents\MercurialRepositories
    Starting server in PID 11008.
    serving on http://127.0.0.1:1003
    2013-07-09 18:55:21.105 INFO  [rhodecode.lib.base] IP: 192.168.1.1 User: <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')> accessed /
    2013-07-09 18:55:21.121 INFO  [rhodecode.lib.auth] user gili.tzabari is authenticated and granted access to HomeController:index using RegularAuth
    2013-07-09 18:55:21.183 INFO  [rhodecode.RequestWrapper] IP: 192.168.1.1 Request to / time: 0.208s
    2013-07-09 18:55:25.686 INFO  [rhodecode.lib.base] IP: 192.168.1.1 User: <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')> accessed /_admin/repos
    2013-07-09 18:55:25.686 INFO  [rhodecode.lib.auth] user gili.tzabari is authenticated and granted access to ReposController:__before__ using RegularAuth
    2013-07-09 18:55:25.750 INFO  [rhodecode.RequestWrapper] IP: 192.168.1.1 Request to /_admin/repos time: 0.184s
    2013-07-09 18:55:27.901 INFO  [rhodecode.lib.base] IP: 192.168.1.1 User: <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')> accessed /_admin/repos
    2013-07-09 18:55:27.901 INFO  [rhodecode.lib.auth] user gili.tzabari is authenticated and granted access to ReposController:__before__ using RegularAuth
    2013-07-09 18:55:27.956 INFO  [rhodecode.RequestWrapper] IP: 192.168.1.1 Request to /_admin/repos time: 0.086s
    2013-07-09 18:55:30.818 INFO  [rhodecode.lib.base] IP: 192.168.1.1 User: <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')> accessed /vtlr/settings
    ...snip...
    

    Can you tell by this whether the server crashed or whether I explicitly restarted the service (I'm running under Windows)? I thought it crashed but to be honest at this point I don't remember.

  8. G reporter
    • changed status to open

    I just reproduced this issue and I can say for certain that the entire server crashed, not just the specific repository.

    Here are the relevant lines from rhodecode_std.log (from the moment I made the request, to the end of the file):

    2013-08-09 00:45:11.901 INFO  [rhodecode.lib.auth] user gili.tzabari is authenticated and granted access to SummaryController:index using RegularAuth
    2013-08-09 00:45:11.928 INFO  [rhodecode.lib.celerylib.tasks] running task with lockkey task_6bb4a095e8d78a0f2ad2c7f2d4e08c01.lock
    Error - <class 'mercurial.error.LookupError'>: 00manifest.i@206f470c3f0e: no node
    URL: https://bbs.darktech.org/hg/webrtc
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\weberror\\errormiddleware.py', line 162 in __call__
      app_iter = self.application(environ, sr_checker)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\beaker\\middleware.py', line 155 in __call__
      return self.wrap_app(environ, session_start_response)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\routes\\middleware.py', line 131 in __call__
      response = self.app(environ, start_response)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\wsgiapp.py', line 107 in __call__
      response = self.dispatch(controller, environ, start_response)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\wsgiapp.py', line 312 in dispatch
      return controller(environ, start_response)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\base.py', line 312 in __call__
      return WSGIController.__call__(self, environ, start_response)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\controllers\\core.py', line 211 in __call__
      response = self._dispatch_call()
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\controllers\\core.py', line 162 in _dispatch_call
      response = self._inspect_call(func)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\controllers\\core.py', line 105 in _inspect_call
      result = self._perform_call(func, args)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\pylons\\controllers\\core.py', line 57 in _perform_call
      return func(**args)
    File '<string>', line 2 in index
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\auth.py', line 562 in __wrapper
      return func(*fargs, **fkwargs)
    File '<string>', line 2 in index
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\auth.py', line 624 in __wrapper
      return func(*fargs, **fkwargs)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\controllers\\summary.py', line 185 in index
      ts_max_y, recurse_limit)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\celerylib\\__init__.py', line 81 in run_task
      return ResultWrapper(task(*args, **kwargs))
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\celery\\task\\base.py', line 241 in __call__
      return self.run(*args, **kwargs)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\celery\\app\\__init__.py', line 141 in run
      return fun(*args, **kwargs)
    File '<string>', line 2 in get_commits_stats
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\celerylib\\__init__.py', line 124 in __wrapper
      ret = func(*fargs, **fkwargs)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\celerylib\\tasks.py', line 226 in get_commits_stats
      stats.languages = json.dumps(__get_codes_stats(repo_name))
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\celerylib\\tasks.py', line 389 in __get_codes_stats
      map(aggregate, tip.walk('/'))
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\vcs\\backends\\base.py', line 633 in walk
      topnode = self.get_node(topurl)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\vcs\\backends\\hg\\changeset.py', line 340 in get_node
      if path in self._file_paths:
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\vcs\\utils\\lazy.py', line 40 in __get__
      value = self._func(obj)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\rhodecode-1.7.1-py2.7.egg\\rhodecode\\lib\\vcs\\backends\\hg\\changeset.py', line 74 in _file_paths
      return list(self._ctx)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\context.py', line 174 in __iter__
      for f in sorted(self._manifest):
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\util.py', line 277 in __get__
      result = self.func(obj)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\context.py', line 150 in _manifest
      return self._repo.manifest.read(self._changeset[0])
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\manifest.py', line 59 in read
      text = self.revision(node)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\revlog.py', line 897 in revision
      rev = self.rev(node)
    File 'c:\\Users\\Gili\\Documents\\rhodecode\\lib\\site-packages\\mercurial-2.6.2-py2.7-win-amd64.egg\\mercurial\\revlog.py', line 301 in rev
      raise LookupError(node, self.indexfile, _('no node'))
    LookupError: 00manifest.i@206f470c3f0e: no node
    
    
    CGI Variables
    -------------
      CONNECTION_TYPE: 'Keep-Alive'
      CONTENT_TYPE: '; charset="utf-8"'
      HTTP_ACCEPT: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
      HTTP_ACCEPT_ENCODING: 'gzip,deflate,sdch'
      HTTP_ACCEPT_LANGUAGE: 'en-US,en;q=0.8'
      HTTP_COOKIE: 'atlassian.xsrf.token=A6N4-FM5X-KNGU-B4D4|d4b64001c2a8388ce399fefa7ff3bdfc6d8403a8|lout; menu.3.4=true; AJS.conglomerate.cookie=""; JSESSIONID=D8382602857ED0A6C257D75056C310CB; rhodecode=b8789fe9f36786852a02245c90f12e75124cecfe5c5957834f054d8faf6c5a7b145aee72; hudson_auto_refresh=false; doc-sidebar=300px; mywork.tab.tasks=false'
      HTTP_HOST: 'bbs.darktech.org'
      HTTP_REFERER: 'https://bbs.darktech.org/hg'
      HTTP_USER_AGENT: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36'
      PATH_INFO: '/webrtc'
      REMOTE_ADDR: '192.168.1.1'
      REQUEST_METHOD: 'GET'
      SCRIPT_NAME: '/hg'
      SERVER_NAME: 'bbs.darktech.org'
      SERVER_PORT: '1003'
      SERVER_PROTOCOL: 'HTTP/1.1'
      SERVER_SOFTWARE: 'waitress'
    
    
    WSGI Variables
    --------------
      application: <beaker.middleware.SessionMiddleware object at 0x000000000483A908>
      beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x000000000483A908>>
      beaker.session: {'_authentication_token': '516e2ac0cecbfc0dec28f4715fa79d8557deb8ce', 'rhodecode_user': {'username': u'gili.tzabari', 'is_authenticated': True, 'user_id': 2L}, '_accessed_time': 1376023511.815, '_creation_time': 1373308547.392}
      paste.registry: <paste.registry.Registry object at 0x0000000004A3A160>
      paste.throw_errors: True
      pylons.action_method: <bound method SummaryController.index of <rhodecode.controllers.summary.SummaryController object at 0x0000000006D86D68>>
      pylons.controller: <rhodecode.controllers.summary.SummaryController object at 0x0000000006D86D68>
      pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'}
      pylons.pylons: <pylons.util.PylonsContext object at 0x0000000006D861D0>
      pylons.routes_dict: {'action': u'index', 'controller': u'summary', 'repo_name': u'webrtc'}
      routes.cached_hostinfo: {'host': 'bbs.darktech.org', 'protocol': 'https'}
      routes.route: <routes.route.Route object at 0x00000000042ABC88>
      routes.url: <routes.util.URLGenerator object at 0x0000000006D7CEF0>
      webob._parsed_query_vars: (GET([]), '')
      webob.adhoc_attrs: {'user': <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')>, 'language': 'en-us'}
      wsgi process: 'Multithreaded'
      wsgi._org_proto: 'http'
      wsgi.file_wrapper: <class 'waitress.buffers.ReadOnlyFileBasedBuffer'>
      wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x0000000006D7CEF0>, {'action': u'index', 'controller': u'summary', 'repo_name': u'webrtc'})
    ------------------------------------------------------------
    2013-08-09 00:45:12.108 INFO  [rhodecode.RequestWrapper] IP: 192.168.1.1 Request to /webrtc time: 0.297s
    2013-08-09 00:45:12.134 INFO  [rhodecode.lib.base] IP: 192.168.1.1 User: <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')> accessed /webrtc
    2013-08-09 00:45:12.141 INFO  [rhodecode.RequestWrapper] IP: 192.168.1.1 Request to /webrtc time: 0.033s
    2013-08-09 00:45:13.552 INFO  [rhodecode.lib.base] IP: 192.168.1.1 User: <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')> accessed /
    2013-08-09 00:45:13.559 INFO  [rhodecode.lib.auth] user gili.tzabari is authenticated and granted access to HomeController:index using RegularAuth
    2013-08-09 00:45:13.605 INFO  [rhodecode.RequestWrapper] IP: 192.168.1.1 Request to / time: 0.086s
    2013-08-09 00:45:26.490 INFO  [rhodecode.lib.base] IP: 192.168.1.1 User: <AuthUser('id:2[gili.tzabari] ip:192.168.1.1 auth:True')> accessed /webrtc
    2013-08-09 00:45:26.545 INFO  [rhodecode.lib.auth] user gili.tzabari is authenticated and granted access to SummaryController:index using RegularAuth
    2013-08-09 00:45:26.572 INFO  [rhodecode.lib.celerylib.tasks] running task with lockkey task_6bb4a095e8d78a0f2ad2c7f2d4e08c01.lock
    
  9. Marcin Kuzminski repo owner

    I tried to reproduce this multiple times, and i couldn't get the server to die. I think it's highly unlikely that the whole instance dies, because of one exception.

    Anyway we need a step-by-step reproducible example with the case that server actually goes off

  10. Log in to comment