Bug in vertica/engine/api/start_database.py in 9.0.1 - start_list used before assignment

jpottsjpotts Registered User

Line 95 contains an os.chmod command. If this command fails, e.g. for no such file or directory, the failure will be hidden by another failure - the exception handler tries to reference start_list, which is not initialized until line 96, resulting in UnboundLocalError: local variable 'start_list' referenced before assignment.

This can be worked around by adding start_list = [] between the try: on line 94 and the os.chmod on line 95.

Comments

  • s_crossmans_crossman Employee, Registered User, VerticaExpert, VerticaPartners, AskTools

    Hi,

    Thanks for taking the time to report and debug. I confirmed that this is fixed in the 9.1.0 code stream as shown below. Note the change in order of start_list and os.chmod.

    9.0.1
    def _do_db_start(self, node, delete_corrupted_data, last_epoch, unsafe, environment, result):
    """Returns None.
    Updates result with startup information
    """
    try:
    os.chmod(node.catalogpath, 0700)
    start_list = node.startDbList(
    delete_corrupted_data, last_epoch, unsafe)
    db_log_path = node.dbLogPath()

    9.1.0
    def _do_db_start(self, node, delete_corrupted_data, last_epoch, unsafe, environment, result):
    """Returns None.
    Updates result with startup information
    """
    try:
    start_list = node.startDbList(
    delete_corrupted_data, last_epoch, unsafe)
    os.chmod(node.catalogpath, 0700)
    db_log_path = node.dbLogPath()

    Regards,

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file