Possible fix for not being able to pick up Pals

Dunno if this is the right place for this but I thought I'd share this.
EDIT: This seems to only work for the other members once, once they rejoin its gone. So this doesn't work fully yet. Trying to figure out a way to make it work for the other members as well.
EDIT 2: Seems like it created more guilds again, deleting them seems to have fixed it for now, not sure what's causing them to show up, might be people joining the guild, for now no new instances of the guild are being created, will keep updating this issue.
EDIT 3; It mostly works now, sometimes the other members need to relog, haven't gotten a new guild entry in the level.sav file yet.
This is from a server where we switched from Windows -> Linux.
We had the issue with not being able to pick up Pals after the migration, I was able to find a fix that seems to work.
After doing some testing with my friends I found out after looking into the level.sav file that there were 2 instances of our guild. Presumably this happened with the migration or some time after, since we only had one guild I was easily able to find the data for our guild and the second "fake" guild that also included our data, since they were both the largest ones inside the level.sav. There might be multiple of these "fake" guilds in there, not sure how they are being created, or what the cause is.
By deleting the second guild everyone was able to pick up Pals. This might not work for other instances of this bug but I saw other people have the same problem like in #55 and #58, so I thought I'd share how I solved this.
-> Main issue: Multiple guild instances are being created in the level.sav with what seems to be the same data. What causes them to show up I'm not sure yet. But they seem to be the cause of the pick up bug.
Process:
This might destroy your world save to be sure to backup the save.

backup save
Convert level.sav to json
search for all instances of "guild"
find your own guild (in my case this was just the biggest one with the most data and also the first, might be able to find this with the player GUIDs)
look for other guild entries in the file that match somewhat up with your old one, I found them by them being the only other guild data with a lot of data in it and them being further down the file
delete the other guild entries
convert back to .sav
load world back up
Guild Master (me) was able to immediately pick up Pals
some members might need to rejoin guild -> this might actually cause the main issue again?
all owned Pals were not assigned to the guild -> just drop them on the ground and pick them back up

Side note: Searching for GUIDs of the guilds can show which one is original one, since the original one had more entries than the guild entry itself, being some kind of references to objects that have the guild GUID in their data.
This all seems to have been a permanent fix in my case, so far even after restarts and stuff everything seems to still work (only 100% sure for the guild master), will keep updated on this though. If there are any remaining issues with Pals, dropping them and picking them back up might solve those. If members of the guild can't pick them up after rejoining or a server restart then there probably was a new guild instance created in the level.sav.
If this also works for other people then maybe writing up a guide and putting it in the ReadMe would be a good idea.

something else I noticed; issue seems to be fixed if my character levels up the reconnects to the server.
in my experience this breaks once the server restarts again.

Phew. Thanks for letting us know.
Unfortunately we've got PLENTY of guilds and I have no clue how to figure out the issue here now.
We're like 15 players and none in the guild of another player.
I'm the only one facing the said issue.

I also have this issue. Sadly, both “fixes” didn't seme to work for me.
In the converted level.sav json I could only find one instance of "guild".
And the level up and reconnect didn't helped either.
But fyi, newly catched pals on the server can be picked up by the player, only pals catched before the server conversion are bugged.

I also have this issue. Sadly, both “fixes” didn't seme to work for me. In the converted level.sav json I could only find one instance of "guild". And the level up and reconnect didn't helped either. But fyi, newly catched pals on the server can be picked up by the player, only pals catched before the server conversion are bugged.

Not the case for me. Just caught some, also can't pick them up.
Ugh, that's really a pain, since we can't use the breeder this way.

could you explain where the beginning of GUIDs data column start and end ?
I cut out the parts that expected would be beginning and end that column.
u can see guild_name column.
"key": "9df335d5-4fad-fdb5-bc22-8487e76e440b",
"value": {
"GroupType": {
"id": null,
"value": {
"type": "EPalGroupType",
"value": "EPalGroupType::Neutral"
},
"type": "EnumProperty"
},
"RawData": {
"array_type": "ByteProperty",
"id": null,
"value": {
"group_type": "EPalGroupType::Neutral",
"group_id": "9df335d5-4fad-fdb5-bc22-8487e76e440b",
"group_name": "",
"individual_character_handle_ids": [
{
"guid": "00000000-0000-0000-0000-000000000001",
"instance_id": "2e7b6a58-4b2b-f6f3-d563-32b4bdf27c0d"
},
{
"guid": "00000000-0000-0000-0000-000000000001",
"instance_id": "2f7d29bc-4bae-2896-cb54-599c1f425d20"
}
]
},
"type": "ArrayProperty"
}
}
},
{
"key": "d4afd619-48d3-41f3-9faf-6d9ee2ed80b3",
"value": {
"GroupType": {
"id": null,
"value": {
"type": "EPalGroupType",
"value": "EPalGroupType::Guild"
},
"type": "EnumProperty"
},
"RawData": {
"array_type": "ByteProperty",
"id": null,
"value": {
"group_type": "EPalGroupType::Guild",
"group_id": "d4afd619-48d3-41f3-9faf-6d9ee2ed80b3",
"group_name": "34DD734B000000000000000000000000",
"individual_character_handle_ids": [
{
"guid": "34dd734b-0000-0000-0000-000000000000",
"instance_id": "f6465586-4325-647e-72cc-d89348d4a075"
}
],
"org_type": 0,
"base_ids": [],
"base_camp_level": 1,
"map_object_instance_ids_base_camp_points": [],
"guild_name": "無名のギルド",
"admin_player_uid": "34dd734b-0000-0000-0000-000000000000",
"players": [
{
"player_uid": "34dd734b-0000-0000-0000-000000000000",
"player_info": {
"last_online_real_time":<PHONE_NUMBER>00,
"player_name": "John"
}
}
]
},
"type": "ArrayProperty"
}
}
}
],
"type": "MapProperty",
"custom_type": ".worldSaveData.GroupSaveDataMap"
},
"GameTimeSaveData": {
"struct_type": "PalGameTimeSaveData",
"struct_id": "00000000-0000-0000-0000-000000000000",
"id": null,
"value": {
"GameDateTimeTicks": {
"id": null,
"value":<PHONE_NUMBER>0000,
"type": "Int64Property"
},
"RealDateTimeTicks": {
"id": null,
"value":<PHONE_NUMBER>00,
"type": "Int64Property"
}
},
"type": "StructProperty"
},

This worked for me the first time, but after restarting the server I was back to not being able to interact with pals again :(

Okay, I think I got it to work, i did this:

As per the issue instructions you look for a guild in the file that does not make sense, in my case I found a guild where I was alone in.
-Assuming this is the extra guild that is causing the problems you want to delete all the contents associated with that guild in the .json file. BUT FIRST copy the key value that is associated with this category.
Searching for that key value of the guild block that you just deleted will lead you to another block. Delete this block as well.

Deleting the second block that had the "bad" guild's key associated with made the fix "permanent", at least on my side

thanks for this, will try! what are you using to edit the .sav/.json file?

thanks for this, will try! what are you using to edit the .sav/.json file?

https://github.com/cheahjs/palworld-save-tools

i would also like to know what @guksg mentioned, its a bit messy

Okay, I think I got it to work, i did this:
* As per the issue instructions you look for a guild in the file that does not make sense, in my case I found a guild where I was alone in.
  -Assuming this is the extra guild that is causing the problems you want to delete all the contents associated with that guild in the .json file. BUT FIRST copy the key value that is associated with this category.

* Searching for that key value of the guild block that you just deleted will lead you to another block. Delete this block as well.

Deleting the second block that had the "bad" guild's key associated with made the fix "permanent", at least on my side

This seems to have worked for me, thank you so much for this fix!

Chiming in to say deleting the extra blocks worked for me as well! Ty for the find. To add some context:
I had my true guild with all player names inside, as well as 3 extra "fake" guilds with their own IDs. For two of those "fake IDs," I had to delete one extra block. For my last "fake ID," I actually had to go and delete 68 blocks. All working now after doing so though!

For me i can't find any extra guild in json files.
Can you guys make a video or some screenshots how should it looks like?
Btw what program do u use for edit a json file? I used Notepad++ but it seems very not confortable

Okay, I think I got it to work, i did this:
* As per the issue instructions you look for a guild in the file that does not make sense, in my case I found a guild where I was alone in.
  -Assuming this is the extra guild that is causing the problems you want to delete all the contents associated with that guild in the .json file. BUT FIRST copy the key value that is associated with this category.

* Searching for that key value of the guild block that you just deleted will lead you to another block. Delete this block as well.

Deleting the second block that had the "bad" guild's key associated with made the fix "permanent", at least on my side

This seems to have worked for me, thank you so much for this fix!

I only see one EPalGroupType:Guild listed but i see a lot of key vaules with my old local save GUID<PHONE_NUMBER>000001) saying EPalGroupType:Neutral. Is this what is getting deleted?

I made changes to the script to delete the newly created group and update the old group with the new player ID. I also adjusted the OwnerPlayerUId and OldOwnerPlayerUIds of the Pals. This resolves the pickup problem on my site. Since I didn't want to interfere with binary data, I had to modify the script significantly. Consequently, I created a new repository for it at JannikBirn/palworld-host-save-fix instead of submitting a pull request.
If this solution works for most of you, I can submit a pull request if @xNul agrees. This would involve substantial changes to the code. Alternatively, you can adjust your code to incorporate the adjustments I made to work with your binary modifications.

@JannikBirn my friend, is there any way you could guide me through this in a dc call or something, i am completley lost. been sitting with this for 4 hours

I made changes to the script to delete the newly created group and update the old group with the new player ID. I also adjusted the OwnerPlayerUId and OldOwnerPlayerUIds of the Pals. This resolves the pickup problem on my site. Since I didn't want to interfere with binary data, I had to modify the script significantly. Consequently, I created a new repository for it at JannikBirn/palworld-host-save-fix instead of submitting a pull request.
If this solution works for most of you, I can submit a pull request if @xNul agrees. This would involve substantial changes to the code. Alternatively, you can adjust your code to incorporate the adjustments I made to work with your binary modifications.

What steps would you do if you already moved to the dedicated server? We are  a day into the dedicated server with this issue? So doing the host-save-fx will just remove all progress.

I made changes to the script to delete the newly created group and update the old group with the new player ID. I also adjusted the OwnerPlayerUId and OldOwnerPlayerUIds of the Pals. This resolves the pickup problem on my site. Since I didn't want to interfere with binary data, I had to modify the script significantly. Consequently, I created a new repository for it at JannikBirn/palworld-host-save-fix instead of submitting a pull request.
If this solution works for most of you, I can submit a pull request if @xNul agrees. This would involve substantial changes to the code. Alternatively, you can adjust your code to incorporate the adjustments I made to work with your binary modifications.

What steps would you do if you already moved to the dedicated server? We are a day into the dedicated server with this issue? So doing the host-save-fx will just remove all progress.

I don't think this is easily possible, you probably need to look manually into the save files (you can convert these with this tool). Then you need to find the different guilds with your old and new player guid and remove the new guild and replace the player guids in the old one with your new player guid. But this might have unintended consequences, that you will be unable to pick up your newly caught pals since these might now be associated with the new guild.
Tbh. this all sounds pretty difficult and might not work, so the best thing could be to lose this day of progress and start with the save state before you moved to the dedicated server.

@linus551000 write me your dc name, and I'll see what I can do for you. But maybe you can tell us with what you're struggling so we can help other people as well.

@JannikBirn dc: gizmo551000. tbh i was struggeling with getting my own save file into the world at first, im not very good at understanding all this but after a couple of hours and many yt vids i managed to get the savefile to work, but the problem i encounterd when loggin in is that all the pals captured BEFORE trandering from co-op world to server is not able to pick up, and the ore on my ore farm is not farmable by any pals. able with my pickaxe tho, and i tried to understand this, but when i succesfully made the file into a json file i lost it, might aswell been in chinese. Did not understand anything xD

I tried removing this unnamed guild and I either did it wrong or it didn't work. I got the new character creation. I also tried adding another account to the world and transferring ownership which seemed to partially work. Some pals I could lift and others I couldn't. It seemed to be new catches were fine and old were not. So I purged my box and got to work. But what I found was some newly caught pals were bugged while others were not. This is pretty much game breaking since I can't consistently breed.
What I believe caused this issue. I used the "Palworld Host Save Fix" to change my dedicated server save from the Old player ID to the New player ID post 0.1.3 release. I followed some general directions of join server create the new player save and then use the script. I have my 0.1.2 backup still. But I really put a lot of time into this before I realized I couldn't pick up pals anymore. I'm not sure what to do at this point try and roll back or wipe server. Both kind of take the wind out of my sails for a bit.

@linus551000 I wasn't able to get in touch with you, but I might have something even better. I created a simple UI for my tool and added an executable to the latest realese, this should be pretty easy to use. You can find it here: https://github.com/JannikBirn/palworld-host-save-fix

So, i did a little digging myself in our Level.sav and this is what i found out:
After Running the Script and People have joined the Server again, i have found two Playerentrys with the same GUID (i suspect one is the old, transferred and the other is the newly created.) The newly created had a different groupid, which seems to be the identifier for which Guild the Player belongs to. When the new Character is created, a new Guild is also created.
So i deleted the new Guild (most likely called "Unknow Guild"), and all corresponding Data (Take the Key and search the Dokument for it. You may finde other entries, like Pals connect to them). Then i deleted the new Account and double checked if the old account has the correct Key in the groupid, corresponding to the original Guild.
After a bit of testing, this seems to have eliminated the Problem of not beeing able to pick up pals.

So, i did a little digging myself in our Level.sav and this is what i found out:
After Running the Script and People have joined the Server again, i have found two Playerentrys with the same GUID (i suspect one is the old, transferred and the other is the newly created.) The newly created had a different groupid, which seems to be the identifier for which Guild the Player belongs to. When the new Character is created, a new Guild is also created.
So i deleted the new Guild (most likely called "Unknow Guild"), and all corresponding Data (Take the Key and search the Dokument for it. You may finde other entries, like Pals connect to them). Then i deleted the new Account and double checked if the old account has the correct Key in the groupid, corresponding to the original Guild.
After a bit of testing, this seems to have eliminated the Problem of not beeing able to pick up pals.

Yes, this is exactly what I did with my script. The problem was that the newly created player and group didn't get deleted, when running xNal's script.

So, i did a little digging myself in our Level.sav and this is what i found out:
After Running the Script and People have joined the Server again, i have found two Playerentrys with the same GUID (i suspect one is the old, transferred and the other is the newly created.) The newly created had a different groupid, which seems to be the identifier for which Guild the Player belongs to. When the new Character is created, a new Guild is also created.
So i deleted the new Guild (most likely called "Unknow Guild"), and all corresponding Data (Take the Key and search the Dokument for it. You may finde other entries, like Pals connect to them). Then i deleted the new Account and double checked if the old account has the correct Key in the groupid, corresponding to the original Guild.
After a bit of testing, this seems to have eliminated the Problem of not beeing able to pick up pals.

Yes, this is exactly what I did with my script. The problem was that the newly created player and group didn't get deleted, when running xNal's script.

Yes, I thought so, unfortunately I had made the original transfer with xNay's script and could no longer use yours. I'll probably do the next characters with your script, then I won't have to do it by hand anymore

So the easy method I think just remove any guild record that not correct one right? Then restart the server

In my case, I noticed some players who can't pickup belong to multiple guilds.
I've removed such guilds with comparing last_online_real_time.
Here's the actual script I ran:
https://github.com/mtsmfm/palworld-utils/blob/2c54db823fcea86211fca9e752a6e4a96284e3f0/cli/index.ts#L114-L160
Hope it helps.

Hi @mtsmfm ,
thanks for the script but actually i cant execute this because my level.sav.json is to big.
The error encountering is a limitation of the Node.js runtime environment. The maximum length of a string that can be created using the Buffer.toString() method is 0x1fffffe8 characters, which is approximately 2GB. My save file to load is likely larger than this limit, which is causing the error.

Has anyone tried removing guid values with all "0"'s for pals within your active guild? I have a ton that are registered to the host but towards the end of the list there are some empty guid values that are similar to the empty guilds. Just want to make sure I'm not deleting my buddies party pals or something

@linus551000 I wasn't able to get in touch with you, but I might have something even better. I created a simple UI for my tool and added an executable to the latest realese, this should be pretty easy to use. You can find it here: https://github.com/JannikBirn/palworld-host-save-fix

@JannikBirn, thank you for saving me after many hours of struggling with this. Your GUI-based method/script allowed me to successfully migrate from Steam/Windows co-op to Linux dedicated. I used Filezilla for all file transfers, to be transparent.
In my case:
1 - I used the GUI to apply the host fix exactly as described in your branch, deleting WorldOption.sav too. When merging the old host save (...0001), for some reason the final merged filename was all lowercase (Ex. - b3a5a0 versus B3A5A0). I uploaded the entire save folder to the server, changed the DedicatedServerName in GameUserSettings.ini to match our save folder name, and started the server.
2 - I had all players join as a good measure. The other players were not prompted to create new saves and maintained everything tied to their original co-op save. When the host rejoined after the fix was applied though, they were prompted to create a new character, and it created a fresh save file for them. I noticed that the fresh .sav file for the host was the same filename as the merged file, except in all capitals.
3 - I stopped the server, deleted the new host .sav that was generated, and renamed the merged host file produced by the script to be all capitals instead of lowercase. I then started the server.
When the former host rejoined this time, all they had to do was choose their spawn point. We then confirmed everything was functional for the host.
We did nothing else, and the other 3 players (non-hosts) were able to join and maintained all of their stuff as well. As of a lengthy session today, we have surprisingly encountered no issues (Pals, Guilds/Bases, nothing). Things remain fine after server restarts.
The only thing worth noting is that our egg spawn timers were set to 72 (hard difficulty), but that was likely a server host issue and was easy to correct in PalworldSettings.ini.
Again, a million thanks @JannikBirn! I would be glad to work with you to share this knowledge, and am happy to answer any questions the community might have about how I finally got this to work. Seems I got luckier than many.

@linus551000 I wasn't able to get in touch with you, but I might have something even better. I created a simple UI for my tool and added an executable to the latest realese, this should be pretty easy to use. You can find it here: https://github.com/JannikBirn/palworld-host-save-fix

@JannikBirn, thank you for saving me after many hours of struggling with this. Your GUI-based method/script allowed me to successfully migrate from Steam/Windows co-op to Linux dedicated. I used Filezilla for all file transfers, to be transparent.
In my case: 1 - I used the GUI to apply the host fix exactly as described in your branch, deleting WorldOption.sav too. When merging the old host save (...0001), for some reason the final merged filename was all lowercase (Ex. - b3a5a0 versus B3A5A0). I uploaded the entire save folder to the server, changed the DedicatedServerName in GameUserSettings.ini to match our save folder name, and started the server.
2 - I had all players join as a good measure. The other players were not prompted to create new saves and maintained everything tied to their original co-op save. When the host rejoined after the fix was applied though, they were prompted to create a new character, and it created a fresh save file for them. I noticed that the fresh .sav file for the host was the same filename as the merged file, except in all capitals.
3 - I stopped the server, deleted the new host .sav that was generated, and renamed the merged host file produced by the script to be all capitals instead of lowercase. I then started the server.
When the former host rejoined this time, all they had to do was choose their spawn point. We then confirmed everything was functional for the host.
We did nothing else, and the other 3 players (non-hosts) were able to join and maintained all of their stuff as well. As of a lengthy session today, we have surprisingly encountered no issues (Pals, Guilds/Bases, nothing). Things remain fine after server restarts.
The only thing worth noting is that our egg spawn timers were set to 72 (hard difficulty), but that was likely a server host issue and was easy to correct in PalworldSettings.ini.
Again, a million thanks @JannikBirn! I would be glad to work with you to share this knowledge, and am happy to answer any questions the community might have about how I finally got this to work. Seems I got luckier than many.

So I used the original script and instructions to replace the player guids when I migrated from one dedicated hot to another. Is there any way to fix this issue after the transfers have been done?

@sirzuidy thanks, great to hear that it worked for you. I'll take a look at the GUI script why the filename was in lower case, that should be an easy fix but went unnoticed so far.

@linus551000 I wasn't able to get in touch with you, but I might have something even better. I created a simple UI for my tool and added an executable to the latest realese, this should be pretty easy to use. You can find it here: https://github.com/JannikBirn/palworld-host-save-fix

moin.
I found this thread because I have that same bug where I cant pickup pals to assign them.
using your tool it shows that multiple people have multiple chars on my server at different levels. even people that haven't played on the server before using the PY script to migrate characters.
Is there a way to delete these wrong level chars from the save. might that fix the problem with the not-pick of pals?

@linus551000 I wasn't able to get in touch with you, but I might have something even better. I created a simple UI for my tool and added an executable to the latest realese, this should be pretty easy to use. You can find it here: https://github.com/JannikBirn/palworld-host-save-fix

moin. I found this thread because I have that same bug where I cant pickup pals to assign them. using your tool it shows that multiple people have multiple chars on my server at different levels. even people that haven't played on the server before using the PY script to migrate characters.
one person exists as lvl 38, 12 and 3 for example, 2 players as highlevel and 0 level. but the corresponding savefile in the players folder doesn't exist (only 1 per players as expected).
trying to migrate the higer level onto the lower level doesn't work with your tool (removing the low/0 levels).
Is there a way to delete these wrong level chars from the save. might that fix the problem with the not-pick of pals? in our case the actual high level chars work and don't need any migration with the tool.

That sounds really weird, the real question tho is why:

trying to migrate the higer level onto the lower level doesn't work with your tool (removing the low/0 levels).

Doesn't work. Are you able to provide me with your save files, so I can check what's going wrong.

@sirzuidy thanks, great to hear that it worked for you. I'll take a look at the GUI script why the filename was in lower case, that should be an easy fix but went unnoticed so far.

Thanks @JannikBirn! Your patch worked for me too! Maybe make a pull request? I didn't have any issues with upper/low cases.
@HPTD1, If you were the host, your original game save file should be<PHONE_NUMBER>0000000000000000000001.sav and I assume that you are the lvl 38 character. As mentioned in steps 4-6 of the readme: Once you put your save on the dedicated server and connect to it, you will be asked to create a character. Once you create a character and unlock first fast-travel statue (or just exit to title), the game will save and you will notice a new .sav file in the Players directory. That new .sav file is for the new lvl 0 character that you just created and will be character that you want to migrate to/overwrite, similar to this:

As for figuring out which game save is for which player, you can convert the .sav files to JSON and open it in a text editor using this tool:
https://github.com/cheahjs/palworld-save-tools?tab=readme-ov-file#terminal

Does anyone know if there is a script or something to delete the extra guilds and stuff after a transfer? Does the script by Jannikbirn prevent the issue? If I already did a transfer with the xNul script can I use the modified one by Jannik on the new server?

Does anyone know if there is a script or something to delete the extra guilds and stuff after a transfer? Does the script by Jannikbirn prevent the issue?

Yes, my script will delete the new player and associated guild of that new player. I am able to pick up Pals again.

If I already did a transfer with the xNul script can I use the modified one by Jannik on the new server?

That is currently not supported. I would recommend starting from a backup before you ran xNul's script.

@Ma5onic
we had some weird situation, we moved a dedicated server from a private win11 pc to a windows data server dedicated server. it wasn't from a coop savegame, but from one dedicated palworld server to another dedicated palworld on, but the save file IDs did still switch.  there were no 00001.sav, everyone had regular IDs already.  but the new server created new IDs for existing players.
with this py script we managed to migrate the different player IDs to their new IDs (login, see what new ID is created, migrate the existing ID onto that person, repeat)
your tool shows some weird leftovers in the save files
One person with 2 additional entries at lower levels.
One person with 1 additional lvl 0
and another person with a lvl 0, but this person started playing after the switch onto the new server.
As mentioned, there are no "leftover" IDs in the save folder. your tool makes them selectable but cant complete the migration (probably because there is no #.sav file of them)
My best guess is, that our problems with the pal assignment in bases is due to these duplicate players that your tool detects in the save files, even though they dont have a #.sav in the players folder. I need to find a way to clean them out of the level.sav file

I made changes to the script to delete the newly created group and update the old group with the new player ID. I also adjusted the OwnerPlayerUId and OldOwnerPlayerUIds of the Pals. This resolves the pickup problem on my site. Since I didn't want to interfere with binary data, I had to modify the script significantly. Consequently, I created a new repository for it at JannikBirn/palworld-host-save-fix instead of submitting a pull request.
If this solution works for most of you, I can submit a pull request if @xNul agrees. This would involve substantial changes to the code. Alternatively, you can adjust your code to incorporate the adjustments I made to work with your binary modifications.

I just made my dedicated server yesterday, converting the file with this yesterday, and I'm dealing with this issue now - what do I do?

I made changes to the script to delete the newly created group and update the old group with the new player ID. I also adjusted the OwnerPlayerUId and OldOwnerPlayerUIds of the Pals. This resolves the pickup problem on my site. Since I didn't want to interfere with binary data, I had to modify the script significantly. Consequently, I created a new repository for it at JannikBirn/palworld-host-save-fix instead of submitting a pull request.
If this solution works for most of you, I can submit a pull request if @xNul agrees. This would involve substantial changes to the code. Alternatively, you can adjust your code to incorporate the adjustments I made to work with your binary modifications.

I just made my dedicated server yesterday, converting the file with this yesterday, and I'm dealing with this issue now - what do I do?

I think you used the the tool by @xNul, not by @JannikBirn.
Use this one for now: https://github.com/JannikBirn/palworld-host-save-fix

@HPTD1 it is not my tool, I had nothing to do with the development, I am just documenting my findings.
If you started with a dedicated server, I don't think that you need to use this tool, if I am not mistaken, all you needed to do was transfer the game save to the new server and set the GameUserSettings.ini so that the DedicatedServerName variable matches the name of your save folder, otherwise it will create a new save folder.
As for the additional players, if people joined while you were troubleshooting and you try to reuse the same save folders, it is possible that there will be artifacts.
I would try again from scratch since you only migrated yesterday, taking into consideration what I said about the GameUserSettings.ini

@HPTD1 how were you able to tell which player name and which guild id to change. Any chance you’d have a screenshot so I know what to look for?

In my case, I noticed some players who can't pickup belong to multiple guilds. I've removed such guilds with comparing last_online_real_time.
Here's the actual script I executed: https://github.com/mtsmfm/palworld-utils/blob/2c54db823fcea86211fca9e752a6e4a96284e3f0/cli/index.ts#L114-L160
Hope it helps.

@mtsmfm sorry im new, how do i run this script?

I made changes to the script to delete the newly created group and update the old group with the new player ID. I also adjusted the OwnerPlayerUId and OldOwnerPlayerUIds of the Pals. This resolves the pickup problem on my site. Since I didn't want to interfere with binary data, I had to modify the script significantly. Consequently, I created a new repository for it at JannikBirn/palworld-host-save-fix instead of submitting a pull request.
If this solution works for most of you, I can submit a pull request if @xNul agrees. This would involve substantial changes to the code. Alternatively, you can adjust your code to incorporate the adjustments I made to work with your binary modifications.

I just made my dedicated server yesterday, converting the file with this yesterday, and I'm dealing with this issue now - what do I do?

I think you used the the tool by @xNul, not by @JannikBirn.  With saying "use this one for now" are you saying I can fix the save just by putting it through this other host-save-fix? Already put a lot of work into the save where pals can't be picked up, so don't want to lose that work. Sooounnddss like I'm gonna need to scrub through and delete lines in json files or something?

@JannikBirn Thank you for your work, my friends and I appreciate it. I'm trying to run the tool to fix the pal pickup issue and running into this error as it seems to be wrapping up:

Any ideas? If you're available to chat on discord I am zennagos

@HPTD1 how were you able to tell which player name and which guild id to change. Any chance you’d have a screenshot so I know what to look for?

the problem was double entries for guilds, both the real and the fake guilds had the same player in it, searching for the player name or ID works.
the guilds were unnamed guilds, unlike the real guilds, also the buggy guilds were lvl 1.
changing the players in those guilds by changing the player name and ID in the fake guild and the Guilds ID itself, which use the same ID the player does (founder?) worked for me.

@JannikBirn I was able to manually fix it by editing the file by hand, so dont worry about my last post >_<. Thanks everyone here.

I just deleted the part highlighted here.

Can someone help guide me through this please? Under my guild block i see what seems like hundreds of lines similar to this { "key": "8857efca-48ba-4226-0e5e-4c812169ef49", "value": { "GroupType": { "id": null, "value": { "type": "EPalGroupType", "value": "EPalGroupType::Neutral" }, "type": "EnumProperty" }, "RawData": { "array_type": "ByteProperty", "id": null, "value": { "group_type": "EPalGroupType::Neutral", "group_id": "8857efca-48ba-4226-0e5e-4c812169ef49", "group_name": "", "individual_character_handle_ids": [ { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "44987eb1-499d-49fb-a449-3ab91c144761" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "c9c77d7e-4166-cb5a-f946-7fb4cfc1de28" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "c4f5a2d3-4070-7839-b0e8-b79dc1739798" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "84a5b16f-4bbd-f2ee-e8e0-03abc58c7d39" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "8c3f8118-4984-8283-f1a8-929a6945196a" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "7733553f-434d-9b43-2135-0686a17adab4" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "124ac876-4547-b2d6-95e2-8e8c806b0874" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "85602832-4371-c31e-c314-bb881b7e841e" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "a18877ff-49de-2060-3aff-6aa28b130a4e" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "ed9becd9-4b74-4e3b-49a5-d8b680bf0143" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "ed657955-4125-9c0b-8615-bcab4bf674ea" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "b72a1c97-4e83-5c75-790d-08b82d1a7aad" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "29e71fca-425a-e192-075b-b49232ae8043" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "192cfa5c-4e6e-e960-b13c-308d3287b09c" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "1f116fb9-47c5-5e08-0dd7-b4a21e018ff4" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "fe0dc6ff-4913-5937-250c-16996cf0b852" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "7c9173a1-4a8a-e671-931b-55a1fd02daca" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "d31767f0-4073-0796-8b66-84ae58063ff4" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "4ccdd078-4494-51f5-9e9b-d7ab1184e84a" }, { "guid": "00000000-0000-0000-0000-000000000000", "instance_id": "d9d45d20-4a90-6c42-651b-5784dd6d758b" } ] }, "type": "ArrayProperty" } } }, { Unfortunately my friends and i have played 100 hours combined with the ability to pick up pals intermittently being a problem for everyone. now it seems to be just affecting me.

delete the highlighted area

@linus551000 I wasn't able to get in touch with you, but I might have something even better. I created a simple UI for my tool and added an executable to the latest realese, this should be pretty easy to use. You can find it here: https://github.com/JannikBirn/palworld-host-save-fix

I used this tool, followed the steps, put the level 41 character in the first slot and the level 0 in the second and now 41 is gone and 0 is still there if I run the tool again? And when I join the server, I'm at the character creation screen?

@linus551000 I wasn't able to get in touch with you, but I might have something even better. I created a simple UI for my tool and added an executable to the latest realese, this should be pretty easy to use. You can find it here: https://github.com/JannikBirn/palworld-host-save-fix

I used this tool, followed the steps, put the level 41 character in the first slot and the level 0 in the second and now 41 is gone and 0 is still there if I run the tool again? And when I join the server, I'm at the character creation screen? When I look at the map from that brand new character, every where I had been on my old character is visible, like as if I'd been all over the map on the "new" character.
edit: In fact... all players are starting at Character Creation now
I am so crushed 😭 my backup file got undid out of idiotic haste and now I'm legit fucked
Edit 2: I would genuinely happily pay you to fix my file if possible? I have the original files that were transferred to the server on Tuesday, the file that doesn’t have my high level character anymore from tonight, as well as that file with me logging in on a new new character (but still has the map fog removed somehow). Somehow the data must be in there?? I’m just so at a loss right now, we took a long time to realize we couldn’t pick up pals anymore, and then kept playing beyond that, so there is a ton hours of progress lost if we revert to Tuesday… let me know the price, seriously 🙏 🙇 I beg of you, tech god

@JannikBirn

If I wanted to try and fix my guild issue, how do I convert the .json back to .sav without transferring a character? My character is already transferred (from a week ago, just been letting my friends do all the basebuilding stuff), so I am curious how I can fix the save, as it looks like the tool requires you to transfer a character for it to finish. Also, is it normal for my json to end up being about 500mb? I am struggling to open and edit it because of that

If I wanted to try and fix my guild issue, how do I convert the .json back to .sav without transferring a character? My character is already transferred (from a week ago, just been letting my friends do all the basebuilding stuff), so I am curious how I can fix the save, as it looks like the tool requires you to transfer a character for it to finish. Also, is it normal for my json to end up being about 500mb? I am struggling to open and edit it because of that, as I type the loading bar for sublime text is only ~15% done after a few minutes.

My Level.sav is 1.3GB so perfectly normal! Assuming you used palworld-save-tools to go from SAV to JSON, to convert JSON back to SAV you just need to run it through palworld-save-tools again 😄

Has anyone got a reliable way to cleanup if they used xNul's version of the script? When transferring the last two characters on my server I noticed that JannikBirn's tool shows the two characters I first transferred with xNul's tool still show the original level 0 accounts as existing.

If I wanted to try and fix my guild issue, how do I convert the .json back to .sav without transferring a character? My character is already transferred (from a week ago, just been letting my friends do all the basebuilding stuff), so I am curious how I can fix the save, as it looks like the tool requires you to transfer a character for it to finish. Also, is it normal for my json to end up being about 500mb? I am struggling to open and edit it because of that, as I type the loading bar for sublime text is only ~15% done after a few minutes.

I used Visual Studio Code. Make sure you have a good amount of RAM. Mine was about 2 GB. Give it some time to process as much as it can but do not expect the full linter to work. After that search for guild as the guide suggests. In my case, the guilds that were giving me trouble were called "Unnamed Guild". Just delete the full instance from bracket to bracket. If the guild has a lot of pals it will be a bit of a struggle to scroll while selecting but not impossible. The fast scrolling in my mouse helped a lot since one of them had about 300 pals. After that the fix should be permanent. Another tip I would say is to rename your guild to something you haven't used before, before exporting your save. That way you are sure you have the correct guild untouched.

Has anyone got a reliable way to cleanup if they used xNul's version of the script? When transferring the last two characters on my server I noticed that JannikBirn's tool shows the two characters I first transferred with xNul's tool still show the original level 0 accounts as existing.

The best way is to follow the steps in the OP. I tried everything else and nothing worked. Some suggested tools, did not work. In the end, I did what the OP instructed and fixed the issue permanently. The only downside is that your file may be very big. I would say do it ASAP. I knew about this solution very soon after I did the transfer but had issues opening the JSON and ignored it. I did it after capturing many more pals, making the bases bigger so the file was even bigger than the first time.


test: lint commenter

Overview

PR Checklist

[ ] I did below actions if need

I read the Contributing Guide
I added documents and tests.

Eslint Check Failed
Check 4cecacdeb9ecaf89151702645d772fb688886619. Please run pnpm ci:eslint -- --fix to fix eslint error.


[CLEANUP] Streamling the ignore file

Now the entries are sorted, and the array elements have trailing commas.
This will reduce unrelated changes in PRs that bring content changes
to this file.

@oliverklee Thank you for the patch. Just for me to understand. How are the files now sorted? I initially sorted them alphabetically. Is it about capitalised first now?

How are the files now sorted?

@o-ba In PhpStorm, I used Edit > Sort Lines (so the machine can do the work).

Ah I see. Thanks for the explanation :)


<EMAIL_ADDRESS>

Bump agentkeepalive -- this may help mitigate a race condition that can lead to socket hang-ups (https://github.com/node-modules/agentkeepalive/issues/23).
cc @ianshward

node-agentkeepalive uses util.debuglog which is not supported in node 0.8.x. Do we still need support for 0.8.x?

@rclark :+1: drop 0.8.x support


Get rid of _NullElement.

Fixes https://github.com/flutter/flutter/issues/145602

It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact "@test-exemption-reviewer" in the #hackers channel in Chat (don't just cc them here, they won't see it! Use Discord!).
If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?
Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

Test covered in flutter_test_config.dart

You'll need to do what the bot says to get a test exception, though.

Have we checked the performance implications of this change? The original code was intended to avoid overhead in list generation and the new code has a lot more function calls.

Have we checked the performance implications of this change? The original code was intended to avoid overhead in list generation and the new code has a lot more function calls.

From my perspective the new code has better performance.
The old code did: (1) list generation and (2) updating each value in the list with full scan, so looping two times.
New code is looping through items just one time without doing more for each item.
And I expect flutter performance banchmarks to catch the issue.
If it is not convincing enough, what will be convincing for you?

The only way to tell is to benchmark it.

Measured timing. On mac performance is improved 4 times if number of tabs is 30.
Code:
class Element {}

final stub = Element();
const numberOfTabs = 30;
const repeat = 1000000;

Element generateItem() => Element();

List<Element> oldCode() {
  final result = List<Element>.filled(numberOfTabs, stub);

  for (int i = 0; i < result.length; i += 1) {
    final Element newChild = generateItem();
    result[i] = newChild;
  }
  return result;
}

List<Element> newCode() {
  return List<Element>.generate(numberOfTabs, (int i) => generateItem(),
      growable: false);
}

void main() {
  late List<Element> list;

  Stopwatch oldTime = Stopwatch()..start();
  for (int i = 0; i < repeat; i ++) {
    list = oldCode();
  }
  oldTime.stop();
  print('old: ${oldTime.elapsedMilliseconds} ms');

  Stopwatch newTime = Stopwatch()..start();
  for (int i = 0; i < repeat; i ++) {
    list = newCode();
  }
  newTime.stop();
  print('new: ${newTime.elapsedMilliseconds} ms');

  print('length: ${list.length}');
}

Output:
old: 471 ms
new: 127 ms
length: 30

nice!


(2.1.2 pre2) Can't dismount with Warclaw in WvW with smart warclaw

Describe the bug
Pretty self explanatory, Enabling the smart warclaw option and then trying to dismount it with the mount button does nothing. It worked fine in 2.1.1.
To Reproduce
Steps to reproduce the behavior:

Enable smart warclaw
go to wvw and get on warclaw
notice that pressing mount button (to dismount) does nothing

Expected behavior
Pressing mount button while on warclaw in wvw should dismount normally.
Screenshots
n/a
System configuration (please fill in):

OS: Windows 10
GPU: 5700xt
Chainloading arcdps -> GW2Radial

Additional context
No errors in the log from what I can see.

I'm unable to reproduce on my end. Are you sure you've got your keybinds setup correctly?

Tried it again and it seems to work now, not sure what I did differently (maybe settings didn't get saved when I updated the first time?).
I'll reopen the issue if it happens again/can figure out how to reproduce.

@Friendly0Fire I was able to reproduce it and I believe I found the problem.
If you go DIRECTLY into WvW after logging in (without doing anything else), you are unable to dismount in WvW. However, if you open the wheel at any point OUTSIDE of WvW and then go back into WvW, the dismount works fine. So we have:

Select character, open the wheel in PvE, go into WvW, dismount fine (good)
Select character, go directly into WvW, unable to dismount (broken)
Select character, go directly into WvW, unable to dismount, exit WvW, open the wheel in PvE, go back into WvW, dismount fine (partially broken)

So in short, if the first time the wheel is initialized is in WvW (presumably with quick warclaw and quick dismount active in settings), you won't be able to dismount until you open the menu anywhere else in the game.
Here's my config.ini if it helps: https://pastebin.com/Sxw2tipg

I'm afraid I cannot reproduce even with your config. Make sure all of your mount keybinds are properly set, the addon will not always use the same keybind to dismount.
I made a minor tweak that could assist with that scenario, you can look here for the corresponding nightly.

The issue persisted even after deleting everything and doing a clean install.
However I've tried the nightly build and it seems to have resolved it.


introduce a dotenvx settings or dotenvx config command to control confStore settings for power users

this way you can also manage things like disabling the update notifier

effort here: https://github.com/dotenvx/dotenvx/pull/153

released as v0.28.0


[HALON-570] Fix possible ignorance of the new drive insertion.

Created by: qnikst

Closing as an obsolete


Overflow item should never show +1

Showing +1 has no benefit. Only show the overflow item for 2 or more items.
As an example,  if we have max=4, then when a fifth users joins, the group will show three avatars and then the overflow item. Said another way, the overflow item should be counted in the maximum amount of avatar items shown in the group.

Will be fixed by #65

the overflow item should be counted in the maximum amount of avatar items shown in the group.

This might need to be fixed separately, and will be reflected in the documentation for max property.


Improve allowance transfer execution flow

Currently when executing a transfer allowance the UX is not optimal.

There is no pending state for an allowance transfer
It is not possible to adjust the Ethereum transaction parameters (especially if you are connected directly to a Ledger)

What Ethereum parameters to show

Gas fee
Max priority fee
Gas limit
Nonce should NOT be displayed or edited, these txns don't have a nonce 🚫

We'll need to check if the gas estimation is done in the background still.


dftrain.pk

hi, thanks for sharing, it's quite usefully. But could you share a sample training file: dftrain.pk? Would like to see the exact format of it.

Yes, am also eager to get the traiing data "data/train_api.pk". @naiveHobo  Can you please share the link to download it..

As per your previous comments you uploaded the data files inside the data folder . I can only see the word embeddings but unable to see any model file /training data file (train_api.pk) .Could you attache the file repository

@naiveHobo Hi, could you please upload the train_api file since I cannot find any file in the repository?

@naiveHobo would be great if you can upload the train_api and some more examples


When building JMH benchmarks, fail on error, instead of proceeding.

Description
Currently, if there are errors in some (but not all) benchmarks, running bazel run //path/to/benchmark will compile them, fail on some, and then run the rest.
This changes that behavior so that any JMH build failure will fail the build.
If people are relying on these errors not failing the build, or are unaware, this will break their build. I'd argue they have undefined behavior anyway in this case.
Motivation
Our benchmarks for one project in the digital-asset/daml monorepo were broken for quite some time before we realized (see https://github.com/digital-asset/daml/issues/4229).

Awesome, thanks!

Thank you!


2.0.14 sha files don't match eget spec

Description of the problem or steps to reproduce
The release download sha file naming don't match the spec expected by eget

If Eget downloads an asset called xxx and there also exists an asset called xxx.sha256 or xxx.sha256sum, Eget will automatically verify that the SHA-256 checksum of the downloaded asset matches the one contained in that file, and abort installation if a mismatch occurs.

https://github.com/zyedidia/eget#usage

Is it just about the fact, that the *.sha files aren't named *.sha256?
eget only has a sha256 (--sha256 and --verify-sha256). Will it receive options for sha384 or sha512?
Yes I know, wrong person to address.
But shasum itself is capable of checking the provided hash by itself:
$ shasum -c micro-2.0.14-linux64.tar.gz.sha
micro-2.0.14-linux64.tar.gz: OK

Honestly spoken the hash can be identified by his length, thus it's more or less superfluous to invoke a specific command or expect a specific sha# file extension.
@zyedidia Now I had to realize that eget is from you. :sweat_smile:
From my perspective eget.go#L67 can be generalized by adding a further  || a == asset+".sha" or directly a more smart regex like sha([0-9]{3})? or sha(224|256|384|512)?, verify.go#L5 to use the crypto/sha512 dependency (compatible from sha224..sha512) and to rename the sha256 function/identifiers to sha in verify.go.
What do you think?
Currently I don't see any actions for micro here.

From my perspective eget.go#L67 can be generalized by adding a further

Join in here :) https://github.com/zyedidia/eget/issues/114

Is it just about the fact, that the *.sha files aren't named *.sha256?

Yes. Currently they won't be automatically used by eget.

But shasum itself is capable of checking the provided hash by itself:

That's great, but I don't think eget uses that program directly.


(materialised) views are created before the tables

(This issue has been reported in #39. More details have been reported here)
When the database has (materialised) views, setting up the database throws an error because the underlying tables do not exist.
This issue is happening for alembic_utils versions >= 0.2.16 and it gives this error message:
File ".../lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "transaction" does not exist
LINE 26:         FROM transaction
                      ^
....

(Background on this error at: http://sqlalche.me/e/13/f405)

I tested the same schema with versions <= 0.2.15 and it works fine.
More details:

Does this issue still exist in the latest version alembic_utils==0.5.3?
Yes, actually for any version >= 0.2.16 this issue exists.

Does this error when the migration is being generated, or when you attempt to apply the migrations to the database?
It happens when I run alembic to generate the migrations.

PostgreSQL version?
psql (PostgreSQL) 13.2 (Ubuntu 13.2-1.pgdg20.04+1)

Python version?
Python 3.8.8

An example to reproduce the error:
Table definition:
class Transaction(Base, Table):
    """Table definition for transaction."""

    whse_code = Column(Integer, nullable=False, primary_key=True)
    tran_date = Column(Date, nullable=False, primary_key=True)
    dist_code = Column(String, nullable=False, primary_key=True)
    requisition_code = Column(String, nullable=False, primary_key=True)

    @classmethod
    def raw_record_lookup(cls, record):
        return {
            "whse_code": record["WHSE_CODE"],
            "tran_date": record["TRAN_DATE"],
            "dist_code": record["DIST_CODE"],
            "requisition_code": record["REQUISITION_CODE"],
        }

Then, in env.py (in alembic folder), I have put:
from pathlib import Path
from alembic_utils.pg_materialized_view import PGMaterializedView

replaceable_entities = [PGMaterializedView.from_path(Path('path/to/my_mat_view.sql'))]
register_entities(replaceable_entities)

where my_mat_view.sql has the SQL definition of the materialized view:
CREATE MATERIALIZED VIEW public.transactions_recent
AS
    SELECT
        transaction.whse_code,
        transaction.tran_date,
        transaction.dist_code,
        transaction.requisition_code
    FROM transaction
    WHERE
        transaction.tran_date >= date_trunc('month'::text, now() - '2 mons'::interval)
        AND transaction.tran_date <= now()
    ORDER BY transaction.tran_date
WITH DATA;

Dupe of #41
please see open PR https://github.com/olirice/alembic_utils/pull/43
And provide any feedback you have wrt your usecase


should save username (email)

since i often need to restart Udeler i see this:
please save email between starts

or just create a Json file with name and username, and make it load from there.... problem solved....  some settings like preferred languages, resolution, username and email could be saved there...

The app now maintains a session until the users logs out. So the user doesn't need to login every time.


Scollector c_apache_mod_info error due to IIS web server listening on all IPs

ny-promoweb01 and or-promoweb01 are IIS servers that have the following errors from scollector:
'interval.go:53: bosun.org/cmd/scollector/collectors.c_apache_mod_info: fewer than 4 fields found on connection:/keep-alive line'
Looks like the apache collector is enabled via a URL which on this server happens to have a 302 redirect served by IIS.
Probably best to extend the enableURL method to use a regex to validate the results or return headers and/or allow a CheckRedirect function to say it shouldn't follow 302 redirects.

In addition I would make this a Unix collector until someone requests support for apache run on windows

This is also happening on unix systems.
Mar  5 22:48:22 ny-realog01 /opt/scollector/scollector[26207]: error: interval.go:53: bosun.org/cmd/scollector/collectors.c_apache_mod_info: fewer than 4 fields found on connection:/keep-alive line
Mar  5 23:18:22 ny-realog01 /opt/scollector/scollector[26207]: error: interval.go:53: bosun.org/cmd/scollector/collectors.c_apache_mod_info: fewer than 4 fields found on connection:/keep-alive line


Add token tests

Current coverage is 94.09% (diff: 100%)

Merging #69 into master will increase coverage by 0.75%

@@             master        #69   diff @@
==========================================
  Files            11         11
  Lines           661        661
  Methods           0          0
  Messages          0          0
  Branches         78         78
==========================================
+ Hits            617        622     +5
+ Misses           32         29     -3
+ Partials         12         10     -2

Powered by Codecov. Last update bfa0bf8...5d8d340


Bug in chainer/cupy/core/carray.cuh float16 /=

in the implemention of float16 the operator /= calculates +
 inline __device__ float16& operator/=(const T& rhs)
 {
   *this = *this + rhs;
   return *this;
 }```

Thank you for reporting the issue. We fixed the problem. Could you try that?

Thanks, I have no application, where I use float16. I have only recognized the Bug, while I was modifying the code for complex numbers.

OK, I understand it.


Does HashTable need to wrap std::map ?

so this doesn't get lost - @LRossman had a suggestion after #5 was merged  :

I suggest that we keep the HashTable class as an interface and populate it with the STL map instead of the custom hash table. [...] Making HashTable an interface provides more flexibility for future changes without having to modify the Network module code.

Any discussion on this topic?
I will put forward my own thoughts - that this is probably not needed unless there's actually a high likelihood that we will revisit the hashmap implementation. The STL provides some really great performance for this, and it's all internal to the library anyway - these maps are not now part of the public interface. So it seems like such a minor detail to spend too much time obfuscating.

Sorry, but I just think it's a better design to put the map in the HashTable class rather than directly in the Network class. The extra code added is minimal, performance shouldn't suffer, it makes for a cleaner Network::indexOf() function and makes it easier to optimize the performance of the map in the future should someone care to pursue that (e.g., by switching to an unordered_map with a custom hash function and memory allocator). I realize it's a "six of one, half dozen of another" issue, but I think we should keep our options as open as possible at this time and not hard wire a specific type of hashing routine into the Network class.

Please no apologies! We are here to discuss the relative merits of ideas so that the product is better in the long run. @LRossman I understand your reasoning and motivations. These are good things to think about.
A few more good things to think about:
Changing from map to unordered_map is a single-line change since they have almost the exact same interface, and adding a custom hash algo or allocator would just mean referencing those functions in the template declaration. No need for a wrapper class in that case.
Also, unordered_map offers conveniences not currently offered by the HashMap wrapper like iterators and operations like erase, clear, swap as well as being able to reserve space to speed up inserts. To use these container methods, we would have to wrap all of them as well and expose through the HashMap interface. So in my thinking, using a standard container in this way is actually more future-proof than wrapping since the wrapper just becomes a maintenance issue and does not materially improve the usability.
Now, I think a justifiable reason to use a custom container class would be to combine various useful accessor patterns that aren't normally offered together, as indicated earlier by @michaeltryby when he wrote about a python class that has a hybrid map/list interface. And honestly I could see a need for that. @ttaxon just opened issue #11 related to keeping track of element subtypes. This is a piece of network-domain information that is not tracked by the Network class. This also brings up an important point that right now, the Network class does keep track of a vector of elements and also a HashMap of those same elements, and each element is tasked with remembering its index in its containing vector. This level of information sharing between objects with a containment relationship is a potential maintenance problem.
Seems like we can come up with a better solution, and maybe it looks like Michael's suggestion, or maybe settling on either a vector or a map would suffice. We could conceivably get rid of the vector containers since map offers iterators. I would also suggest that there's no need for each element to track its own index, or even to try to access elements in this way (using indices). That usage pattern just indicates to me that we are not using containers to their full potential.

@samhatchett node and link indexes are needed to implement network topology functions, hydraulic matrix construction, and various pieces of the hydraulic and water quality solvers. For example, how would you modify the code below from diagnostics.cpp that checks for nodes with no connecting links if there was no "index" property associated with a Node?
    int nodeCount = nw->count(Element::NODE);
    vector<char> marked(nodeCount, 0);
    for (Link* link : nw->links)
    {
        marked[link->fromNode->index]++;
        marked[link->toNode->index]++;
    }

Ah, making more sense now. Off the cuff, if it's just the solver that needs indexes, then maybe the elements could be blind to that fact to reduce information-sharing between them.
For topology issues, BOOST has a great header-only graph library. I've used it to do some graph-theoretical analyses on networks - could make sense to offer an adapter of some sort to leverage this library since it offers several search and topological sorting algorithms. I've excerpted/modified some code from the RTX project below, which uses a temporary indexing to build an adjacency list - so to build the BGL representation and then find out if there are any disconnected nodes:
// build the graph rep
boost::adjacency_list <boost::vecS, boost::vecS, boost::undirectedS> Graph;
map<shared_pointer<Node>,int> nodeIndexMap;
for (auto node : _nodes) {
  nodeIndexMap[node] = iNode++;
}
for(auto link : _links) {
  int from = nodeIndexMap[link->from()];
  int to = nodeIndexMap[link->to()];
  boost::add_edge(from, to, Graph); // BGL add edge to graph
}
// find the number of connected components and get the membership list
vector<int> componentMap(_nodes.size());
int nGraphs = boost::connected_components(Graph, &componentMap[0]);
bool hasDisconnectedNodes = (nGraphs > 1);

Simpler is better.

@michaeltryby I'm not sure how to interpret. Simpler syntax, algorithm, or dependencies? I think using BGL is extremely simple and lets me use many graph theoretical concepts at a pretty high level. But I'm not sure you would agree?

@samhatchett Lew's solution strikes me as simpler by all the measures you suggest. The code is clear and concise. I can immediately tell exactly what it is doing. And it doesn't introduce any dependencies.
By the same token I can appreciate how your code was a good solution to the problem you were solving. Which was quite different than the one Lew is solving. Indexes are widely used for setting up matrices in the solver code.
If I had to choose, I would get rid of the map before I got rid of the vector in the Network class.

I figured that mentioning BOOST would get @michaeltryby's attention 😄
Continuing the Tangent... Please, compare the two implementations. I've tested this with a very large network and the performance hit is negligible. The below assumes that we keep the element index ivar.
First, the original code:
int nodeCount = nw->count(Element::NODE);
vector<bool> marked(nodeCount, 0);
for (Link* link : nw->links)
{
  marked[link->fromNode->index] = true;
  marked[link->toNode->index] = true;
}

int unmarkedCount = 0;
for (int i = 0; i < nodeCount; i++)
{
  try
  {
    if ( !marked[i] )
    {
      unmarkedCount++;
      if ( unmarkedCount <= 10 )
        throw NetworkError(
                           NetworkError::UNCONNECTED_NODE, nw->node(i)->name);
    }
  }
  catch (ENerror const& e)
  {
    nw->msgLog << e.msg;
  }
}
if ( unmarkedCount > 10 )
{
  nw->msgLog << "\n\n NETWORK ERROR 233: no links connected to another "
             << (unmarkedCount - 10) << " nodes ";
}
return (unmarkedCount == 0);

... and the below uses BGL. Use your imagination to add some logging.
// build an adjacency list
boost::adjacency_list <boost::vecS, boost::vecS, boost::undirectedS> Graph;
for(auto link : nw->links) {
  int from = link->fromNode->index;
  int to = link->toNode->index;
  boost::add_edge(from, to, Graph); // BGL add edge to graph
}

// find the number of connected components
vector<int> componentMap(nw->nodes.size());
int nGraphs = boost::connected_components(Graph, &componentMap[0]);

if (nGraphs > 1) {
  // do some logging here. componentMap[node_index] is the graph_index
}
return (nGraphs == 1);

Personally, I find the second to be more concise, more readable, and probably more maintainable.
I'm not going to fight anyone on this - i understand how sacred epanet's zero-dependency tradition is. And in no way am I trying to bring about "dependency hell". However, there is a balance to be struck - BOOST is widely used and respected. At a certain point we must look around and notice all the solved problems that we are not leveraging.


Fix CCE in Add Check Code action

Purpose
$subject by introducing a systematic way of accessing diagnostic properties of a given diagnostic.
Fixes #33167
Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

With this itself, we need to avoid the following as well.
Nov-16-2021.17-21-02.mp4

@nadeeshaan I have created a separate issue for this. This seems to be a general issue with the getMatchedNode() and getExpression() method. The relevant issues are #33792 #33783 #33780
Thought that the above issues are not in the scope of this PR. However, can fix them up if needed. WDYT?

If we have separate issues, let's address them with that


Add more http mirroring layer integration tests.

https://github.com/metalbear-co/mirrord/issues/472

General comment: a bit too late in this case, but opt for small PRs - no need to get Flask + Go + Node in one go. Feel free to split Issues too to reflect that.

Converted to draft since it turns out go was still unstable. Now tried this new strategy from https://stackoverflow.com/questions/39320025/how-to-stop-http-listenandserve. Not sure about this yet since I have no experience with Go.


bump version to 0.0.35.

#1257  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @rohinb2 and the rest of your teammates on  Graphite


ingress controller creation in kube-system namespace

I had some trouble having this work when creating the ingress controller in the kube-system namespace, while having my application service in another one. Creating the ingress controller in a brand new namespace, having application service in antoher namespace worked. Can this be due to some network isolation ?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: ada58160-dc50-b977-d3bc-65f92406e16d
Version Independent ID: 5c596e04-fddb-effe-3b72-575f4df42d4e
Content: Configure ingress with Azure Kubernetes Service (AKS) cluster
Content Source: articles/aks/ingress.md
Service: container-service
GitHub Login: @iainfoulds
Microsoft Alias: iainfou

Thanks for the feedback! We are currently investigating and will update you shortly.

@arkiaconsulting when you say you had trouble getting it to work, can you share some examples? Were you seeing any errors?

Actually, I'm sorry but I didn't capture the errors... The only thing that I remember is that i did get a 502 when navigating to my fqdn. And looking at the logs of the ingress controller, it was not able to find a route to a local IP.

Thanks @arkiaconsulting. No worries about the logs :)
Are you still seeing issues with this?

No, the issue has gone when I deployed the ingress controller in another namespace, such as:

ingress controller => ingress namespace
ingress => my namespace
deployment => my namespace
Maybe the documentation should advice creating the controller in another namespace than kube-system

@arkiaconsulting got it. Thanks for clarifying :)
@iainfoulds can you take a look to see if we should update this doc?

@MicahMcKittrick-MSFT I can't replicate this behavior, I've ran through this doc a couple of times this week without issue. Can you replicate this behavior when following the doc and creating the ingress controller in the kube-system namespace?

@iainfoulds I also could no repo it the other day.
@arkiaconsulting seeing as we cannot repo the issue I am assuming there was something else that was blocking you. Did you want to try an repo the issue again so we can take a look? Else we can just close this out.

@micahmckittrick-msft sure, I’ll try to reproduce

Sorry to have disturbed... I cannot reproduce. I successfully run my application with the ingress controller deployed in the kube-system namespace. The case can be closed

Thanks, @arkiaconsulting. Glad it does appear to work correctly for you.
@MicahMcKittrick-MSFT #please-close


printf doesn't support 64-bit types

In the same vein as #95, it appears that the version of printf we're using does not support printing 64-bit integers. (for example, PRx64 is defined in inttypes.h as "llx", but using "%llx" in printf just prints "lx" in the output)
I'm not sure if this is even an option in newlib-nano, but it would be handy for some things if we can enable it somehow..

I believe we have to switch from -nano back to the full newlib I/O routines for 64-bit integer support.
https://answers.launchpad.net/gcc-arm-embedded/+question/219065
We could measure the size/performance impact caused by switching from nano to the full formatting routines, but I suspect it will be a significant impact (printf has to be loaded into IRAM at the moment, and IRAM is already pretty full.)
For formatting uint64_t as hex, as I'm sure you know, the quick fix is to printf %x%x and split a 64-bit integer into two 32-bit integer params.
My suggestion is we don't change libc but note this somewhere, maybe on the wiki here:
https://github.com/SuperHouse/esp-open-rtos/wiki/libc-configuration
What do you want to do?

Ah, I was afraid it would be something like that, but hadn't had a chance to really dig into it in detail..
For hex, that's a viable (if annoying) workaround (and is what I've been doing), but it doesn't work nearly as well for decimal (particularly signed numbers), etc..  Still, until we have somebody with an actual use case for that, I guess it's not worth expending a lot of effort to try to fix what is currently only a theoretical issue..  I just figured I should bring it up in case it was as easy as the float-fix was..
It might be good for us to start maintaining a wiki page on "quirks and limitations" of our platform for things like this (and time/timezone handling, and I'm sure there's a couple of other things we've talked about which would fall in this category)..  it might be good to have something to point prospective app developers at that says, basically, "these are some things you shouldn't be surprised about when you stumble across them"..

Me 2 found same problem
solved with:
#define PRI_UINT64_C_Val(value) ((unsigned long) (value>>32)), ((unsigned long)value)
#define PRI_UINT64 "%lx%lx"
printf("My Text" PRI_UINT64 "MyText - Text", PRI_UINT64_C_Val (tmp.Address));


elementsToString and asCharSequence for CharLists

It may be useful to have elementsToString (returns a new String with the elements of the CharCollection as its characters) and asCharSequence (presents a view of the CharList as a CharSequence, no copying) in CharList. Perhaps elementsToString would make sense in CharCollection too as there are some ordered non-list collections where it might make sense (SortedSet, LinkedHashSet, etc). CharSequence is an inherently indexed based api (well, so is String, but that one will be a copy, not a view), so it only makes sense on CharLists
I'm not sure if elementsToString is really a good name. contentsToString and stringValue also come to mind.
I do like asCharSequence though.
The motivation for this is to:

Let certain subclasses provide a faster way to dumping into a String (like if they are already backed by an array, we can just pass that array to String.copyValueOf instead of a loop copying into another array that is copied again by String's constructors).
Provide a CharSequence view for interfacing with String based APIs without introducing an extra intermediary copy. Also gives an easy way to provide conversions to codepoints (CharSequence comes with default method APIs for that)

I've got a PR in progress but I would like to source some feedback before I go too much further with it.

I've got a PR in progress but I would like to source some feedback before I go too much further with it.

The conversion to string sounds more like a helper method for CharCollections. For the view, I'd use charSequenceView(), which makes clear that no copying is performed.

The conversion to string sounds more like a helper method for CharCollections. For the view, I'd use charSequenceView(), which makes clear that no copying is performed.

The conversion to string sounds more like a helper method for CharCollections.
Yes, but then things like CharArrayList won't be able to avoid an extra copy converting to a String. We have to copy once into an accumulating array, and then once again done by String construction. By letting array based subclasses to provide their own implementation, one copy step can be removed. We can pass the array straight to String (with offset and length) which will make its own copy, but now we are down to one copy instead of two.

I could special case ArrayList and ArraySet in the static method, but that seems dirty. :tongue:

For the view, I'd use charSequenceView(), which makes clear that no copying is performed.

Yeah, that sounds good

The conversion to string sounds more like a helper method for CharCollections.
Yes, but then things like CharArrayList won't be able to avoid an extra copy converting to a String. We have to copy once into an accumulating array, and then once again done by String construction. By letting array based subclasses to provide their own implementation, one copy step can be removed. We can pass the array straight to String (with offset and length) which will make its own copy, but now we are down to one copy instead of two.

I could special case ArrayList and ArraySet in the static method, but that seems dirty. :tongue:

For the view, I'd use charSequenceView(), which makes clear that no copying is performed.

Yeah, that sounds good

Good point, if you can do much better than a method might be a good idea. Maybe you can default it in CharCollection and then have improved overrides.
Presently I'm more focused on reviewing the code and #162 , as I want either to complete it (with functions) or at least be sure we won't get into trouble in the future when we complete it (e.g., method calls becoming ambiguous).

Good point, if you can do much better than a method might be a good idea. Maybe you can default it in CharCollection and then have improved overrides.
Presently I'm more focused on reviewing the code and #162 , as I want either to complete it (with functions) or at least be sure we won't get into trouble in the future when we complete it (e.g., method calls becoming ambiguous).

Thoughts on the name of the method? elementsToString, contentsToString, or stringValue?
And yeah, I wouldn't mind if this even gets pushed to 8.6.0, not a high priority feature by any means.

Thoughts on the name of the method? elementsToString, contentsToString, or stringValue?
And yeah, I wouldn't mind if this even gets pushed to 8.6.0, not a high priority feature by any means.

How does asString() sound?

How does asString() sound?

asString sounds good. Easy enough to remember what the difference is between that and toString once you learn about it. We would need some good documentation on the interface's asString and toString methods what the difference is (the former is the contents of the list into a string, the latter is a representation of the state of the list, usually the contents represented as a list type format like [a, b, c, ...])

Just a heads up, I have a branch halfway done implementing this, but IRL work got busy before I could clean it up for submission

Ok, I have the type I want to expose for unmodifiable view (basically a plain char sequence but also supporting many of the non-mutation methods StringBuilder provides, like getChars)
The issue now comes from how many mutation based methods I want to provide, like java.lang.Appendable.
I may limit my scope to an unmodifiable view first, and then add in optional mutable views in later PRs


equipment-instance does not make sense for ExpectedEquipment

Problem:
expected-equipment::manufactured-thing::equipment-instance contains serial-number and manufacture-date.
(asset-instance-identifier is anyway a wrong duplicate to operator-augmented-equipment-instance::asset-instance-identifier.)
There seems to be no sense in expressing an expectation about the serial-number or the manufacture-date of a hardware component to be plugged in future.
Potential solutions:
Considering that the ONF CoreIM defines a re-use of the same grouping in Equipment, ExpectedEquipment and ActualEquipment,
the TransmitterEquipment Specification shall

either request for not representing the EquipmentInstance class in the ExpectedEquipment
or define and prescribe default values to be used in the EquipmentInstance class in the ExpectedEquipment.

Potential Proposal:
As the ONF CoreIM defines a re-use of the same grouping in Equipment, ExpectedEquipment and ActualEquipment, the expected-equipment::manufactured-thing::equipment-instance container exists and cannot be removed.
Prescribing a default value to be permanently represented at an attribute means to deactivate the attribute.
In this case an attribute of the CoreIM that is outside the scope of TR-532 (e.g. not listed in the TransmitterEquipment Spec.) would get blocked from being used for any other purpose.
It is not intended by the x-haul group to block using the CoreIM, but to harmonize.
Issue shall just be closed without any further activity.


Add -remote_host_override for connecting to proxied instances

We have a CloudSQL DB with only a Private IP and a requirement to connect through the proxy only (for audit). When DBAs connect to this DB from their workstation (outside of the VPC), they must port-forward 3307 to their local machine over SSH as the private IP is not directly accessible. This flag allows them to tell the cloud_sql_proxy what host:port the CloudSQL server is on.

I suspect it should go from:
./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst=tcp:3306 &

to something like:
./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst=tcp:<IP_ADDRESS>:3306 &

or maybe just
./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst=tcp:3306 -host <IP_ADDRESS> &

As @kurtisvg implies, port should only be set via the -instances flag.

@broady This is setting the port that's being used to connect to the Cloud SQL instance, rather than the port that the proxy is used to listen (which is the one the -instances flag currently sets)

@kurtisvg I had the same concern myself actually, and two potential thoughts for the multiple instance problem:

Assuming they're on the same VPC I could add a flag to use golang.org/x/net/proxy.SOCKS5.
eg. -remote_host_proxy=localhost:5000

Support a map of some type either as an optional extension to the -instances flag:
eg. -instances=my-project:us-central1:sql-inst=tcp:3306;src-tcp:localhost:3307,my-other-project:us-central1:sql-inst=tcp:3308;src-tcp:localhost:3309
or via another flag:
-remote_host_override=my-project:us-central1:sql-inst=tcp:localhost:3307,my-other-project:us-central1:sql-inst=tcp:localhost:3309

But was conscious that these would both involve a much larger change to the tool to support a need that we don't have, and I wasn't sure anyone else did.
If you think this multiple instance support from a single running proxy instance is essential, I'm happy to add this to the PR.

Would it make sense to support the ALL_PROXY environment variable so you can use a SOCKS proxy?
https://godoc.org/golang.org/x/net/proxy#FromEnvironment
Presumably you also want the calls to sqladmin API to go via your proxy?

Presumably you also want the calls to sqladmin API to go via your proxy?

I'm not sure this would be a good idea, unless I'm missing something: afaik the sqladmin API is indifferent to the IP address you're coming from, so pushing the sqladmin API calls through the proxy would just add overhead. I don't see the positive side.

Closing as stale.


Honor quit-on-exceptions in all cases

When running the tool against an account missing backup:ListProtectedResources privileges, I noticed the program crashes instead of continuing as expected with the default of quit_on_exceptions set to false.
Turned out, the setting is only honored by some collectors. I added it as a catch-all to the central collect. Now it will continue on exceptions (default) or fail on errors (--quit-on-exceptions switch).

@tecracer-theinen thanks for the addition!


Change to avoid error when service account has empty secret name

Changes
Avoid pod-generation error when a service account has following empty named secret field
secrets:
- {}

/kind bug
Submitter Checklist
These are the criteria that every PR should meet, please check them off as you
review them:

[x] Includes tests (if functionality changed/added)
[ ] Includes docs (if user facing)
[x] Commit messages follow commit message best practices
[ ] Release notes block has been filled in or deleted (only if no user facing changes)

See the contribution guide for more details.
Double check this list of stuff that's easy to miss:

If you are adding a new binary/image to the cmd dir, please update
the release Task to build and release this image.

Reviewer Notes
If API changes are included, additive changes must be approved by at least two OWNERS and backwards incompatible changes must be approved by more than 50% of the OWNERS, and they must first be added in a backwards compatible way.
Release Notes

/ok-to-test

/test pull-tekton-pipeline-build-tests

/remove-kind

/remove-kind bug

/kind bug

/lgtm
thank you @cqbqdd11519 for your contribution 🙏
I have added release note as this PR is fixing an existing bug. @sbwsg please feel free to update the release note if needed.


ChangeModesOperation needs to send a notification that updates player fight/chase modes.

Problem:
Currently, when a ChangeModesOperation is executed, the player who's fight and chase modes changed is not made aware of the changes, essentially desynchronizing the modes seen in the client.
Solution:

Create a new outgoing packet for OutgoingGamePacketType.PlayerModes under the namespace/folder Fibula.Communications.Packets.Outgoing:/// <summary>
/// Updates a player's modes.
/// </summary>
PlayerModes = 0xA7,

Create a new packet writer under the namespace/folder Fibula.Protocol.V772.PacketWriters for that new packet.
Hook up the new packet writer in Fibula.Protocol.V772.CompositionRootExtensions class.
Finally, in ChangeModesOperation.Execute, add a new notification that sends the new packet to the player, to update their modes.

Intentionally left up for grabs for any brave soul who wants to contribute to wet their feet.


add auto tab completion

Added auto tab completion class. Only Parkour commands that the player has permission to run are displayed.
Tab completion was tested on 1.8 -1.13.1. It works without any problems on older versions, but is not as fancy as on 1.13.1.
Changed permission required to run /pa setautostart from Parkour.Admin.Prize to Parkour.Admin.Course as this seems more logical.

Yes I agree, it needs to be optional as not everybody likes tab completion. It can be disabled in spigot.yml but that would be server-wide. I can add that later today unless you want to do it.
I'm also not sure if it has to be quite so precise with the permissions. Everybody can see all the commands available with /pa cmds, so hiding them in tab completion may not be necessary. On the plus side, it makes the on-screen selection list more compact for normal players, but the downside is the coding is not as simple as it could be.

I think it's good the way it is, it will be a pain if we add more commands but we will just try and keep track of it. Yeah I will add the option now, I've done a necessary bit of refactoring for everything "command" related, and the console commands were a mess.
I'm wondering if we should filter the list of courses available too, such as they may not have the necessary level to join, or the course may not be finished... but I'm unsure of the affect this would have on performance.


[QUESTION] InvalidateSurface() invokes OnPaint event on dedicated android and iOS emulator but not on dedicated iOS

As discussed in slack previously i have the following problem/question to SKCanvasView:
When i call InvalidateSurface in my custom control CoordAxesControl the 'OnPaintSurface' event is never invoked on a dedicated iOs device. On a dedicated android device and an ios emulator everything works fine.
Is anything missing? I've added the project repo link due to the fact that the project is minimal because it concentrates on the ui.
Setup:
Device: iPhone 8 (iOS 13.3.1)
Mac: MacBook Pro (macOS Catalina 10.15.3)
Xamarin Version:
Xamarin.IOS v4.0.30319
Xamarin.Forms v<IP_ADDRESS>6
SkiaSharp:
SkiaSharp.Views.Forms (<IP_ADDRESS>)
Github repo: https://github.com/Christoph293/infoGraph/tree/master/InfoGraph/InfoGraph

Hello,
I had the same problem after upgrading my iPad to 13.3.1, when using a Free provisioning for Xamarin.iOS apps after changing to Adhoc-Provisioning it worked normally.
Hoop this helps.

This is a duplicate of https://github.com/mono/SkiaSharp/issues/1129


Require arrays to be equal…, & xfail equality of instances of stochastic classes

not just either both all truthy or both not.
Fixes issue #202.
All the tests apart from the stochastic ones I've xfailed still pass - they were not testing much useful other than the correct
selection of MapClassifier sub classes by the factory function and assignemnt of args, but still:
Well done guys!  This set of tests is much stricter, and they're all still passed.  Arrays of random numbers should not be tested using equality, so I've just xfailed those tests until someone has a better suggestion.

not just either both all truthy or both not.
Fixes issue #202.
All the tests apart from the stochastic ones I've xfailed still pass - they were not testing much useful other than the correct selection of MapClassifier sub classes by the factory function and assignemnt of args, but still:
Well done guys! This set of tests is much stricter, and they're all still passed. Arrays of random numbers should not be tested using equality, so I've just xfailed those tests until someone has a better suggestion.

Shouldn't a set seed create the same sequence for the testing?

Sorry this was from 5 months ago, so let me summarise the PR.  There are two main changes (that perhaps I should've split up):
i) replacing assert a.yb.all() == b.yb.all() etc. with assert (a.yb == b.yb).all() or similar,
and ii) xfailing the stochastic tests.
Presumably your comment below is in relation to ii)

Shouldn't a set seed create the same sequence for the testing?

"Should".  The whole reason I xfailed the tests in the first place, was because I couldn't reproduce the passes.
The same set seed will produce the same sequences, only if the stochasticity in the test data and algorithms being tested are pseudo-random, and only if everything else the pseudo-randomness sources use, are exactly the same in the environment used to produce the expected result, and in the test environment the tests are being run in since then.
The resulting tests will be brittle, flakey, and irreproducible in different test environments.


Remove groups & pull from Airtable

Hi :) This is no small change, & a few things in the code I don’t totally understand. Can you give a thorough breakdown of your changes compared to #2?

It is a big change! What I did:

Updated the hackathons.hackclub.com Airtable base to work with the JSON structure already in use in the app
Removed groups entirely from the fetch & render process. We don't have that in Airtable and don't plan to add it
Made it fetch records from the Airtable base using api2 (incl. pulling banner + logo directly from Airtable, etc..)

Ok cool. Besides finishing removing groups, what of this isn’t covered by #2? Unless I’m missing something that work is already done?

Thanks for your work here—I've updated #2 with the new schema. I'm going to go ahead & close this since the other PR has lots of other changes as well. Please comment if we're missing anything! <3

Fyi I think it's courteous to not close another dev's or without first asking / getting agreement. Closing a marks end of conversation, which is not true on this topic.
I'm fine with continuing the conversation in #2 if everything in this PR is indeed covered there. But I haven't had time to check thoroughly. @tmb can you take point on seeing that that's the case?


vSphere integration does not set VM IP

Rancher versions:
rancher/rancher:v2.0.2
Docker version: 17.03.2-ce
Operating system and kernel: 4.4.74-boot2docker
Type/provider of hosts: vSphere
Setup details: single node
Environment Template: Kubernetes
Steps to Reproduce:

Normal vSphere deployment up to adding node
Create template for node and set Configuration Parameters used for guestinfo as so
guestinfo.ipAddress => <IP_ADDRESS>
Select all in one node

Results:
The VM is deployed as expected however the additional guestinfo configuration does not run. The gui says that it is reconfiguring the VM in both Rancher and vSphere. However after the VM is up the ipaddress is never set on any interface.

I've seen this work using:
guestinfo.interface.0.ip.0.address
guestinfo.interface.0.name
guestinfo.interface.0.route.0.gateway

Can you try this?

I just tried that and still got the same results. I did notice thought that the IPv6 address shows up for the eth0 adapter.
Here are the settings im using
guestinfo.interface.0.ip.0.address => <IP_ADDRESS>
guestinfo.interface.0.name => eth0
guestinfo.interface.0.route.0.gateway => <IP_ADDRESS>

Close in favor of https://github.com/rancher/rancher/issues/15817


Clear Client ID

Hey team,
I accidently entered wrong client id , and I've tried removing plexdrive and even manually removing the files from .qpkg (this is the qnap variet) but it still just gives me the google link for verification and wont let me reenter the client id etc. any idea how to clear?

You can remove the $HOME/.plexdrive folder and restart configuration.

thank you


Examples: remove mydir for ./

I keep running the examples and forgetting to change ./mydir to ./ and the code breaks because ./mydir does not exist.  We need to fix this ASAP.  It's a pain to run the code only to faile because the dir does not exist.
Do we,

Change mydir to ./ in the examples.
Add directory creation if directory does not exist.
Both of the above.

I reckon 3. - thoughts from the team ...

3! Directory creation is always safest imo

Sure, we can do that.
The notebooks in docs where never meant to be run though. Since they are
the ones that are show on readthedocs. They're meant to be read-only, so
that they don't disappear if there's a typo in the ipynb.
The ones you can play around with are in the Examples directory.
On Fri, 26 Jul 2019, 10:00 Oliver Hall<EMAIL_ADDRESS>wrote:

3! Directory creation is always safest imo
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/grd349/PBjam/issues/148?email_source=notifications&email_token=AEJWO374UHTWCPSAGYJ5BGDQBL7N7A5CNFSM4IG7UD7KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD24V44Q#issuecomment-515464818,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEJWO37KPG6MBVOV24NDVJDQBL7N7ANCNFSM4IG7UD7A
.

Good point - I didn't think about that.
We need to add text to the Examples :(
We should also do this fix anyway.  Perhaps people will follow the example by typing the instructions them selves.  It would still be annoying for it to fail.

I think if the user is typing out those examples they should know that they don't have a directory called mydir. It's like the stackoverflow examples, dir=/dir/where/code/is etc. it's pretty obvious that line needs to be changed.


Improve error reporting for missing fields passed to bootstrap_field

If I accidentally remove a field from a form, but still try to render it using {% bootstrap_field, I get an error message which doesn't really help me to track down my error:
bootstrap3.exceptions.BootstrapError: Parameter "field" should contain a valid Django BoundField.
It would be nice if the error message could be more informative.

Here's a temporary solution that makes the exception message helpful:
https://stackoverflow.com/a/74841736/700444

No further changes are expected on this project. See README.md (https://github.com/zostera/django-bootstrap3/pull/964 ).


Could use implicit F: Defer: Applicative instead of F: Sync here?

The use of Sync here propagates out to any code that wants to use the logger. If instead, it used F: Defer: Applicative and all the instances of F.delay(x) were changed to F.defer(x.pure[F]) then this would relax the requirements and only reference type classes from cats-core instead of cats-effect.
This is quite a big change, however, as the typeclass constraints will propagate out through all the other layers of log4cats.
https://github.com/ChristopherDavenport/log4cats/blob/e84f1bd6e0990a1cb7b8006ba869ed068a354303/slf4j/src/main/scala/io/chrisdavenport/log4cats/slf4j/internal/Slf4jLoggerInternal.scala#L44

I think the distinction is that Defer is an operational concern only - that you should be able to replace any instance of defer with pure without changing the return value semantics (only changing when a computation is executed)