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

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 Vertica Employee Employee

    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