﻿id	summary	reporter	owner	description	type	status	priority	component	severity	resolution	keywords	cc	release
14013	environment_needs_upgrade incorrectly returns false after upgrade failure	Ryan J Ollos	Jun Omae	"The upgrade failed due to missing FTS5 extension:

{{{#!sh
$ trac-admin ""/Users/rjollos/Documents/Workspace/trac-dev/tracenvs/proj-1.3"" upgrade
19:29:17 Trac[loader] ERROR: Skipping ""S3AttachmentStorage"": ImportError: No module named boto3
19:29:17 Trac[env] WARNING: Component <Component tracdbfts.api.TracDbftsSystem> requires an environment upgrade
19:29:17 Trac[env] WARNING: Component <Component tracdbfts.api.TracDbftsSystem> requires an environment upgrade
19:29:17 Trac[env] ERROR: Component <Component tracdbfts.api.TracDbftsSystem> failed with
Traceback (most recent call last):
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/env.py"", line 387, in component_guard
    yield
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/env.py"", line 787, in upgrade
    participant.upgrade_environment()
  File ""/Users/rjollos/Documents/Workspace/trac-dev/trac-hacks/tracdbftsplugin/trunk/tracdbfts/api.py"", line 66, in upgrade_environment
    self._interface.create_schema()
  File ""/Users/rjollos/Documents/Workspace/trac-dev/trac-hacks/tracdbftsplugin/trunk/tracdbfts/api.py"", line 521, in create_schema
    """""")
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/db/util.py"", line 74, in execute
    return self.cursor.execute(sql)
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/db/sqlite_backend.py"", line 87, in execute
    result = PyFormatCursor.execute(self, *args)
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/db/sqlite_backend.py"", line 63, in execute
    args or [])
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/db/sqlite_backend.py"", line 54, in _rollback_on_error
    return function(self, *args, **kwargs)
OperationalError: no such tokenizer: trigram
The upgrade failed. Please fix the issue and try again.

OperationalError: no such tokenizer: trigram
19:29:17 Trac[console] ERROR: Exception in trac-admin command: u'upgrade'
Traceback (most recent call last):
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/admin/console.py"", line 83, in onecmd
    rv = cmd.Cmd.onecmd(self, line) or 0
  File ""/Users/rjollos/.pyenv/versions/2.7.18/lib/python2.7/cmd.py"", line 220, in onecmd
    return self.default(line)
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/admin/console.py"", line 252, in default
    return self.cmd_mgr.execute_command(*args)
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/admin/api.py"", line 135, in execute_command
    return f(*fargs)
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/env.py"", line 1062, in _do_upgrade
    self.env.upgrade(backup=no_backup is None)
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/env.py"", line 787, in upgrade
    participant.upgrade_environment()
  File ""/Users/rjollos/Documents/Workspace/trac-dev/trac-hacks/tracdbftsplugin/trunk/tracdbfts/api.py"", line 66, in upgrade_environment
    self._interface.create_schema()
  File ""/Users/rjollos/Documents/Workspace/trac-dev/trac-hacks/tracdbftsplugin/trunk/tracdbfts/api.py"", line 521, in create_schema
    """""")
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/db/util.py"", line 74, in execute
    return self.cursor.execute(sql)
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/db/sqlite_backend.py"", line 87, in execute
    result = PyFormatCursor.execute(self, *args)
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/db/sqlite_backend.py"", line 63, in execute
    args or [])
  File ""/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/db/sqlite_backend.py"", line 54, in _rollback_on_error
    return function(self, *args, **kwargs)
OperationalError: no such tokenizer: trigram
}}}

The `dbtfs` table was created so now the system does not think the environment needs to be upgraded due to logic in [browser:/tracdbftsplugin/trunk/tracdbfts/api.py@18012:62#L55 environment_needs_upgrade].

{{{#!sqlite3
../tracenvs/proj-1.3/db/trac.db> .tables
+------------------------+
| name                   |
+------------------------+
| attachment             |
| auth_cookie            |
| cache                  |
| codereviewer           |
| codereviewer_map       |
| component              |
| component_default_cc   |
| dbfts                  |
}}}

Search results in an error:

[[Image(Screen Shot 2021-05-17 at 20.22.55.jpg)]]"	defect	new	normal	TracDbftsPlugin	normal				
