tarantool / tarantool/migrations

Drop space doesn't work in migration in TE 2.8.4

Open
#61 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Lua
Stars
20
Forks
6
PR merge metrics
No merged PRs in 30d

Description

Steps to reproduce:

  1. Apply migration to new or existing Tarantool Cartridge project.
  2. Migration fails (see error descripton below)

Tarantool rockspec:

package = 'app'
version = 'scm-1'
source  = {
	url = '/dev/null',
}
-- Put any modules your app depends on here
dependencies = {
	'tarantool == 2.8.4',
	'lua == 5.1',
	'cartridge == 2.7.4-1',
	'metrics == 0.14.0-1',
	'cartridge-cli-extensions == 1.1.1-1',
	'crud == 0.11.3-1',
	'migrations == 0.4.2-1',
	'space-explorer == 1.1.6-1',
}
build = {
	type = 'none';
}

Migration:
01_issue_with_drop_space.lua

return {
    up = function()
        local utils = require('migrator.utils')
        local user_helper = require('app.utils.user_helper')

        -- Create space format before apply migration
        local space_name = 'first_space'

        local settings_object = box.schema.space.create(space_name, { if_not_exists = true })
        settings_object:format({
            { name = "id", type = "integer" },
            { name = "content", type = "string" },
            { name = "bucket_id", type = "unsigned" }
        })
        settings_object:create_index("primary", { parts = { { field = "id" } },
                                                  if_not_exists = true })
        settings_object:create_index("bucket_id", { parts = { { field = "bucket_id" } },
                                                    unique = false,
                                                    if_not_exists = true })

        utils.register_sharding_key(space_name, {'id'})

        --- Backup data
        local other_space_name = 'second_space'

        local backup = box.schema.space.create(other_space_name, { if_not_exists = true })
        backup:format({
            { name = "id", type = "string" },
            { name = "content", type = "string" },
            { name = "bucket_id", type = "unsigned" }
        })
        backup:create_index("primary", { parts = { { field = "id" } }, if_not_exists = true })
        backup:create_index("bucket_id", { parts = { { field = "bucket_id" } }, unique = false, if_not_exists = true })

        utils.register_sharding_key(other_space_name, {'id'})

        box.space[other_space_name]:drop()

        return true
    end
}

Error:

2022-07-18 19:31:51.546 [5147] main/166/main migrator.lua:148 E> Migration 07_issue_with_drop_space.lua not applied: migrator: /home/tarantool/app/init.lua:47: attempt to index local 'sp' (a nil value)
stack traceback:
        builtin/box/schema.lua:534: in function 'drop'
        ...app/migrations/07_issue_with_drop_space.lua:40: in function <...app/migrations/07_issue_with_drop_space.lua:2>
        [C]: in function 'xpcall'
        ...app/.rocks/share/tarantool/errors.lua:145: in function 'pcall'
        ...app/.rocks/share/tarantool/migrator.lua:146: in function <...app/.rocks/share/tarantool/migrator.lua:142>
        [C]: in function 'xpcall'
        ...app/.rocks/share/tarantool/errors.lua:145: in function <...app/.rocks/share/tarantool/errors.lua:139>
        [C]: at 0x00625bd0
2022-07-18 19:31:51.547 [5147] main/164/localhost:3302 migrator.lua:75 W> Cannot apply migrations on localhost:3302: {"line":534,"class_name":"migrator","err":"\/home\/tarantool\/app\/init.lua:47: attempt to index local 'sp' (a nil value)","file":"builtin\/box\/schema.lua","str":"migrator: \/home\/tarantool\/app\/init.lua:47: attempt to index local 'sp' (a nil value)","stack":"stack traceback:\n\tbuiltin\/box\/schema.lua:534: in function 'drop'\n\t...app\/migrations\/07_issue_with_drop_space.lua:40: in function <...app\/migrations\/07_issue_with_drop_space.lua:2>\n\t[C]: in function 'xpcall'\n\t...app\/.rocks\/share\/tarantool\/errors.lua:145: in function 'pcall'\n\t...app\/.rocks\/share\/tarantool\/migrator.lua:146: in function <...app\/.rocks\/share\/tarantool\/migrator.lua:142>\n\t[C]: in function 'xpcall'\n\t...app\/.rocks\/share\/tarantool\/errors.lua:145: in function <...app\/.rocks\/share\/tarantool\/errors.lua:139>\n\t[C]: at 0x00625bd0"}
2022-07-18 19:31:51.547 [5147] main/163/localhost:3301 migrator.lua:75 W> Cannot apply migrations on localhost:3301: {"line":534,"class_name":"migrator","err":"\/home\/tarantool\/app\/init.lua:47: attempt to index local 'sp' (a nil value)","file":"builtin\/box\/schema.lua","str":"migrator: \/home\/tarantool\/app\/init.lua:47: attempt to index local 'sp' (a nil value)","stack":"stack traceback:\n\tbuiltin\/box\/schema.lua:534: in function 'drop'\n\t...app\/migrations\/07_issue_with_drop_space.lua:40: in function <...app\/migrations\/07_issue_with_drop_space.lua:2>\n\t[C]: in function 'xpcall'\n\t...app\/.rocks\/share\/tarantool\/errors.lua:145: in function 'pcall'\n\t...app\/.rocks\/share\/tarantool\/migrator.lua:146: in function <...app\/.rocks\/share\/tarantool\/migrator.lua:142>\n\t[C]: in function 'xpcall'\n\t...app\/.rocks\/share\/tarantool\/errors.lua:145: in function <...app\/.rocks\/share\/tarantool\/errors.lua:139>\n\t[C]: at 0x00625bd0"}
2022-07-18 19:31:51.547 [5147] main/165/localhost:3304 migrator.lua:75 W> Cannot apply migrations on localhost:3304: {"line":534,"class_name":"migrator","err":"\/home\/tarantool\/app\/init.lua:47: attempt to index local 'sp' (a nil value)","file":"builtin\/box\/schema.lua","str":"migrator: \/home\/tarantool\/app\/init.lua:47: attempt to index local 'sp' (a nil value)","stack":"stack traceback:\n\tbuiltin\/box\/schema.lua:534: in function 'drop'\n\t...app\/migrations\/07_issue_with_drop_space.lua:40: in function <...app\/migrations\/07_issue_with_drop_space.lua:2>\n\t[C]: in function 'xpcall'\n\t...app\/.rocks\/share\/tarantool\/errors.lua:145: in function 'pcall'\n\t...app\/.rocks\/share\/tarantool\/migrator.lua:146: in function <...app\/.rocks\/share\/tarantool\/migrator.lua:142>\n\t[C]: in function 'xpcall'\n\t...app\/.rocks\/share\/tarantool\/errors.lua:145: in function <...app\/.rocks\/share\/tarantool\/errors.lua:139>\n\t[C]: at 0x00625bd0"}
2022-07-18 19:31:51.547 [5147] main/162/http/127.0.0.1:36512 migrator.lua:94 E> Errors happened during migrations: ["...app\/.rocks\/share\/tarantool\/migrator.lua:76: {\"line\":534,\"class_name\":\"migrator\",\"err\":\"\\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"file\":\"builtin\\\/box\\\/schema.lua\",\"str\":\"migrator: \\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"stack\":\"stack traceback:\\n\\tbuiltin\\\/box\\\/schema.lua:534: in function 'drop'\\n\\t...app\\\/migrations\\\/07_issue_with_drop_space.lua:40: in funct","...app\/.rocks\/share\/tarantool\/migrator.lua:76: {\"line\":534,\"class_name\":\"migrator\",\"err\":\"\\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"file\":\"builtin\\\/box\\\/schema.lua\",\"str\":\"migrator: \\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"stack\":\"stack traceback:\\n\\tbuiltin\\\/box\\\/schema.lua:534: in function 'drop'\\n\\t...app\\\/migrations\\\/07_issue_with_drop_space.lua:40: in funct","...app\/.rocks\/share\/tarantool\/migrator.lua:76: {\"line\":534,\"class_name\":\"migrator\",\"err\":\"\\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"file\":\"builtin\\\/box\\\/schema.lua\",\"str\":\"migrator: \\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"stack\":\"stack traceback:\\n\\tbuiltin\\\/box\\\/schema.lua:534: in function 'drop'\\n\\t...app\\\/migrations\\\/07_issue_with_drop_space.lua:40: in funct"]
2022-07-18 19:31:51.547 [5147] main/162/http/127.0.0.1:36512 server.lua:804 E> unhandled error: ...app/.rocks/share/tarantool/migrator.lua:95: Errors happened during migrations: ["...app\/.rocks\/share\/tarantool\/migrator.lua:76: {\"line\":534,\"class_name\":\"migrator\",\"err\":\"\\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"file\":\"builtin\\\/box\\\/schema.lua\",\"str\":\"migrator: \\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"stack\":\"stack traceback:\\n\\tbuiltin\\\/box\\\/schema.lua:534: in function 'drop'\\n\\t...app\\\/migrations\\\/07_issue_with_drop_space.lua:40: in funct","...app\/.rocks\/share\/tarantool\/migrator.lua:76: {\"line\":534,\"class_name\":\"migrator\",\"err\":\"\\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"file\":\"builtin\\\/box\\\/schema.lua\",\"str\":\"migrator: \\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"stack\":\"stack traceback:\\n\\tbuiltin\\\/box\\\/schema.lua:534: in function 'drop'\\n\\t...app\\\/migrations\\\/07_issue_with_drop_space.lua:40: in funct","...app\/.rocks\/share\/tarantool\/migrator.lua:76: {\"line\":534,\"class_name\":\"migrator\",\"err\":\"\\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"file\":\"builtin\\\/box\\\/schema.lua\",\"str\":\"migrator: \\\/home\\\/tarantool\\\/app\\\/init.lua:47: attempt to index local 'sp' (a nil value)\",\"stack\":\"stack traceback:\\n\\tbuiltin\\\/box\\\/schema.lua:534: in function 'drop'\\n\\t...app\\\/migrations\\\/07_issue_with_drop_space.lua:40: in funct"]
stack traceback:
        ...app/.rocks/share/tarantool/http/server.lua:802: in function 'process_client'
        ...app/.rocks/share/tarantool/http/server.lua:1262: in function <...app/.rocks/share/tarantool/http/server.lua:1261>
        [C]: in function 'pcall'
        builtin/socket.lua:1081: in function <builtin/socket.lua:1079>

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with 01_issue_with_drop_space.lua and follow the stack from box.space[other_space_name]:drop() through builtin/box/schema.lua. Check how the migration behaves on Tarantool 2.8.4 when the space was created and then dropped. Done means the migration applies successfully without the nil-value error.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua
Domain
databases
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.