•  
      request #8319 Creation of new user not working after upgrade
    Infos
    #8319
    Andrzej Ostruszka (krasnal)
    2017-02-03 16:47
    2015-08-10 17:39
    8441
    Details
    Creation of new user not working after upgrade
    Hello

    Are there any specific upgrade steps needed apart from just upgrading via yum?
    I'm asking since recently I've upgraded from 8.1.99.67-1.el6.noarch to 8.4.99.40-1.el6.noarch (via normal "yum update tuleap\*" in CentOS 6.7) and it seems that with that upgrade I've lost possibility to create new user. Later upgrading (now I'm running on 8.4.99.55) does not correct this.

    In the httpd logs I see error for "INSERT INTO user (user_name,email,password,user_pw,unix_pw,realname..." command and when I try that command in mysql shell then I get error that "password" column is unknown (ERROR 1054 (42S22): Unknown column 'password' in 'field list') so it looks to me like the DB schema has changed but upgrade scripts from rpm's failed to update it.

    Is there some manual procedure to follow so that I can bring the php and DB in sync again?

    Thank you in advance
    Best regards
    Andrzej
    Upgrade process
    development
    CentOS 6
    • [ ] enhancement
    • [ ] internal improvement
    Empty
    Stage
    Empty
    Closed
    2017-02-03
    Attachments
    Empty
    References

    Follow-ups

    User avatar
    Not much to show for the log - the forge_upgrade_log is empty (even though I have executed it):

    mysql> select * from forge_upgrade_log;
    Empty set (0.00 sec)

    I'll take a look at this setup.sh script - I'm a bit afraid of loosing data due to reinstallation.
    What I did yesterday is that I took a look at all scripts in /usr/share/tuleap/src/db/mysql/updates/2015/ and manually checked that I'm fine with the changes that are required. I don't remember now details but it looks like (modulo my memory):
    - I was aligned with all changes up to 201504091644_add_authenticated_user_group.php,
    - I can't really say if 201504171343_restore_FRS_owner_group.php was executed or not, the permissions seems right in file system but I can't say if that was due to script actions or them being right from the start
    - starting with 201505051630_add_new_password_field.php I had to:
    - manually apply changes from 201505051630_add_new_password_field.php
    - do nothing with 201505131103_project_admin_can_choose_visibility.php
    - do nothing with 201505302300_remove_twitter_widgets.php
    - manually apply changes from 201506011450_increase_unix_password_field_size.php
    - manually apply changes from 201506031610_add_svn_immutable_tags_whitelist_table.php
    - manually apply changes from 201506031658_enlarge_your_tinyint.php
    - manually apply changes from 201507152200_increase_session_ip_field_size.php

    Feel free to ask for more info/data - I'm eager to find a problem since I'm afraid any future upgrade of my installation is a potential problem.
    If you don't need any input from my side you can close the issue.

    Best regards
    Andrzej

    PS. I would advice to improve rpm installation script, that is stop/start services automatically from it and move this manual forgeupgrade script step to rpm post installation part (and probably noting in documentation that from version XXX this step is done automatically during package upgrade) - this would avoid problems with people like me that are spoiled by the linux packaging systems and just assumed that all one need to do is just to upgrade package and it will take care of everything.
    User avatar
    Thomas Gerbet (tgerbet)2015-08-12 09:05
    last edited by: Thomas Gerbet (tgerbet) 2015-08-12 09:38
    I find it strange that forgeupgrade said your system were up to date but the field password was not in the database. We did not encounter an issue with that upgrade on others Tuleap instances.

    forgeupgrade is the script that is in charge of upgrading your database schema. You must execute it when you upgrade Tuleap.

    To be sure that your installation is fine, you can try a partial re-installation by executing the setup.sh script again.
    If you also can attach to this request a dump of the table forge_upgrade_log (SELECT * FROM tuleap.forge_upgrade_log), it will be helpful to us to identify if there is an issue with the forgeupgrade script.

    • Status changed from Waiting for information to Closed
    • Close date set to 2015-08-12
    User avatar
    Addendum.

    I've just found file /usr/share/tuleap/src/db/mysql/database_structure.sql.
    Inside I see that password field is part of DB schema for 'user' table so I gather that instead of preventing it's insertion it is now expected to be there. I also has found /usr/share/tuleap/src/db/mysql/updates/2015/201505051630_add_new_password_field.php and inside SQL query to add it to 'user' table. I've run the query and I'm able now to create user.

    So I'll close the issue but I'd like to ask first what process was responsible for execution of this php that was supposed to upgrade DB.
    Was it this forgeupgrade? How can I double check if all parts of my installation are in sync?

    Best regards
    Andrzej
    User avatar
    Thank you Thomas for devoting some time to this.
    Unfortunately I'm still having the same problem.
    It is true that I have not run forgeupgrade previously but now it says that:

    /usr/lib/forgeupgrade/bin/forgeupgrade --config=/etc/codendi/forgeupgrade/config.ini update
    INFO - System up-to-date

    Your second link for deployment (especially section for 8.3 "Password storage") made me feel like I'm home ... but having followed the instructions, that is with (and also running script for openfire - I don't have proftpd plugin installed):

    # grep hashed /etc/tuleap/conf/local.inc
    $sys_keep_md5_hashed_password = 0;

    I'm still having the same issue. So the steps I made are:
    1. Stopped tuleap&httpd services
    2. Run forgeupgrade
    3. Added $sys_keep_md5_hashed_password = 0; to local.inc
    4. Run redeploy_auth script for IM plugin
    5. Started tuleap&httpd

    It looks to me like if the point 3 has not yet managed to take an effect since the "INSERT INTO user ..." command still has 'password' column (which is not in the DB table) - perhaps I do not understand how this should be working. I'd like to use the new scheme so my understanding is that the $sys variable should be set to 0 so that hash for password that was previously kept in 'password' column is no longer put in DB.

    I'm afraid I still need some help :( - how do I stop DataObjectClass from inserting hashed password to DB? How can I debug this further?

    Best regards
    Andrzej
    User avatar
    Thomas Gerbet (tgerbet)2015-08-11 09:04
    Hello,

    It seems that you didn't execute forgeupgrade after your update. The documentation has a section concerning the upgrade to a newer version of Tuleap: https://tuleap-documentation.readthedocs.org/en/latest/installation-guide/update.html
    When you do an upgrade, I also suggest you take a look at the deployment guide: https://tuleap-documentation.readthedocs.org/en/latest/deployment-guide/intro.html. It may contain interesting information for you.

    Does it solve your issue?

    • Status changed from New to Waiting for information