Upgrading to Team City 10 with Dockers
Answered
We have Team City 9 running in our own Docker we baked about 1 1/2 years ago and new we want to upgrade to Team City 10 using the Docker base as provided by Jet Brains. What exactly would be the procedure to do this? We have tried rsyncing the data directory from TC 9 and copying the PostgreSQL database to a new instance and running the Docker over it, but it complains "it seems there is another Team City instance connected to the same database"
Please sign in to leave a comment.
Hello Matthew,
To perform the upgrade, you need to pull new version of the image and the server in it via the usual command and then start a container with correct paths to data directory and database, etc.
How did you copy the database? Did you stop TeamCity server before copying the database? Are you sure that you started new once? Could you please atttach teamcity-server.log file?
No, we didn't stop the TeamCity 9 server when copying the database. That might be the problem. I'm going to try that again. In the meantime, here is the log.
Alina,
I deleted from the db_heartbeat, then Team City 10 server starts, but then the next problem is when it tries to upgrade the data/database:
Please do not try to patch database manually, this really can cause more troubles. Server clears states in log that there is another TeamCity server running and using the same database. You should stop this server first, then proceed with upgrade.
Also please attach results of this SQL query:
-- TEAMCITY DATABASE SCHEMA
-- Each table describes as a table name started from the first position of the line,
-- and followed by its inner constructions with offset. All inner constructions
-- should be written with the same offset.
-- ABBREVIATIONS
-- -------------
-- M: mandatory (not null)
-- PK: primary key
-- AK: alternative key (unique index)
-- IE: inversion entry (non-unique index)
-- DATA TYPES
-- ----------
-- int : 4-bytes signed integer
-- long_int : 8-bytes signed integer
-- decimal(p,s) : decimal number, p for precision, s for scale
-- char : one character
-- str(n) : string of length n, n is limited to 2000
-- long_str(n) : long text of length n (CLOB)
-- uni_str(n) : unicode string of length n, n is limited to 1000
-- long_uni_str(n) : long unicode text of length n (NCLOB)
-- timestamp : date and time with 1 second precision, without time zone
-- boolean : boolean
-- FIELD OPTIONS
-- -------------
-- default <value> : specifies default value
-- defines : defines value of it's domain
-- refers : references to domain values defines in other tables
-- serial : means that this field gets it values from a sequence
-- Notes:
-- 1. The first table should be the 'db_version', the last table should be the 'server'.
-- 2. Tables are grouped by categories. Please put new one into a proper category.
-- 3. All names should be written in lower case; national characters are not allowed.
-- 4. Names of temporary tables are suffixed with '$'.
-- 5. Ensure that there are no tab characters at beginning of lines.
-- 6. Unicode string and text types are used since 9.0.
-- 7. BLOBs (strings more than 4000 or unicode strings more than 2000) must be the last fields.
-- 8. In this file allows at most 160 character per line.
-- DOMAINS
config_id: domain of str(80)
group_id: domain of str(16)
teamcity10_username: domain of str(60)
user_id: domain of long_int
user_role_id: domain of str(80)
user_notific_rule_id: domain of long_int
group_notific_rule_id: domain of long_int
subject_property_key: domain of str(80)
agent_pool_id: domain of int
agent_id: domain of int
agent_type_id: domain of int
project_ext_id: domain of str(80)
bt_ext_id: domain of str(80)
vcs_root_ext_id: domain of str(80)
project_int_id: domain of str(80)
bt_int_id: domain of str(80) -- for both build_type and build_template
vcs_root_int_id: domain of int
vcs_root_instance_id: domain of int
vcs_revision: domain of str(200)
modification_hash: domain of str(40)
modification_id: domain of long_int
personal_modification_id: domain of long_int
promotion_id: domain of long_int
build_id: domain of long_int
test_name_hash: domain of long_int
problem_id: domain of int
problem_type: domain of str(80)
problem_identity: domain of str(60)
mute_id: domain of int
file_name_hash: domain of str(40)
tag_phrase: domain of uni_str(255)
metric_hash: domain of long_int
server_health_item_id: domain of long_int
audit_comment_id: domain of long_int
cleanup_proc_id: domain of long_int
inspection_id_hash: domain of long_int
inspection_id_str: domain of str(255)
inspection_data_hash: domain of long_int
duplicate_file_id: domain of long_int
duplicate_file_name: domain of str(255)
duplicate_result_id: domain of long_int
duplicate_result_hash: domain of int
-- TABLES THAT CONTAIN PREDEFINED IMMUTABLE DATA
db_version: table
version_number: int M
version_time: timestamp M
db_version_pk: PK (version_number)
meta_file_line: table
file_name: str(15) M -- metadata file name with suffix
line_nr: int M -- line number, started with 1
line_text: str(160) -- text of line
meta_file_line_pk: PK (file_name, line_nr)
single_row: table
dummy_field: char
server_property: table
prop_name: str(80) M
prop_value: str(256) M
server_property_pk: PK (prop_name)
-- GLOBAL TABLES (NOT RELATED TO PROJECTS OR USERS OR AGENTS)
db_heartbeat: table
starting_code: long_int M
starting_time: timestamp M
lock_mode: char M
ip_address: str(15)
additional_info: str(80)
last_time: timestamp M
db_heartbeat_pk: PK (starting_code)
backup_info: table
mproc_id: int M
file_name: str(1000)
file_size: long_int
started: timestamp M
finished: timestamp
status: char
backup_info_pk: PK (mproc_id)
backup_info_file_i: IE (file_name)
backup_builds: table
build_id: build_id M
backup_builds_pk: PK (build_id)
cleanup_history: table
proc_id: cleanup_proc_id M serial defines
start_time: long_int M
finish_time: long_int
interrupt_reason: str(20)
cleanup_history_pk: PK (proc_id)
server_health_items: table
id: server_health_item_id M serial defines
report_id: str(80) M
category_id: str(80) M
item_id: str(255) M
visible: boolean M
server_health_items_pk: PK (id)
server_health_items_ie: IE (report_id, category_id)
-- AGENT RELATED TABLES
agent_pool: table
agent_pool_id: agent_pool_id M serial defines -- 0 means the Default Pool
agent_pool_name: str(30) M defines -- see jetbrains.buildServer.serverSide.agentPools.AgentPoolConstants.MAX_POOL_NAME_LENGTH
agent_pool_pk: PK (agent_pool_id)
agent_pool_ak: AK (agent_pool_name)
agent_type: table
agent_type_id: agent_type_id M serial defines
agent_pool_id: agent_pool_id M refers
cloud_code: str(6) M
profile_id: str(30) M
image_id: str(60) M
policy: int M -- 1: all configurations, 2: selected ones only
agent_type_pk: PK (agent_type_id)
agent_type_ak: AK (cloud_code, profile_id, image_id)
agent_type_pool_i: IE (agent_pool_id)
agent_type_info: table
agent_type_id: agent_type_id M refers
os_name: str(60) M
cpu_rank: int
created_timestamp: timestamp
modified_timestamp: timestamp
agent_type_info_pk: PK (agent_type_id)
agent_type_runner: table
agent_type_id: agent_type_id M refers
runner: str(250) M
agent_type_runner_pk: PK (agent_type_id, runner)
agent_type_vcs: table
agent_type_id: agent_type_id M refers
vcs: str(250) M
agent_type_vcs_pk: PK (agent_type_id, vcs)
agent_type_param: table
agent_type_id: agent_type_id M refers
param_kind: char M
param_name: str(160) M
param_value: uni_str(2000)
agent_type_param_pk: PK (agent_type_id, param_kind, param_name)
agent: table
id: agent_id M serial defines
name: str(80) M defines
host_addr: str(80) M
port: int M
agent_type_id: int M
status: int
authorized: int
registered: int
registration_timestamp: long_int
last_binding_timestamp: long_int
unregistered_reason: str(256)
authorization_token: str(32)
status_to_restore: int
status_restoring_timestamp: long_int
agent_pk: PK (id)
agent_name_ui: AK (name)
agent_host_address: IE (host_addr)
agent_authorization_token: IE (authorization_token)
agent_agent_type_id: IE (agent_type_id)
cloud_started_instance: table
profile_id: str(30) M
cloud_code: str(6) M
image_id: str(80) M
instance_id: str(80) M
last_update: timestamp M
cloud_started_instance_pk: PK (profile_id, cloud_code, image_id, instance_id)
cloud_image_without_agent: table
profile_id: str(30) M
cloud_code: str(6) M
image_id: str(80) M
last_update: timestamp M
cloud_image_without_agent_pk: PK (profile_id, cloud_code, image_id)
-- USERS DEFINITION TABLES
usergroups: dictionary table
group_id: group_id M defines
name: uni_str(255) M defines
description: uni_str(2000)
usergroups_pk: PK (group_id) stable
usergroups_ak: AK (name)
usergroup_property: table
group_id: group_id M refers
prop_key: subject_property_key M defines
prop_value: uni_str(2000)
usergroup_property_pk: PK (group_id, prop_key)
users: dictionary table
id: user_id M serial defines -- user's surrogate id
username: teamcity10_username M defines -- user's natural id, in lower case
password: str(128) -- enciphered password
name: uni_str(256) -- user's real name
email: str(256)
last_login_timestamp: long_int
users_pk: PK (id)
users_ak: AK (username) stable
user_property: table
user_id: user_id M refers
prop_key: subject_property_key M defines
prop_value: uni_str(2000)
user_property_pk: PK (user_id, prop_key)
user_blocks: table
user_id: user_id M refers
block_type: str(80) M
state: str(2048)
user_blocks_pk: PK (user_id, block_type)
user_notification_events: table
id: user_notific_rule_id M serial defines
user_id: user_id M refers
notificator_type: str(20) M
events_mask: int M
user_notification_events_pk: PK (id)
notification_events_notifier: IE (notificator_type)
notification_events_user_id: IE (user_id)
user_watch_type: table
rule_id: user_notific_rule_id M refers
user_id: user_id M refers
notificator_type: str(20) M
watch_type: int M -- values 1..5; 2 - project, 3 - build type, other - unknown
watch_value: str(80) M
order_num: long_int
user_watch_type_pk: PK (user_id, notificator_type, watch_type, watch_value)
watch_type_rule_id: IE (rule_id)
user_notification_data: table
user_id: user_id M refers
rule_id: user_notific_rule_id M refers
additional_data: str(2000)
user_notif_data_pk: PK (user_id, rule_id)
user_notif_data_rule_id: IE (rule_id)
usergroup_subgroups: table
hostgroup_id: group_id M
subgroup_id: group_id M
usergroup_subgroups_pk: PK (hostgroup_id, subgroup_id)
usergroup_users: table
group_id: group_id M refers
user_id: user_id M refers
usergroup_users_pk: PK (group_id, user_id)
usergroup_notification_events: table
id: group_notific_rule_id M serial defines
group_id: group_id M refers
notificator_type: str(20) M
events_mask: int M
usergroup_notific_evnts_pk: PK (id)
usergroup_events_notifier: IE (notificator_type)
usergroup_events_group_id: IE (group_id)
usergroup_watch_type: table
rule_id: group_notific_rule_id M refers
group_id: group_id M refers
notificator_type: str(20) M
watch_type: int M -- values 1..5; 2 - project, 3 - build type, other - unknown
watch_value: str(80) M
order_num: long_int
usergroup_watch_type_pk: PK (group_id, notificator_type, watch_type, watch_value)
group_watch_type_rule_id: IE (rule_id)
usergroup_notification_data: table
group_id: group_id M refers
rule_id: group_notific_rule_id M refers
additional_data: str(2000)
group_notif_data_pk: PK (group_id, rule_id)
group_notif_data_rule_id: IE (rule_id)
remember_me: table
user_key: str(65) M
secure: long_int M
-- COMMON DICTIONARY TABLES
long_file_name: dictionary table
hash: file_name_hash M defines
file_name: long_uni_str(16000) M defines
long_file_name_pk: PK (hash) stable
test_names: dictionary table
id: test_name_hash M defines
test_name: uni_str(255) M defines
test_names_pk: PK (id) stable
data_storage_dict: dictionary table
metric_id: metric_hash M defines
value_type_key: str(200) defines
metric_id_pk: PK (metric_id) stable
value_type_key_index: AK (value_type_key) stable
problem: dictionary table
problem_id: problem_id M serial defines
problem_type: problem_type M
problem_identity: problem_identity M
problem_pk: PK (problem_id)
problem_ak: AK (problem_type, problem_identity) stable
-- PROJECTS AND BUILD HISTORY TABLES
project: dictionary table
int_id: project_int_id M serial defines
config_id: config_id M defines
project_pk: PK (int_id)
project_ak: AK (config_id) stable
build_type: dictionary table
int_id: bt_int_id M serial defines
config_id: config_id M defines
build_type_pk: PK (int_id)
build_type_ak: AK (config_id) stable
vcs_root: dictionary table
int_id: vcs_root_int_id M serial defines
config_id: config_id M defines
vcs_root_pk: PK (int_id)
vcs_root_ak: AK (config_id) stable
project_mapping: table
int_id: project_int_id M refers
ext_id: project_ext_id M defines
main: boolean M
project_mapping_pk: PK (int_id, ext_id)
project_mapping_ak: AK (ext_id)
build_type_mapping: table
int_id: bt_int_id M refers
ext_id: bt_ext_id M defines
main: boolean M
build_type_mapping_pk: PK (int_id, ext_id)
build_type_mapping_ak: AK (ext_id)
vcs_root_mapping: table
int_id: vcs_root_int_id M defines -- refers TODO return refers when vcs_root table is populated
ext_id: vcs_root_ext_id M defines
main: boolean M
vcs_root_mapping_pk: PK (int_id, ext_id)
vcs_root_mapping_ak: AK (ext_id)
deleted_build_types: table
build_type_id: bt_int_id M refers
delete_time: long_int
deleted_build_types_pk: PK (build_type_id)
agent_type_bt_access: table
agent_type_id: agent_type_id M refers
build_type_id: bt_int_id M refers
agent_type_bt_access_pk: PK (agent_type_id, build_type_id)
agent_type_bt_access_bt_i: IE (build_type_id)
user_projects_visibility: table
user_id: user_id M refers
project_int_id: project_int_id M refers
visible: int M
user_projects_visibility_pk: PK (user_id, project_int_id)
user_projects_order: table
user_id: user_id M refers
project_int_id: project_int_id M refers
ordernum: int
user_projects_order_pk: PK (user_id, project_int_id)
vcs_root_instance: table
id: vcs_root_instance_id M serial defines
parent_id: vcs_root_int_id M refers
settings_hash: long_int M
body: long_str(16384)
vcs_root_instance_pk: PK (id)
vcs_root_instance_parent_idx: IE (parent_id)
vcs_root_instance_hash_idx: IE (settings_hash)
agent_pool_project: table
agent_pool_id: agent_pool_id M refers
project_int_id: project_int_id M refers
agent_pool_project_pk: PK (agent_pool_id, project_int_id)
agent_sources_version: table
build_type_id: bt_int_id M refers
vcs_root_id: vcs_root_instance_id M refers
agent_id: agent_id M refers
vcs_settings_hash: str(16) M
checkout_dir: str(2048)
current_version: str(80)
agent_sources_version_pk: PK (build_type_id, vcs_settings_hash, vcs_root_id, agent_id)
agent_sources_version_hidx: IE (vcs_settings_hash)
vcs_history: table
modification_id: modification_id M serial defines
user_name: uni_str(255)
description: uni_str(2000)
change_date: long_int
register_date: long_int
vcs_root_id: vcs_root_instance_id refers
changes_count: int
version: vcs_revision M
display_version: str(200)
vcs_history_pk: PK (modification_id)
vcs_history_root: IE (vcs_root_id)
vcs_history_user: IE (user_name)
vcs_version_in_root_i: IE (vcs_root_id, version)
vcs_change: table
modification_id: modification_id M refers
file_num: int M -- number of file in the change
vcs_file_name: uni_str(2000) M -- first 2000 characters if the name is long
vcs_file_name_hash: file_name_hash refers
relative_file_name_pos: int
relative_file_name: uni_str(2000)
relative_file_name_hash: file_name_hash refers
change_type: int M
change_name: str(64)
before_revision: vcs_revision
after_revision: vcs_revision
vcs_change_pk: PK (modification_id, file_num)
personal_vcs_history: table
modification_id: personal_modification_id M serial defines
modification_hash: modification_hash M defines
user_id: user_id M refers
description: uni_str(2000)
change_date: long_int M
changes_count: int M
commit_changes: int
status: int M default 0
scheduled_for_deletion: boolean M default 0
personal_vcs_history_pk: PK (modification_id)
personal_vcs_history_ak: AK (modification_hash) stable
personal_vcs_history_user_i: IE (user_id)
personal_vcs_change: table
modification_id: personal_modification_id M refers
file_num: int M -- number of file in the change
vcs_file_name: uni_str(2000) M -- first 2000 characters if the name is long
vcs_file_name_hash: file_name_hash refers
relative_file_name_pos: int
relative_file_name: uni_str(2000)
relative_file_name_hash: file_name_hash refers
change_type: int M
change_name: str(64)
before_revision: vcs_revision
after_revision: vcs_revision
personal_vcs_changes_pk: PK (modification_id, file_num)
vcs_changes_graph: table
child_modification_id: modification_id M refers
child_revision: vcs_revision M
parent_num: int M
parent_modification_id: modification_id refers
parent_revision: vcs_revision M
vcs_changes_graph_pk: PK (child_modification_id, parent_num)
vcs_changes_graph_parent_i: IE (parent_modification_id)
vcs_change_attrs: table
modification_id: modification_id M refers
attr_name: str(200) M
attr_value: str(1000)
vcs_change_attrs_pk: PK (modification_id, attr_name)
vcs_root_first_revision: table
build_type_id: bt_int_id M refers
parent_root_id: vcs_root_int_id M refers
settings_hash: long_int M
vcs_revision: vcs_revision M
vcs_root_first_revision_pk: PK (build_type_id, parent_root_id, settings_hash)
vcs_username: table
user_id: user_id M refers
vcs_name: str(60) M
parent_vcs_root_id: vcs_root_int_id M refers
order_num: int M
username: uni_str(255) M
vcs_username_pk: PK (user_id, vcs_name, parent_vcs_root_id, order_num)
vcs_username_ak: AK (user_id, vcs_name, parent_vcs_root_id, username)
vcs_username_user_ie: IE (vcs_name, parent_vcs_root_id, username)
build_state: table
id: promotion_id M serial defines
build_id: build_id defines
build_type_id: bt_int_id refers
modification_id: modification_id refers -- can be null if changes checking was not performed yet,
-- equals -1 if changes collecting is performed but there were no changes
-- detected and there were no changes in the build configuration since its creation
personal_modification_id: personal_modification_id -- reference to personal_vcs_history, or null for regular builds
personal_user_id: user_id -- owner of the modification
is_personal: boolean M default 0
is_canceled: boolean M default 0
is_changes_detached: boolean M default 0
is_deleted: boolean M default 0
branch_name: str(255) -- null means no branch (master)
queued_time: long_int
remove_from_queue_time: long_int
build_state_pk: PK (id)
build_state_build_i: IE (build_id)
build_state_mod_i: IE (modification_id)
build_state_build_type_i: IE (build_type_id)
build_state_puser_i: IE (personal_user_id)
build_state_pmod_i: IE (personal_modification_id)
running: table
build_id: build_id M serial defines
agent_id: agent_id refers
build_type_id: bt_int_id refers
build_start_time_agent: long_int
build_start_time_server: long_int
is_personal: int
build_number: str(256)
requestor: str(1024)
access_code: str(60)
queued_ag_restr_type_id: int -- agent restrictor type id
queued_ag_restr_id: int -- agent restrictor id
build_state_id: promotion_id refers
agent_type_id: agent_type_id refers
running_pk: PK (build_id)
running_state_id: IE (build_state_id)
history: table
build_id: build_id M serial defines
agent_name: str(80)
build_type_id: bt_int_id refers
build_start_time_server: long_int
build_start_time_agent: long_int
build_finish_time_server: long_int
status: int
status_text: uni_str(256)
user_status_text: uni_str(256)
pin: int
is_personal: int
is_canceled: int
build_number: str(256)
requestor: str(1024)
build_state_id: promotion_id refers
agent_type_id: agent_type_id
history_pk: PK (build_id)
start_time_index: IE (build_start_time_server)
build_type_id_index: IE (build_type_id)
pinned_index: IE (pin)
status_index: IE (status)
history_state_id: IE (build_state_id)
history_agname_bfintimesrv_i: IE (agent_name, build_finish_time_server)
history_finish_time_i: IE (build_finish_time_server)
history_build_number: IE (build_number)
history_agt_b_i: IE (agent_type_id, build_id)
light_history: table
build_id: build_id M serial defines
agent_name: str(80)
build_type_id: bt_int_id refers
build_start_time_server: long_int
build_start_time_agent: long_int
build_finish_time_server: long_int
status: int
status_text: uni_str(256)
user_status_text: uni_str(256)
pin: int
is_personal: int
is_canceled: int
build_number: str(256)
requestor: str(1024)
queued_time: long_int
remove_from_queue_time: long_int
build_state_id: long_int -- contains garbage, to drop
agent_type_id: agent_type_id
branch_name: str(255) -- null means no branch (master)
light_history_pk: PK (build_id)
start_time_index_light: IE (build_start_time_server)
build_type_id_index_light: IE (build_type_id)
pinned_index_light: IE (pin)
status_index_light: IE (status)
light_history_agname_bftime_i: IE (agent_name, build_finish_time_server)
light_history_finish_time_i: IE (build_finish_time_server)
light_history_agt_b_i: IE (agent_type_id, build_id)
build_project: table
build_id: build_id M refers
project_level: int M
project_int_id: project_int_id M refers
build_project_pk: PK (build_id, project_level)
build_project_project_idx: IE (project_int_id)
build_dependency: table
build_state_id: promotion_id M refers
depends_on: promotion_id M refers
dependency_options: int
build_dependency_pk: PK (build_state_id, depends_on)
build_dependency_ak: IE (depends_on, build_state_id)
build_attrs: table -- really it's promotion attrs
build_state_id: promotion_id M refers
attr_name: str(70) M
attr_value: uni_str(1000)
attr_num_value: long_int
build_attrs_pk: PK (build_state_id, attr_name)
build_attrs_num_i: IE (attr_num_value, attr_name, build_state_id)
build_data_storage: table
build_id: build_id M refers
metric_id: metric_hash M refers
metric_value: decimal(19,6) M
build_data_storage_pk: PK (build_id, metric_id)
canceled_info: table
build_id: build_id M refers
user_id: user_id refers
description: str(256)
canceled_info_pk: PK (build_id)
test_info: table
build_id: build_id M refers
test_id: int M
test_name_id: test_name_hash refers
status: int
duration: int M default 0
test_info_pk: PK (build_id, test_id)
test_name_id_idx: IE (test_name_id)
build_problem: table
build_state_id: promotion_id M refers
problem_id: problem_id M refers
problem_description: long_str(4000)
build_problem_pk: PK (build_state_id, problem_id)
build_problem_attribute: table
build_state_id: promotion_id M refers
problem_id: problem_id M refers
attr_name: str(60) M
attr_value: str(2000) M
build_problem_attribute_pk: PK (build_state_id, problem_id, attr_name)
build_artifact_dependency: table
build_state_id: promotion_id refers
source_build_type_id: bt_int_id refers
revision_rule: str(80)
branch: str(255)
src_paths: long_str(40960)
build_artif_dep_state_id: IE (build_state_id)
final_artifact_dependency: table
build_state_id: promotion_id refers
source_build_type_id: bt_int_id refers
revision_rule: str(80)
branch: str(255)
src_paths: long_str(40960)
final_artif_dep_state_id: IE (build_state_id)
build_type_vcs_change: table
modification_id: modification_id M refers
build_type_id: bt_int_id M refers
change_type: int
build_type_vcs_change_ui: AK (modification_id, build_type_id)
build_type_vcs_change_btid: IE (build_type_id)
build_checkout_rules: table
build_state_id: promotion_id M refers
build_type_id: bt_int_id M refers
vcs_root_id: vcs_root_instance_id M refers
checkout_rules: long_str(2096)
build_checkout_rules_pk: PK (build_state_id, build_type_id, vcs_root_id)
mute_info: table
-- invariant records (they're expected never been modified)
mute_id: mute_id M serial defines
muting_user_id: user_id M refers
muting_time: timestamp M
muting_comment: uni_str(2000)
scope: char M
project_int_id: project_int_id M refers
build_id: build_id refers
unmute_when_fixed: boolean
unmute_by_time: timestamp
mute_info_pk: PK (mute_id)
mute_info_ak: AK (project_int_id, mute_id)
mute_info_bt: table
-- build type was muted (a detail of the mute_info), not currently muted
mute_id: mute_id M refers
build_type_id: bt_int_id M refers
mute_info_bt_pk: PK (mute_id, build_type_id)
mute_info_test: table
-- test was muted (a detail of the mute_info), not currently muted
mute_id: mute_id M refers
test_name_id: test_name_hash M refers
mute_info_test_pk: PK (mute_id, test_name_id)
mute_test_in_proj: table
-- currently muted test in project
mute_id: mute_id M refers -- records can be reassigned from one muting to another
project_int_id: project_int_id M refers
test_name_id: test_name_hash M refers
mute_test_in_proj_pk: PK (mute_id, project_int_id, test_name_id)
mute_test_in_proj_ie: IE (project_int_id, test_name_id, mute_id)
mute_test_in_bt: table
-- currently muted test in build configuration
mute_id: mute_id M refers -- records can be reassigned from one muting to another
build_type_id: bt_int_id M refers
test_name_id: test_name_hash M refers
mute_test_in_bt_pk: PK (mute_id, build_type_id, test_name_id)
mute_test_in_bt_ie: IE (build_type_id, test_name_id, mute_id)
mute_info_problem: table
mute_id: mute_id M refers
problem_id: problem_id M refers
mute_info_problem_pk: PK (mute_id, problem_id)
mute_problem_in_proj: table
-- currently muted build problem in project
mute_id: mute_id M refers
project_int_id: project_int_id M refers
problem_id: problem_id M refers
mute_problem_in_proj_pk: PK (mute_id, project_int_id, problem_id)
mute_problem_in_proj_ie: IE (project_int_id, problem_id, mute_id)
mute_problem_in_bt: table
-- currently muted build problem in build configuration
mute_id: mute_id M refers
build_type_id: bt_int_id M refers
problem_id: problem_id M refers
mute_problem_in_bt_pk: PK (mute_id, build_type_id, problem_id)
mute_problem_in_bt_ie: IE (build_type_id, problem_id, mute_id)
build_problem_muted: table
build_state_id: promotion_id M refers
problem_id: problem_id M refers
mute_id: mute_id refers -- may be null if problem internally muted during the build
build_problem_muted_pk: PK (build_state_id, problem_id)
test_muted: table
build_id: build_id M refers
test_name_id: test_name_hash M refers
mute_id: mute_id M refers
test_muted_pk: PK (build_id, test_name_id, mute_id)
test_muted_mute_id: IE (mute_id)
test_failure_rate: table
build_type_id: bt_int_id M refers
agent_id: agent_id M refers
test_name_id: test_name_hash M refers
success_count: int
failure_count: int
last_failure_time: long_int
test_failure_rate_pk: PK (build_type_id, agent_id, test_name_id)
build_queue: table
build_type_id: bt_int_id refers
agent_restrictor_type_id: int
agent_restrictor_id: int
requestor: str(1024)
pos: int
build_state_id: promotion_id refers
build_queue_build_state_id: IE (build_state_id)
stats: table
build_id: build_id M refers
test_count: int
status_text: str(256)
-- a record per build
stats_pk: PK (build_id)
failed_tests_output: table
build_id: build_id M refers
test_id: int M
problem_description: long_str(256)
std_output: long_str(40960)
error_output: long_str(40960)
stacktrace: long_str(40960)
expected: long_str(40960)
actual: long_str(40960)
failed_tests_output_pk: PK (build_id, test_id)
compiler_output: table
build_id: build_id refers
message_order: int
message: long_str(40960)
co_build_id_index: IE (build_id)
ignored_tests: table
build_id: build_id refers
test_id: int
test_name: str(255)
reason: long_str(40960)
ignored_tests_build_id: IE (build_id)
downloaded_artifacts: table
target_build_id: build_id refers -- artifact was downloaded to
source_build_id: build_id refers -- artifact was downloaded from
download_timestamp: long_int
artifact_path: long_str(8192)
downloaded_artifacts_source_id: IE (source_build_id)
downloaded_artifacts_ts_id: IE (target_build_id,source_build_id)
build_revisions: table
build_state_id: promotion_id M refers
vcs_root_id: vcs_root_instance_id M refers
vcs_revision: vcs_revision M
vcs_revision_display_name: str(200)
vcs_branch_name: str(255)
modification_id: modification_id refers
vcs_root_type: int
checkout_mode: int -- null means the default checkout mode from a buildType, see BuildRevisionCheckoutMode
build_revisions_pk: PK (build_state_id, vcs_root_id)
build_revisions_vcs_root_i: IE (vcs_root_id)
default_build_parameters: table
build_state_id: promotion_id refers
param_name: str(2000)
param_value: long_uni_str(16000)
def_build_params_state_id: IE (build_state_id)
user_build_parameters: table
build_state_id: promotion_id refers
param_name: str(2000)
param_value: long_uni_str(16000)
user_build_params_state_id: IE (build_state_id)
build_labels: table
build_id: build_id M refers
vcs_root_id: vcs_root_instance_id M refers
label: str(80)
status: int default 0
error_message: str(256)
build_labels_pk: PK (build_id, vcs_root_id)
build_labels_vcs_root_i: IE (vcs_root_id)
personal_build_relative_path: table
build_id: build_id refers
original_path_hash: long_int
relative_path: long_str(16000)
personal_build_relative_p_ak: AK (build_id, original_path_hash)
responsibilities: table
problem_id: str(80) M -- it's not our problem_id, it's something else
state: int M
responsible_user_id: user_id M refers
reporter_user_id: user_id refers
timestmp: long_int
remove_method: int M default 0
comments: long_uni_str(4096)
responsibilities_pk: PK (problem_id)
responsibilities_reporter: IE (reporter_user_id)
responsibilities_assignee: IE (responsible_user_id)
build_state_tag: table
build_state_id: promotion_id M refers
tag: tag_phrase M
build_state_tag_pk: PK (build_state_id, tag)
build_state_tag_ie1: IE (tag, build_state_id)
build_state_private_tag: table
build_state_id: promotion_id M refers
owner: user_id M refers
tag: tag_phrase M
build_state_private_tag_pk: PK (build_state_id, owner, tag)
build_state_private_tag_ie1: IE (owner, build_state_id)
build_overriden_roots: table
build_state_id: promotion_id refers
original_vcs_root_id: vcs_root_instance_id M refers
substitution_vcs_root_id: vcs_root_instance_id M refers
build_overriden_roots_pk: PK (build_state_id, original_vcs_root_id)
build_subst_root_index: IE (substitution_vcs_root_id)
user_roles: table
user_id: user_id M refers
role_id: user_role_id M -- we need a dictionary of roles
project_int_id: project_int_id refers
user_roles_ui: AK (user_id, role_id, project_int_id)
usergroup_roles: table
group_id: group_id M refers
role_id: user_role_id M -- we need a dictionary of roles
project_int_id: project_int_id refers
usergroup_roles_ui: AK (group_id, role_id, project_int_id)
-- INSPECTIONS AND DUPLICATES
inspection_info: dictionary table
id: inspection_id_hash M defines
inspection_id: inspection_id_str defines
inspection_name: str(255)
inspection_desc: long_str(4000)
group_name: str(255)
inspection_info_pk: PK (id) stable
inspection_info_ak: AK (inspection_id) stable
inspection_data: dictionary table
hash: inspection_data_hash M defines
result: long_str(4000)
severity: int
type_pattern: int
fqname: long_str(4000)
file_name: str(255)
parent_fqnames: long_str(4000)
parent_type_patterns: str(20)
module_name: str(40)
inspection_id: inspection_id_hash refers
is_local: int
used: int M default 1
inspection_data_pk: PK (hash) stable
inspection_data_file_index: IE (file_name)
inspection_data_insp_index: IE (inspection_id)
inspection_fixes: table
hash: inspection_data_hash M refers
hint: str(255)
inspection_fixes_hash_index: IE (hash)
inspection_results: table
build_id: build_id M refers
hash: inspection_data_hash M refers
line: int M
inspection_results_hash_index: IE (hash)
inspection_results_buildhash_i: IE (build_id, hash)
inspection_stats: table
build_id: build_id M refers
total: int
new_total: int
old_total: int
errors: int
new_errors: int
old_errors: int
inspection_stats_pk: PK (build_id)
inspection_diff: table
build_id: build_id M refers
hash: inspection_data_hash M refers
inspection_diff_ak: AK (build_id, hash)
inspection_diff_hash_index: IE (hash)
project_files: dictionary table
file_id: duplicate_file_id M serial defines
file_name: duplicate_file_name M
project_files_pk: PK (file_id)
project_files_ak: AK (file_name) stable
duplicate_results: table
id: duplicate_result_id M serial defines
build_id: build_id M refers
hash: duplicate_result_hash M defines
cost: int
duplicate_results_pk: PK (id)
duplicate_results_build_i: IE (build_id)
duplicate_diff: table
build_id: build_id M refers
hash: long_int M
duplicate_diff_pk: PK (build_id, hash)
duplicate_fragments: table
id: duplicate_result_id M refers
file_id: duplicate_file_id M refers
line: int M
offset_info: str(100) M
duplicate_fragments_pk: PK (id, file_id, line, offset_info)
duplicate_fragments_file_i: IE (file_id)
fragments: table
build_type_id: bt_int_id M refers
file_id: duplicate_file_id M refers
hash: int M
fragments_pk: PK (build_type_id, file_id, hash)
fragments_file_i: IE (file_id)
fragments_hash_i: IE (hash)
duplicate_stats: table
build_id: build_id M refers
total: int
new_total: int
old_total: int
duplicate_stats_pk: PK (build_id)
-- OTHER TABLES
stats_publisher_state: table
metric_id: long_int M
value: long_int M
stats_publisher_state_pk: PK (metric_id)
comments: table
id: audit_comment_id M serial defines
author_id: user_id refers
when_changed: long_int M
commentary: long_uni_str(4096)
comments_pk: PK (id)
action_history: table
object_id: str(80)
comment_id: audit_comment_id refers
action: int
additional_data: str(80)
action_history_comment: IE (comment_id)
action_history_object: IE (object_id)
action_history_action_object_i: IE (action, object_id)
audit_additional_object: table
comment_id: audit_comment_id refers
object_index: int
object_id: str(80)
object_name: long_str(2500) -- is used only for deleted objects
audit_a_o_comment: IE (comment_id)
audit_a_o_object_index: IE (object_index)
build_set_tmp: table
build_id: build_id M
build_set_pk: PK (build_id)
clean_checkout_enforcement: table
build_type_id: bt_int_id M
agent_id: agent_id M
current_build_id: build_id M
request_time: timestamp M
clean_checkout_enforcement_pk: PK (build_type_id, agent_id)
-- DEPRECATED TABLES (will not be populated anymore)
vcs_changes: deprecated table
modification_id: modification_id
change_name: str(64)
change_type: int
before_revision: long_str(2048)
after_revision: long_str(2048)
vcs_file_name: long_str(16000)
relative_file_name: long_str(16000)
vcs_changes_index: IE (modification_id)
personal_vcs_changes: deprecated table
modification_id: modification_id
change_name: str(64)
change_type: int
before_revision: str(2048)
after_revision: str(2048)
vcs_file_name: long_str(16000)
relative_file_name: long_str(16000)
vcs_personal_changes_index: IE (modification_id)
-- TEMPORARY TABLES
agent_pool$: temporary table
agent_pool_id: agent_pool_id M
agent_type$: temporary table
agent_type_id: agent_type_id M
project$: temporary table
int_id: project_int_id M
build_type$: temporary table
build_type_id: bt_int_id M
vcs_root_instance$: temporary table
id: vcs_root_instance_id M
modification$: temporary table
modification_id: modification_id M
promotion$: temporary table
id: promotion_id M -- build_state_id in other tables
build$: temporary table
build_id: build_id M
test$: temporary table
test_name_id: test_name_hash M
test_key$: temporary table
test_name_id: test_name_hash M
test_key_pk: PK (test_name_id)
problem$: temporary table
problem_id: problem_id M
branch$: temporary table
branch_name: str(255) M
audit_object_ids_to_cleanup$: temporary table
object_id: str(80) M
audit_comment_ids_to_cleanup$: temporary table
comment_id: audit_comment_id M
user$: temporary table
user_id: user_id M
-- THE LAST TABLE
server: table
server_id: long_int
Thank you for data, but I don't understand where teamcity10_username comes from. When TeamCity writes data into this table it uses teamcity_username, not teamcity10_username. Are you sure no one patched data in meta_file_line table for some reason?
Nope, no patching done whatsoever. We took the TeamCity 9 database and ran the TeamCity 10 docker over it.
Wiat hold on, maybe we *did* make a mistake there ... my bad ...
Oké, yes, the database schema got hacked up when it was copied. Everything is fixed. Sorry for the bother, please close this ticket.
Thank you for update!