tarantool / migrations

BSD 2-Clause "Simplified" License
21 stars 5 forks source link

Drop space doesn't work in migration in TE 2.8.4 #61

Open dkasimovskiy opened 2 years ago

dkasimovskiy commented 2 years ago

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>