php.extensions.uuid: init at v1.2.1

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

@ofborg build php.extensions.uuid

Do you think it would be possible to fix the Darwin build? See the error log at https://github.com/NixOS/nixpkgs/pull/360352/checks?check_run_id=33731158722

I will look into it :+1:

After looking into it, it seems the libuuid package is null on darwin because of this line https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/all-packages.nix#L12372
libuuid = if stdenv.hostPlatform.isLinux
    then util-linuxMinimal
    else null;

Though on search.nixos.org the libuuid package is indeed available on aarch64-darwin and x86_64-darwin https://search.nixos.org/packages?channel=24.11&type=packages&query=libuuid 🤔 honestly I'm not sure what to do. I've tried looking into the libossp_uuid library instead but the php extension isn't compatible with it

In that case, can you please adjust php.extensions.uuid's meta.platforms accordingly?


Optimal configuration for VLP16

I have spent considerable amount of time on tuning the configuration parameters to get a good registration and loop closure performance without any luck.  I was able to get a reasonable result in one set but when I tried to use the same config for another, it didn't work well. Having too many parameters makes it hard to see the individual effects of each of parameter.
I have a similar hardware configuration (VLP16) with the one mentioned in this post. Changes and comments in this (https://github.com/SirVer/cartographer_ros/commit/72c45195d55b0a4176afef5c7db1d44c0693527f) commit helped a lot to understand the effects but I couldn't achieve loop closure in this particular bag file. Here is my current configuration. Reverted them back to original because previous set of tuned parameters messed up in this bag file.
This is what I currently get:

Obviously, the overlap is small and we can only get the loop closure at the very end. I am also wondering which parameters would possibly reduce the drift in the trajectory. Otherwise we would need to set a large search_window to get loop closure.
Explanations for the config parameters here and here were helpful but I wish they would be complete.

I have collected another dataset which, I believe, is more closer to what cartographer ideally expects. However, couldn't achieve loop closure yet. New bag file contains two loops and each lidar message contains only one velodyne UDP package. So, message frame rate increased to ~750 hz from 10 hz. Configuration file is still same, except that scans_per_accumulation parameter is changed from 1 to 75.

@ozgudum Sorry for the late reply. I am quite back logged on issues these days.
I only looked at sensor.bag (the one with the tiny point clouds). My changes are the last few commits in here.
My final result is this:

Some assorted notes:

The local SLAM tracks nicely, loop closure has issues.
The local SLAM has a z-drift issue - after one loop without loop closure, the local slam thinks you are 20 meters below where you started. This makes me believe that either your URDF is not quite correct (angle between IMU and laser) or that your IMU has a bias. I cranked up the loop closure search window in z-direction to deal with this drift.
Your loops are big (100's of meters driven), so your loop closure search space must be adapted to deal with larger drift accordingly. I cranked up the xy search window for this.
These changes would have probably been enough to fix the issue, but it did not work at first. So I tweaked other parameters. Later I realized that I did not change MAP_BUILDER.sparse_pose_graph.constraint_builder.max_constraint_distance, so even though the sparse pose graph was looking for matches in a large area, it never actually added them to the optimization problem :/. @wohe Do we require this parameter for something still? It seems the search window is sufficient to handle this.

My parameters give good results, but loop closure is not real-time with these aggressive settings. This is not surprising: I arbitrarily picked really big values for the search space for loop closure. I did not spend time making the parameters faster again - I think you can tune them now to your needs.

hi @zerox3802567, unfortunately it is been quite a long time since last time I worked on Cartographer and I don't have an idea about the error. Maybe @SirVer may have some idea about the error.

posting screenshots of text is not a great way of sharing error messages. Please copy & past and put them into a gist.
@zerox3802567 Your problem is that your configuration is not up to modern requirements of cartographer. It says in the first few lines: Key 'use_odometry_data not in dictionary`. Compare your lua files and make sure they contain the keys that are there at master.

这是我运行检查数据的语句cartographer_rosbag_validate -bag_filename /media/autodrive/LidarDisk/testdata/data/loop.bag
这是我运行检查数据的结果
W0322 10:09:00.999109 15504 rosbag_validate_main.cc:352] frame_id "velodyne_link" on topic /velodyne has serialization time<PHONE_NUMBER>.516749911 but sensor time<PHONE_NUMBER>.387913000 differing by -0.128837 s.
E0322 10:09:01.002915 15504 rosbag_validate_main.cc:350] frame_id "imu_link" on topic /imu has serialization time<PHONE_NUMBER>.945365562 but sensor time<PHONE_NUMBER>.000000000 differing by -0.945366 s.
E0322 10:09:01.003001 15504 rosbag_validate_main.cc:350] frame_id "imu_link" on topic /imu has serialization time<PHONE_NUMBER>.945365562 but sensor time<PHONE_NUMBER>.004999876 differing by -0.940366 s.
E0322 10:09:01.003028 15504 rosbag_validate_main.cc:350] frame_id "imu_link" on topic /imu has serialization time<PHONE_NUMBER>.945365562 but sensor time<PHONE_NUMBER>.009999990 differing by -0.935366 s.
E0322 10:09:01.005043 15504 rosbag_validate_main.cc:160] Sensor with frame_id "velodyne_link" is not sequential in time.Previous range message ends at time<PHONE_NUMBER>28855770, current one at time<PHONE_NUMBER>50514460
E0322 10:09:01.005100 15504 rosbag_validate_main.cc:315] Sensor with frame_id "velodyne_link" jumps backwards in time. Make sure that the bag contains the data for each frame_id sorted by header.stamp, i.e. the order in which they were acquired from the sensor.
W0322 10:09:04.093914 15504 rosbag_validate_main.cc:203] Sensor with frame_id "velodyne_link" range measurements have longest overlap of 927.834 s
I0322 10:09:04.095104 15504 rosbag_validate_main.cc:398] Time delta histogram for consecutive messages on topic "/imu" (frame_id: "imu_link"):
Count: 88364  Min: 0.005000  Max: 0.015000  Mean: 0.005003
[0.005000, 0.006000)	####################	Count: 88361 (99.996605%)	Total: 88361 (99.996605%)
[0.006000, 0.007000)	                    	Count: 0 (0.000000%)	Total: 88361 (99.996605%)
[0.007000, 0.008000)	                    	Count: 0 (0.000000%)	Total: 88361 (99.996605%)
[0.008000, 0.009000)	                    	Count: 0 (0.000000%)	Total: 88361 (99.996605%)
[0.009000, 0.010000)	                    	Count: 0 (0.000000%)	Total: 88361 (99.996605%)
[0.010000, 0.011000)	                    	Count: 2 (0.002263%)	Total: 88363 (99.998871%)
[0.011000, 0.012000)	                    	Count: 0 (0.000000%)	Total: 88363 (99.998871%)
[0.012000, 0.013000)	                    	Count: 0 (0.000000%)	Total: 88363 (99.998871%)
[0.013000, 0.014000)	                    	Count: 0 (0.000000%)	Total: 88363 (99.998871%)
[0.014000, 0.015000]	                    	Count: 1 (0.001132%)	Total: 88364 (100.000000%)
E0322 10:09:04.095139 15504 rosbag_validate_main.cc:382] Point data (frame_id: "velodyne_link") has a large gap, largest is 927.1 s, recommended is [0.0005, 0.05] s with no jitter.
I0322 10:09:04.095232 15504 rosbag_validate_main.cc:398] Time delta histogram for consecutive messages on topic "/velodyne" (frame_id: "velodyne_link"):
Count: 4443  Min: -927.834106  Max: 927.099548  Mean: 0.099322
[-927.834106, -742.340698)	                    	Count: 1 (0.022507%)	Total: 1 (0.022507%)
[-742.340698, -556.847351)	                    	Count: 0 (0.000000%)	Total: 1 (0.022507%)
[-556.847351, -371.354034)	                    	Count: 0 (0.000000%)	Total: 1 (0.022507%)
[-371.354034, -185.860687)	                    	Count: 0 (0.000000%)	Total: 1 (0.022507%)
[-185.860687, -0.367310)	                    	Count: 0 (0.000000%)	Total: 1 (0.022507%)
[-0.367310, 185.126068)	####################	Count: 4441 (99.954987%)	Total: 4442 (99.977493%)
[185.126068, 370.619415)	                    	Count: 0 (0.000000%)	Total: 4442 (99.977493%)
[370.619415, 556.112793)	                    	Count: 0 (0.000000%)	Total: 4442 (99.977493%)
[556.112793, 741.606140)	                    	Count: 0 (0.000000%)	Total: 4442 (99.977493%)
[741.606140, 927.099548]	                    	Count: 1 (0.022507%)	Total: 4443 (100.000000%)
这是我运行程序的语句roslaunch cartographer_ros demo_vlp16-imu.launch bag_filename:=/media/autodrive/LidarDisk/testdata/data/loop.bag
这是我运行程序的结果
... logging to /home/autodrive/.ros/log/e7601f96-4c48-11e9-b5f1-9c5c8e75471b/roslaunch-navinfo-drive-17246.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://navinfo-drive:36831/
SUMMARY
PARAMETERS

/robot_description: <...>
/rosdistro: kinetic
/rosversion: 1.12.14
/use_sim_time: True

NODES
/
cartographer_node (cartographer_ros/cartographer_node)
playbag (rosbag/play)
robot_state_publisher (robot_state_publisher/robot_state_publisher)
rviz (rviz/rviz)
auto-starting new master
process[master]: started with pid [17256]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to e7601f96-4c48-11e9-b5f1-9c5c8e75471b
process[rosout-1]: started with pid [17270]
started core service [/rosout]
process[robot_state_publisher-2]: started with pid [17276]
process[cartographer_node-3]: started with pid [17289]
process[rviz-4]: started with pid [17296]
process[playbag-5]: started with pid [17308]
[ INFO] [1553221162.064140484]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer16/install_isolated/share/cartographer_ros/configuration_files/vlp16-imu.lua' for 'vlp16-imu.lua'.
[ INFO] [1553221162.064433298]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer/install_isolated/share/cartographer/configuration_files/map_builder.lua' for 'map_builder.lua'.
[ INFO] [1553221162.064482927]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer/install_isolated/share/cartographer/configuration_files/map_builder.lua' for 'map_builder.lua'.
[ INFO] [1553221162.064559138]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer/install_isolated/share/cartographer/configuration_files/pose_graph.lua' for 'pose_graph.lua'.
[ INFO] [1553221162.064603825]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer/install_isolated/share/cartographer/configuration_files/pose_graph.lua' for 'pose_graph.lua'.
[ INFO] [1553221162.064724999]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer/install_isolated/share/cartographer/configuration_files/trajectory_builder.lua' for 'trajectory_builder.lua'.
[ INFO] [1553221162.064761309]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer/install_isolated/share/cartographer/configuration_files/trajectory_builder.lua' for 'trajectory_builder.lua'.
[ INFO] [1553221162.064818156]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer/install_isolated/share/cartographer/configuration_files/trajectory_builder_2d.lua' for 'trajectory_builder_2d.lua'.
[ INFO] [1553221162.064851914]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer/install_isolated/share/cartographer/configuration_files/trajectory_builder_2d.lua' for 'trajectory_builder_2d.lua'.
[ INFO] [1553221162.064945879]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer/install_isolated/share/cartographer/configuration_files/trajectory_builder_3d.lua' for 'trajectory_builder_3d.lua'.
[ INFO] [1553221162.064980683]: I0322 10:19:22.000000 17289 configuration_file_resolver.cc:41] Found '/home/autodrive/catkin_cartographer/install_isolated/share/cartographer/configuration_files/trajectory_builder_3d.lua' for 'trajectory_builder_3d.lua'.
[ INFO] [1553221162.071368082]: I0322 10:19:22.000000 17289 submap_3d.cc:321] Added submap 1
[ INFO] [1553221162.071446904]: I0322 10:19:22.000000 17289 map_builder_bridge.cc:130] Added trajectory with ID '0'.
[ INFO] [1553221162.615031407,<PHONE_NUMBER>.951122758]: I0322 10:19:22.000000 17289 ordered_multi_queue.cc:172] All sensor data for trajectory 0 is available starting at '635991116623879130'.
请问您是怎么运行成功的？


AlphaRouter Provider mismatching with etherjs v6

Hi,
In v6 of ether.js they have renamed Web3Provider with BrowserProvider

when I'm trying to use BrowserProvider provider with AlphaRouter like this
const provider = new ethers.BrowserProvider(config);
const router = new AlphaRouter({
chainId,
provider,
});
its giving error
TS2740: Type  BrowserProvider  is missing the following properties from type  BaseProvider :  _networkPromise, _events, formatter, _emitted , and  36  more.
alpha-router.d.ts(27, 5): The expected type comes from property  provider  which is declared here on type  AlphaRouterParams
because Provider in the AlphaRouter is of type BaseProvider which comes from '@ethersproject/providers'

Hi @alinasir85
The smart-order-router sdk expects you to use ethers v5.

Hi @alinasir85 The smart-order-router sdk expects you to use ethers v5.

You kidding? There's no even a workaroud?

You should open this issue in the smart-order-router sdk if this affects you @sbeben . The v3-sdk is a different package.
Maybe there is a workaround that I am not aware of.


mastodon bug fix & refactor twitter-api

Sorry for bringing up a second PR.
But while diving into twitter-api I found unfortunately one more bug in my mastodon refactoring.
State of PR:

reading from twitter works
publishing to mastodon works

👍


sst: Removes the wtf console log when devving

Solves Issue-3358

damn! this is revolutionary. 😂🤣

Puh. At last some one solved this. Thanks @Paliago 🙇

well this one is embarassing


create_if_not_exists 参数感觉可以删除掉，目前代码中并没有相关的判断，目录总是创建的。

是的，和 read_only 是重复的，可以考虑删掉 create_if_not_exists。

Please use english since this is a global community. Thanks.

create_if_not_exists doesn't need to be read only. Users can always use write mode and do assertion on existence.


Enable tolerance for ExtrapolationError checks

Is your feature request related to a problem? Please describe.
When dealing with pre-computed interpolations but with a different time parameterization, mapping from one parameterization to another can cause precision errors, leading to an extrapolation error if extrapolate=false.
using DataInterpolations

t1 = range(0.000000000000001, 10, length=10)
u = rand(10)

itp = LinearInterpolation(u, t1)

f(t) = t * 2 + 1
f⁻¹(t) = (t - 1) / 2

t2 = f⁻¹.(f.(t1))

itp(t2[1]) # ExtrapolationError
# note that itp(t2) doesn't check properly for extrapolation

Describe the solution you’d like
I think the best solution is to allow some tolerance when checking for extrapolation error (e.g. something like t < itp.t[1] - eps(t) instead of t < itp.t[1] for the lower bound)
Additionally, the tolerance could be parameterized, allowing users to specify a custom tolerance level if the default isn't ideal for their use case. But in this case maybe extrapolate=true could be sufficient.
If you think this feature is within the scope of this package, I can create a draft PR and discuss the details.

To me, extrapolate=true is sufficient and the cost of maintaining some odd boundary behavior likely is not worth it. @sathvikbhagavan can have an opinion

Yes, I don't think it is useful supporting this in this package. extrapolate=true should be sufficient.

Closing as not planned, but thank you for the input @mleseach as it is an interesting suggestion but we don't think it's the right idea at this time. As mentioned in the OP, we currently think extrapolate=true should be sufficient for most users, but if this is a frequently asked for change we'd be willing to reconsider it.


Inference part 1/n (statistic saving)

saving quantized statistics and weights for inference
loading model from quantized statistics  and weights

Quantized weight and statistics are saved in int8 as a temporary measure(because of torch).

instead of --save_quantization      --save_quantization_pt "f7_4bit_quantization/" ,
can we make one argument for  saving: --save_quantization "f7_4bit_quantization/"  ?
Why do we need two?

Need to update README.md to give our users an example of saving/loading commands.
I also suggest to create an example .py file that just loads quantized model - for use in out users' ptojects.


Add new option to "jira" action

Checklist

[x] I've run bundle exec rspec from the root directory to see all new and existing tests pass
[x] I've followed the fastlane code style and run bundle exec rubocop -a to ensure the code style is valid
[x] I've read the Contribution Guidelines
[x] I've updated the documentation if necessary.

Motivation and Context
After integrating fastlane into my project, I will need to use action fastlane jira to comment ticket at JIRA. But I have self-hosted JIRA server and that is a problem for me to use action with current options.
It resolves a problem for self-hosted JIRA servers via adding "/jira" into context_path.

Description

Added self_hosted_server option to action. Option is optional, default - false
It appends "/jira" to context_path variable for self-hosted jira servers and corrects using in 'jira-ruby' gem.
Updated example with the new option.

@joshdholtz Initially, I did, but then I thought that I did not see other possible context_path. Maybe it's because of my little experience.🤔
I will update the PR with this idea. 🚀

@Ikloo Thank you! I'm not sure if there will be another context path but that kinda seems like what that context_path variable was meant for but it was just never finished 🙃

@joshdholtz
I agree with you.
Updated PR 👌

@joshdholtz check it, please. All okay!

@joshdholtz Great! Thanks!

Awesome 🎊  🎉 🚀


"Hide minimap" has inverted functionality

The minimap currently disappears if you show chat; it doesn't disappear when chat is hidden

this is intended but i should also put an option for what you're saying... also an option for just keeping minimap hidden because now my plugin affects the one plugin that does that... down the line ill try adding these


Input/output error on fuse mount when volume becomes unwritable

Describe the bug
Setup fuse mount and run some file creation test with dd command, dd will hit Input/output error at regular intervals, when writing about 20GB to 50GB data, 1000-2000 files.
System Setup

List the command line to start "weed master", "weed volume", "weed filer", "weed s3", "weed mount".

 /usr/bin/weed -logtostderr=true master -mdir=/data -ip=xxx -volumePreallocate=false -volumeSizeLimitMB=4096 -defaultReplication=000
/usr/bin/weed -logtostderr=true volume -dir=/data -dir=/mnt/weed1 -mserver=localhost:9333 -max=0 -port=8080 -metricsPort=9325 -preStopSeconds=1
/usr/bin/weed -logtostderr=true volume -dir=/data -dir=/mnt/weed2 -mserver=localhost:9333 -max=0 -port=8081 -metricsPort=9326 -preStopSeconds=1
/usr/bin/weed -logdir=/var/log/udm filer -defaultReplicaPlacement=000 -master=localhost:9333 -metricsPort=9328 -maxMB=128
weed -v=4 mount -filer=localhost:8888 -dir=/opt/udm/fs1 -cacheCapacityMB=0 -concurrentWriters=8 -filer.path=/opt/udm/fs1 -collection=user1 -chunkSizeLimitMB=8

OS version
Rocky Linux release 9.4

output of weed version
version 30GB 3.68  linux amd64

if using filer, show the content of filer.toml

[mysql2]
enabled = true
createTable = """
  CREATE TABLE IF NOT EXISTS `%s` (
    `dirhash`   BIGINT NOT NULL,
    `name`      VARCHAR(766) NOT NULL,
    `directory` TEXT NOT NULL,
    `meta`      LONGBLOB,
    PRIMARY KEY (`dirhash`, `name`)
  ) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
"""
hostname = "<IP_ADDRESS>"
port = 3306
username = "root"
password = "xxxxx"
database = "seaweedfs"              # create or use an existing database
connection_max_idle = 2
connection_max_open = 100
connection_max_lifetime_seconds = 0
interpolateParams = false
# if insert/upsert failing, you can disable upsert or update query syntax to match your RDBMS syntax:
enableUpsert = true
upsertQuery = """INSERT INTO `%s` (`dirhash`,`name`,`directory`,`meta`) VALUES (?,?,?,?) AS `new` ON DUPLICATE KEY UPDATE `meta` = `new`.`meta`"""

Expected behavior
Creating files using dd or similar tool should not hit any errors
Screenshots
When hiting the error, I got below logs
dd errors:
run: dd if=/dev/mapper/rl-root of=/opt/udm/fs1/test03/20240828_1615_334/253.file.dat bs=32KB count=128 skip=2300
128+0 records in

run: dd if=/dev/mapper/rl-root of=/opt/udm/fs1/test03/20240828_1615_334/254.file.dat bs=32KB count=4096 skip=3931
dd: closing output file '/opt/udm/fs1/test03/20240828_1615_334/254.file.dat': Input/output error
run: dd if=/dev/mapper/rl-root of=/opt/udm/fs1/test03/20240828_1615_334/255.file.dat bs=32KB count=64 skip=2815
^C^C^C^Cdd: closing output file '/opt/udm/fs1/test03/20240828_1615_334/255.file.dat': Input/output error
run: dd if=/dev/mapper/rl-root of=/opt/udm/fs1/test03/20240828_1615_334/256.file.dat bs=32KB count=64 skip=1915
dd: closing output file '/opt/udm/fs1/test03/20240828_1615_334/256.file.dat': Input/output error
run: dd if=/dev/mapper/rl-root of=/opt/udm/fs1/test03/20240828_1615_334/257.file.dat bs=32KB count=8 skip=1189
dd: closing output file '/opt/udm/fs1/test03/20240828_1615_334/257.file.dat': Input/output error
run: dd if=/dev/mapper/rl-root of=/opt/udm/fs1/test03/20240828_1615_334/258.file.dat bs=32KB count=1 skip=2273
dd: closing output file '/opt/udm/fs1/test03/20240828_1615_334/258.file.dat': Input/output error
run: dd if=/dev/mapper/rl-root of=/opt/udm/fs1/test03/20240828_1615_334/259.file.dat bs=32KB count=128 skip=3628

fuse mount log:
I0828 16:15:50.182690 weedfs_file_mkrm.go:85 mknod: directory:"/opt/udm/fs1/test03/20240828_1615_334" entry:{name:"254.file.dat" attributes:{mtime:1724832950 file_mode:420 crtime:1724832950 inode:9692435665168868916}} signatures:-2101554117 skip_check_parent_directory:true
I0828 16:15:50.186464 weedfs_file_mkrm.go:98 mknod /opt/udm/fs1/test03/20240828_1615_334/254.file.dat: <nil>
I0828 16:15:50.186567 weedfs_file_sync.go:98 doFlush /opt/udm/fs1/test03/20240828_1615_334/254.file.dat fh 854

...

I0828 16:15:50.476280 dirty_pages_chunked.go:82 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage 33,44238a82cf08 [41943040,50331648)

I0828 16:15:50.501830 dirty_pages_chunked.go:82 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage 33,4424add8cb8a [58720256,67108864)

I0828 16:15:50.511887 dirty_pages_chunked.go:82 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage 33,44219ea3f047 [50331648,58720256)

I0828 16:15:50.522943 dirty_pages_chunked.go:82 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage 33,442221056f72 [33554432,41943040)
I0828 16:15:50.522949 upload_pipeline.go:191  uploaderCount 2 --> 1
I0828 16:15:50.522954 upload_pipeline.go:37 Free sealed chunk:  finished uploading chunk 4

I0828 16:15:50.537596 dirty_pages_chunked.go:82 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage 33,44250b672f2c [92274688,100663296)
I0828 16:15:50.537617 upload_pipeline.go:191  uploaderCount 1 --> 0
I0828 16:15:50.537625 upload_pipeline.go:37 Free sealed chunk:  finished uploading chunk 11

I0828 16:15:50.584757 weedfs_file_sync.go:98 doFlush /opt/udm/fs1/test03/20240828_1615_334/254.file.dat fh 854
I0828 16:15:50.584764 upload_pipeline.go:171  uploaderCount 2 ++> 3
I0828 16:15:50.584772 upload_pipeline.go:171  uploaderCount 3 ++> 4
I0828 16:15:50.584775 upload_pipeline.go:171  uploaderCount 4 ++> 5
I0828 16:15:50.584778 upload_pipeline.go:171  uploaderCount 5 ++> 6
I0828 16:15:50.584780 upload_pipeline.go:171  uploaderCount 6 ++> 7
I0828 16:15:50.584782 upload_pipeline.go:171  uploaderCount 7 ++> 8
I0828 16:15:50.584784 upload_pipeline.go:171  uploaderCount 8 ++> 9
I0828 16:15:50.591174 dirty_pages_chunked.go:82 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage 33,4427a57ed4d1 [25165824,33554432)
I0828 16:15:50.591205 upload_pipeline.go:191  uploaderCount 9 --> 8
I0828 16:15:50.591213 upload_pipeline.go:37 Free sealed chunk:  finished uploading chunk 3
I0828 16:15:50.591232 upload_pipeline.go:171  uploaderCount 8 ++> 9
I0828 16:15:50.634069 dirty_pages_chunked.go:82 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage 33,4426508635e7 [67108864,75497472)
I0828 16:15:50.634094 upload_pipeline.go:191  uploaderCount 9 --> 8
I0828 16:15:50.634100 upload_pipeline.go:37 Free sealed chunk:  finished uploading chunk 8
I0828 16:15:50.634109 upload_pipeline.go:171  uploaderCount 8 ++> 9
I0828 16:15:52.334456 weedfs_stats.go:35 reading filer stats: collection:"user1" ttl:"0s"
I0828 16:15:52.335172 weedfs_stats.go:41 read filer stats: total_size:408021893120 used_size:90112109568 file_count:17314
I0828 16:16:00.622199 wfs_filer_client.go:31 WithFilerClient 0 localhost:18888: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622214 wfs_filer_client.go:31 WithFilerClient 0 localhost:18888: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622222 weedfs_write.go:47 upload data 254.file.dat: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622230 weedfs_write.go:47 upload data 254.file.dat: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622235 wfs_filer_client.go:31 WithFilerClient 0 localhost:18888: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622242 wfs_filer_client.go:31 WithFilerClient 0 localhost:18888: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622250 weedfs_write.go:47 upload data 254.file.dat: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622258 weedfs_write.go:47 upload data 254.file.dat: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622232 wfs_filer_client.go:31 WithFilerClient 0 localhost:18888: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622262 dirty_pages_chunked.go:76 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage [125829120,131072000): upload data: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622264 weedfs_write.go:47 upload data 254.file.dat: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622266 dirty_pages_chunked.go:76 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage [83886080,92274688): upload data: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622267 upload_pipeline.go:191  uploaderCount 9 --> 8
I0828 16:16:00.622269 upload_pipeline.go:191  uploaderCount 8 --> 7
I0828 16:16:00.622258 dirty_pages_chunked.go:76 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage [16777216,25165824): upload data: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622272 upload_pipeline.go:37 Free sealed chunk:  finished uploading chunk 15
I0828 16:16:00.622274 upload_pipeline.go:191  uploaderCount 7 --> 6
I0828 16:16:00.622277 upload_pipeline.go:37 Free sealed chunk:  finished uploading chunk 2
I0828 16:16:00.622213 wfs_filer_client.go:31 WithFilerClient 0 localhost:18888: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622283 weedfs_write.go:47 upload data 254.file.dat: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622286 dirty_pages_chunked.go:76 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage [8388608,16777216): upload data: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622288 upload_pipeline.go:191  uploaderCount 6 --> 5
I0828 16:16:00.622291 upload_pipeline.go:37 Free sealed chunk:  finished uploading chunk 1
I0828 16:16:00.622238 dirty_pages_chunked.go:76 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage [75497472,83886080): upload data: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!
I0828 16:16:00.622294 upload_pipeline.go:191  uploaderCount 5 --> 4
I0828 16:16:00.622295 upload_pipeline.go:37 Free sealed chunk:  finished uploading chunk 9
I0828 16:16:00.622230 dirty_pages_chunked.go:76 /opt/udm/fs1/test03/20240828_1615_334/254.file.dat saveToStorage [117440512,125829120): upload data: filerGrpcAddress assign volume: assign volume failure count:1 collection:"user1" path:"/opt/udm/fs1/test03/20240828_1615_334/254.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No more writable volumes!

master log at same time:
I0828 08:15:50.581606 volume_layout.go:405 Volume 33 becomes unwritable
I0828 08:15:50.581623 volume_layout.go:497 Volume 33 reaches full capacity.

I0828 08:16:55.527601 volume_layout.go:418 Volume 36 becomes writable
I0828 08:16:55.527606 volume_growth.go:270 Registered Volume 36 on topo:DefaultDataCenter:DefaultRack:<IP_ADDRESS>:8081
I0828 08:16:55.630887 volume_growth.go:257 Created Volume 37 on topo:DefaultDataCenter:DefaultRack:<IP_ADDRESS>:8080
I0828 08:16:55.630903 volume_layout.go:418 Volume 37 becomes writable
I0828 08:16:55.630927 volume_growth.go:270 Registered Volume 37 on topo:DefaultDataCenter:DefaultRack:<IP_ADDRESS>:8080

volume id 33 status:
    {
      "Id": 33,
      "Size":<PHONE_NUMBER>,
      "ReplicaPlacement": {},
      "Ttl": {
        "Count": 0,
        "Unit": 0
      },
      "DiskType": "",
      "Collection": "user1",
      "Version": 3,
      "FileCount": 1031,
      "DeleteCount": 0,
      "DeletedByteCount": 0,
      "ReadOnly": true,
      "CompactRevision": 0,
      "ModifiedAtSecond": 0,
      "RemoteStorageName": "",
      "RemoteStorageKey": ""
    },

filer status for last succeeded file and first failed file:
    {
      "FullPath": "/opt/udm/fs1/test03/20240828_1615_334/253.file.dat",
      "Mtime": "2024-08-28T08:15:50Z",
      "Crtime": "2024-08-28T08:15:50Z",
      "Mode": 420,
      "Uid": 0,
      "Gid": 0,
      "Mime": "",
      "TtlSec": 0,
      "UserName": "",
      "GroupNames": null,
      "SymlinkTarget": "",
      "Md5": null,
      "FileSize": 4096000,
      "Rdev": 0,
      "Inode":<PHONE_NUMBER>9359591449,
      "Extended": null,
      "chunks": [
        {
          "file_id": "33,44203cf3c907",
          "size": 4096000,
          "modified_ts_ns":<PHONE_NUMBER>141367616,
          "e_tag": "RsxScYUTchacTIVF4Yz/Mg==",
          "fid": {
            "volume_id": 33,
            "file_key": 17440,
            "cookie":<PHONE_NUMBER>
          },
          "is_compressed": true
        }
      ],
      "HardLinkId": null,
      "HardLinkCounter": 0,
      "Content": null,
      "Remote": null,
      "Quota": 0
    },
    {
      "FullPath": "/opt/udm/fs1/test03/20240828_1615_334/254.file.dat",
      "Mtime": "2024-08-28T08:15:50Z",
      "Crtime": "2024-08-28T08:15:50Z",
      "Mode": 420,
      "Uid": 0,
      "Gid": 0,
      "Mime": "",
      "TtlSec": 0,
      "UserName": "",
      "GroupNames": null,
      "SymlinkTarget": "",
      "Md5": null,
      "FileSize": 0,
      "Rdev": 0,
      "Inode":<PHONE_NUMBER>168868916,
      "Extended": null,
      "HardLinkId": null,
      "HardLinkCounter": 0,
      "Content": null,
      "Remote": null,
      "Quota": 0
    },

Additional context
It looks like filer has problem choosing volume for write, volume 33 here is apparently full after writing 253.file.dat, but it seems when writing 254.file.dat, filer side has no knowledge of that, and still using volume 33 for uploading, until volume 33 becomes unwritable (readonly), and the write has to fail.
I think basically there are 2 approaches:

improve how filer choose the right volume for write
retry the failed write to new volume

upgrade and tested on 3.72, still can hit io errors, but the volume assign window is smaller, only hit one io error this time.
dd output:
run: dd if=/dev/mapper/rl-root of=/opt/udm/fs1/test02/20240829_1229_70/79.file.dat bs=32KB count=128 skip=3659
128+0 records in
128+0 records out
4096000 bytes (4.1 MB, 3.9 MiB) copied, 0.0974758 s, 42.0 MB/s
run: dd if=/dev/mapper/rl-root of=/opt/udm/fs1/test02/20240829_1229_70/80.file.dat bs=32KB count=8 skip=686
dd: closing output file '/opt/udm/fs1/test02/20240829_1229_70/80.file.dat': Input/output error
run: dd if=/dev/mapper/rl-root of=/opt/udm/fs1/test02/20240829_1229_70/81.file.dat bs=32KB count=4096 skip=171
4096+0 records in
4096+0 records out

fuse mount log:
mknod /opt/udm/fs1/test02/20240829_1229_70/80.file.dat: <nil>
I0829 04:29:47.931068 wfs_filer_client.go:31 WithFilerClient 0 localhost:18888: assign volume failure count:1  collection:"user1"  path:"/opt/udm/fs1/test02/20240829_1229_70/80.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No writable volumes in volume layout
I0829 04:29:47.931080 weedfs_write.go:51 upload data 80.file.dat: filerGrpcAddress assign volume: assign volume failure count:1  collection:"user1"  path:"/opt/udm/fs1/test02/20240829_1229_70/80.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No writable volumes in volume layout
I0829 04:29:47.931083 dirty_pages_chunked.go:76 /opt/udm/fs1/test02/20240829_1229_70/80.file.dat saveToStorage [0,256000): upload data: filerGrpcAddress assign volume: assign volume failure count:1  collection:"user1"  path:"/opt/udm/fs1/test02/20240829_1229_70/80.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No writable volumes in volume layout
E0829 04:29:47.931102 weedfs_file_sync.go:102 /opt/udm/fs1/test02/20240829_1229_70/80.file.dat doFlush: flush data: upload data: filerGrpcAddress assign volume: assign volume failure count:1  collection:"user1"  path:"/opt/udm/fs1/test02/20240829_1229_70/80.file.dat": assign volume: rpc error: code = Unknown desc = failed to find writable volumes for collection:user1 replication:000 ttl: error: No writable volumes in volume layout
I0829 04:29:47.932436 weedfs_file_mkrm.go:85 mknod: directory:"/opt/udm/fs1/test02/20240829_1229_70"  entry:{name:"81.file.dat"  attributes:{mtime:1724905787  file_mode:420  crtime:1724905787  inode:5461050114259771138}}  signatures:1940916179  skip_check_parent_directory:true

master log:
I0829 04:29:37.864458 volume_layout.go:399 Volume 9 becomes unwritable
I0829 04:29:37.864482 volume_layout.go:491 Volume 9 reaches full capacity.
I0829 04:29:56.594646 volume_layout.go:412 Volume 15 becomes writable
I0829 04:29:56.596573 volume_growth.go:257 Created Volume 15 on topo:DefaultDataCenter:DefaultRack:<IP_ADDRESS>:8081
I0829 04:29:56.596587 volume_growth.go:270 Registered Volume 15 on topo:DefaultDataCenter:DefaultRack:<IP_ADDRESS>:8081
I0829 04:29:56.647510 volume_layout.go:412 Volume 16 becomes writable

volume log:
I0829 04:29:56.602399 store.go:166 In dir /mnt/weed1 adds volume:16 collection:user1 replicaPlacement:000 ttl:
I0829 04:29:56.602585 volume_info.go:22 maybeLoadVolumeInfo checks /mnt/weed1/user1_16.vif
I0829 04:29:56.602992 volume_loading.go:121 open to write file /mnt/weed1/user1_16.idx
I0829 04:29:56.603084 volume_loading.go:142 loading memory index /mnt/weed1/user1_16.idx to memory
I0829 04:29:56.603135 needle_map_memory.go:54 max file key: 0 count: 0 deleted: 0 for file: /mnt/weed1/user1_16.idx
I0829 04:29:56.646027 store.go:170 add volume 16
I0829 04:29:56.646845 volume_grpc_client_to_master.go:181 volume server <IP_ADDRESS>:8080 adds volume 16
I0829 04:29:56.646202 volume_grpc_admin.go:60 assign volume volume_id:16  collection:"user1"  replication:"000"
I0829 04:29:56.689656 store.go:166 In dir /mnt/weed1 adds volume:18 collection:user1 replicaPlacement:000 ttl:
I0829 04:29:56.689772 volume_info.go:22 maybeLoadVolumeInfo checks /mnt/weed1/user1_18.vif
I0829 04:29:56.689996 volume_loading.go:121 open to write file /mnt/weed1/user1_18.idx
I0829 04:29:56.690106 volume_loading.go:142 loading memory index /mnt/weed1/user1_18.idx to memory
I0829 04:29:56.690192 needle_map_memory.go:54 max file key: 0 count: 0 deleted: 0 for file: /mnt/weed1/user1_18.idx
I0829 04:29:56.725017 store.go:170 add volume 18

We're experiancing same problem starting from 3.71. The problem is really urgent for us :/

Looking at #5781, which added auto volume growth in background:
func (ms *MasterServer) ProcessGrowRequest() {
	go func() {
		for {
			time.Sleep(14*time.Minute + time.Duration(120*rand.Float32())*time.Second)
			if !ms.Topo.IsLeader() {
				continue
			}
			for _, vl := range ms.Topo.ListVolumeLyauts() {
				if !vl.HasGrowRequest() && vl.ShouldGrowVolumes(&topology.VolumeGrowOption{}) {
					vl.AddGrowRequest()
					ms.volumeGrowthRequestChan <- &topology.VolumeGrowRequest{
						Option: vl.ToGrowOption(),
						Count:  vl.GetLastGrowCount(),
					}
				}
			}
		}
	}()

however, if we want this auto grow logic start working, we need to prepare an initial set of volumes which will not become full in about 15 minutes.
Say we have above setup, with 4GB volume size limit, replica 000, growth count 7, then if using dd or other tool to write to fuse mount at 200MB/s rate, then 15 minutes it's about 175GB, which means we need to prepare 44 volumes.
So I think the auto volume grow interval and volume growth count, and growth threshold (default 0.9) should be considered all together, otherwise we may hit this IO error.

We're experiancing same problem starting from 3.71. The problem is really urgent for us :/

you could try 3.72, then configure a larger volume growth count, see if that helps @kvaster

Done more testing and investigation, it looks like one of the problem is, volume grow logic does not take into the account of collection at all.
In our setup we don't use collection "" which is the default collection, and since the default collection is used for filer meta log. We use named collection like "user1" and "user2".
Say we have default collection (7) and "user1" collection (7) at beginning, when 6 user1 volumes becomes crowded, the auto grow logic should detect that and grow the volume at background. However, in ShouldGrowVolumes, it collections volume stats for all collections, the active volumes are 8, and crowded volumes is 6.
Even when all volumes of user1 becomes full, since volume layout does not persist readonly and oversized volumes, and ShouldGrowVolumes does not check them, so we still have 7 active volumes (for default collection) and 0 crowded volumes.
Thus there is no way to grow the volume automatically right now for non default collection.

@half-life666 , switching to 3.72 doesn't help. Both 3.71 and 3.72 do not work. 3.69 - works.
I think that grow logic is broken like you said, cause we have not so many writes and it stucks forever after some small amount of time. I can't write even 1 byte file. Restarting master servers helps...

For mitigation, I think you can use curl vol grow cmd to grow as much volume as possible. And for reference, we've implemented a simple volume server monitor, e.g., look at volume status (size) for each collection, if above some threhold, just execute the volume grow command, to mitigate this problem.

@half-life666 , switching to 3.72 doesn't help. Both 3.71 and 3.72 do not work. 3.69 - works.
I think that grow logic is broken like you said, cause we have not so many writes and it stucks forever after some small amount of time. I can't write even 1 byte file. Restarting master servers helps...

For mitigation, I think you can use curl vol grow cmd to grow as much volume as possible. And for reference, we've implemented a simple volume server monitor, e.g., look at volume status (size) for each collection, if above some threhold, just execute the volume grow command, to mitigate this problem.

I also am getting this error as well.
We mostly use a filer process for interacting with seaweedfs.
As you state we were able to fix this for the moment by growing the volumes manually using the grow api and pre allocating a large number of volumes.
curl "http://localhost:9333/vol/grow?collection=mycollection&count=200"

Even when all volumes of user1 becomes full, since volume layout does not persist readonly and oversized volumes, and ShouldGrowVolumes does not check them, so we still have 7 active volumes (for default collection) and 0 crowded volumes.

ShouldGrowVolumes is for each volume layout, which belongs to one collection.
Do you have some logs to show why it is deciding not to grow volumes?

Unfortunatelly there was no any logs in filer or/and master/volume servers. I have only error logs from CSI driver... We reverted back to 3.69 for now in production.

Even when all volumes of user1 becomes full, since volume layout does not persist readonly and oversized volumes, and ShouldGrowVolumes does not check them, so we still have 7 active volumes (for default collection) and 0 crowded volumes.

ShouldGrowVolumes is for each volume layout, which belongs to one collection. One collection can have multiple volume layouts.
Do you have some logs to show why it is deciding not to grow volumes?
I0829 06:27:41.549293 volume_layout.go:399 Volume 17 becomes unwritable
I0829 06:27:41.549303 volume_layout.go:491 Volume 17 reaches full capacity.
I0829 06:27:41.549315 volume_layout.go:399 Volume 19 becomes unwritable
I0829 06:27:41.549317 volume_layout.go:491 Volume 19 reaches full capacity.
I0829 06:27:41.549321 volume_layout.go:399 Volume 21 becomes unwritable
I0829 06:27:41.549322 volume_layout.go:491 Volume 21 reaches full capacity.
I0829 06:27:49.644164 volume_layout.go:399 Volume 15 becomes unwritable
I0829 06:27:49.644186 volume_layout.go:491 Volume 15 reaches full capacity.
I0829 06:27:49.644206 volume_layout.go:399 Volume 20 becomes unwritable
I0829 06:27:49.644210 volume_layout.go:491 Volume 20 reaches full capacity.
I0829 06:27:49.644218 volume_layout.go:399 Volume 18 becomes unwritable
I0829 06:27:49.644221 volume_layout.go:491 Volume 18 reaches full capacity.

that's why I believe the volume layout does not take account into collections.

Thanks for the logs. Need to see why the high usage volume is zero.
Could you add some println here: https://github.com/seaweedfs/seaweedfs/blob/a4b25a642d6b2ed6056496ffddce864100932f3d/weed/topology/volume_layout.go#L381-L383

float64(info.Size) > float64(vl.volumeSizeLimit)*VolumeGrowStrategy.Threshold

since we didn't specify datacenter, so I think it goes here:
	if option.DataCenter == "" {
		return len(vl.writables), len(vl.writables), len(vl.crowded)
	}

so the question is why datacenter "" is different with datacenter which is not ""?

I could not reproduce with this:
dd if=/dev/urandom of=/Users/chrislu/mount/253.file.dat bs=32768 count=1280000
1280000+0 records in
1280000+0 records out
41943040000 bytes transferred in 343.197121 secs (122212680 bytes/sec)

Is there any reproducing scripts to run?

#!/bin/bash

if [ "$#" -ne 3 ]; then
    echo "Usage: $0 <root_directory> <files_per_subdir> <number_of_subdirs>"
    exit 1
fi

root_dir="$1"
files_per_subdir="$2"
num_subdirs="$3"

blockSize=32KB

counts=(1 4 8 32 64 128 1024 4096)

len=${#counts[@]}

for ((sdir=1; sdir<=num_subdirs; sdir++)); do
    timestamp=$(date +%Y%m%d_%H%M)
    random_num=$((RANDOM % 1000))

    subdir="${timestamp}_${random_num}"
    echo "create dir $subdir"
    mkdir -p "${root_dir}/${subdir}"

    #if [ $? -eq 0 ]; then
        for ((f=1; f<=files_per_subdir; f++)); do
            fileDir="${root_dir}/${subdir}/"
            random_skip=$((RANDOM % 4096 + 1))
            random_index=$((RANDOM % len))
            count=${counts[$random_index]}

            outFile=$( printf '%s%d.file.dat' $fileDir $f )
            cmd="dd if=/dev/sdb of=$outFile bs=$blockSize count=$count skip=$random_skip"
            echo "run: $cmd"
            eval $cmd
        done
    #fi
done

echo "Created ${num_subdirs} directories under ${root_dir} with each having ${files_per_subdir} files."

exit 0

some like this, you can replace the /dev/sdb with your device

what are the parameters you used to reproduce?

I could not reproduce with this:
dd if=/dev/urandom of=/Users/chrislu/mount/253.file.dat bs=32768 count=1280000
1280000+0 records in
1280000+0 records out
41943040000 bytes transferred in 343.197121 secs (122212680 bytes/sec)

Are there any reproducing scripts to run?

did you run it on "" collection? my case is create fuse mount on "user1" collection, but dc, rack is all ""

I can reproduce it in a 2-3 minutes on productuon cluster, but can't afford experiments anymore - reverted back to 3.69. Will try to reproduce problem on dev cluster. But I'm sure that problem exists.

I can also reproduce this issue. I am going to rollback to 3.69 too.

I met too.
start seaweedfs 3.72 with docker. sudo docker run --name seaweedfs -d --restart=always -p 8333:8333 2b3940c21ade server -s3 -volume.max=0 -master.volumeSizeLimitMB=512
upload large artifact(10GB) with rclone
And repeat  upload artifact until meet this question

@zuzuviewer what's the volume.list output when it happens?

@half-life666 what's your volume.list output when it happens?

@half-life666 what's your volume.list output when it happens?

I do not have that in the moment, but I can give you a description:

suppose collection "" and "user1" has 7 volumes (1-7) at beginning, each volume 4GB
start fuse mount /mnt/fs1 on collection "user1"
write 30GB of data to fuse mount /mnt/fs1
and when problem happens, user1 will still have 7 volumes, master can not grow any volumes for user1

@chrislusf

I am still failing to reproduce this.
Please help to make a docker compose file to reproduce and a script to run.

It seems that not using the default collection will cause problems.

I apologize, but it seems the problem is in my changes and the delay due to the vacation of the next PR https://github.com/seaweedfs/seaweedfs/pull/5884.

The PR looks legit but I could not confirm the fix without reproducing the bug.
Please help to confirm the fix.

`#!/bin/bash
sudo -v; curl https://rclone.org/install.sh | sudo bash
mkdir -p ~/.config/rclone
cat << EOF > ~/.config/rclone/rclone.conf
[anonymous]
type = s3
provider = SeaweedFS
endpoint = http://localhost:8333
EOF
docker run --name seaweedfs -d --restart=always -p 8333:8333 chrislusf/seaweedfs:3.72 server -s3 -volume.max=0 -master.volumeSizeLimitMB=512
i=1
while true; do
rclone copy ~/data anonymous:/test/data${i}
i=$((i+1))
sleep 1
done`
@chrislusf this script may reproduce，the directory “~/data” have a lot of artifact(10GB), need to prepare by yourself

I've tested the pr 5884 in our environment, it can grow volumes fine.


Add support for mockMaker in @Mock and MockSettings

Summary
In Mockito 4.8.0 https://github.com/mockito/mockito/issues/2626 introduced the mockMaker attribute in the  @Mock annotation, and the mockMaker(String mockMaker) method in MockSettings.
Tasks

Extend @Mock to field and vice versa conversion to support this setting.

To be clarified

See if the newly introduced MockMakers class (see related PR) can be utilized in some way.

Complete in v0.8.0.


"SyntaxError: Unexpected token ="

Thanks for this awesome repo.
Unfortunately, I could not get it running?
> ng2-translate-extract --dir ./src/client/app/components/frontpage --output ./ --format=json

/Users/andy/workspace/HazuApp/node_modules/@biesbjerg/ng2-translate-extract/dist/utils/translation.collection.js:4
    constructor(values = {}) {
                       ^

SyntaxError: Unexpected token =
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (/Users/andy/workspace/HazuApp/node_modules/@biesbjerg/ng2-translate-extract/dist/utils/extractor.js:2:34)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)

I'm using npm version is 4.0.3 and node version v5.6.0. Are there specific versions required by your script? Thanks a lot!

Hi!
It seems the issue is because node versions before 6.x does not support default values (values = {}) for function args.
I've pushed an update to make it transpile to es5 - can you update and let me know if it works?

I got the following:
> ng2-translate-extract --dir ./src/client/app/components/breadcrumb --output ./ --format=json --clean

INFO: Extracting strings from './src/client/app/components/breadcrumb'
ERROR: TypeError: Cannot supply flags when constructing one RegExp from another

Upgraded to node version 7.2.1 and it all works fine! Thanks a lot for the quick help.

Hi!
Good to hear!
Node 4.3.2+ support is added via this commit if you need it: https://github.com/biesbjerg/ng2-translate-extract/commit/5c78a37ae0a0c9310fd2b06cfcb4959a64154aed


update plugin listing

Hello,
I see 1.10.0 is the newest version but on the plugin page on jetbrains it's showing 1.9.0 as the newest version.

+1

Binary for lazybones (but still for your safety I recommend building yourself):
I built this with docker 20.10 on Windows 10 from git bash.
Since one unit test was failing I just disabled it #29
deployment-dashboard.zip


Add line number and file to log messages when at debug level.

Description
Add a runtime hook for the zerolog setup to log line number and file when log level is set to debug.
Motivation and Context
I was trying to run ocis and to add users via /graph/v1.0/users API, but some environment variable or configuration was wrong and I was getting 500 errors. In the log I only saw this:
2023-01-26T11:33:40+01:00 ERR error initializing metadata client error="error: not found: create container: error: not found: f1bdd61a-da7c-49fc-8203-0558109d1b4f!f1bdd61a-da7c-49fc-8203-0558109d1b4f/settings" service=ocis
2023-01-26T11:33:40+01:00 ERR Could not load roles error="{\"id\":\"go.micro.server\",\"code\":500,\"detail\":\"panic recovered: runtime error: invalid memory address or nil pointer dereference\",\"status\":\"Internal Server Error\"}" service=proxy
2023-01-26T11:33:40+01:00 ERR Could not get user by claim error="{\"id\":\"go.micro.server\",\"code\":500,\"detail\":\"panic recovered: runtime error: invalid memory address or nil pointer dereference\",\"status\":\"Internal Server Error\"}" service=proxy

As this was not really helpful in telling me what was going wrong, I decided to add line number and file info to the messages.
How Has This Been Tested?
Tested by running locally.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Technical debt
[ ] Tests only (no source changes)

Checklist:

[x] Code changes
[ ] Unit tests added
[ ] Acceptance tests added
[ ] Documentation ticket raised:

:boom: Acceptance test Core-API-Tests-ocis-storage-6 failed. Further test are cancelled...


gcp_authn: support dynamic audience set by a request header

Commit Message: gcp_authn: support dynamic audience set by a request header
Additional Description:
Added AudienceProvider enum to GcpAuthnFilterConfig which supports the following modes:

CLUSTER_METADATA: the audience URL of the receiving service will be set on the cluster's typed_filter_metadata (existing behavior)
REQUEST_HEADER: the audience will be set from the value of a specified request header

This will default to CLUSTER_METADATA if not set so that existing users of the gcp_authn filter have no change in behavior and do not need to change their envoy configs.
Risk Level: Medium (added new feature to existing filter)
Testing: Updated unit tests, integration tests
Docs Changes: Updated gcp_authn docs and example config
Release Notes: Updated current release notes
Platform Specific Features: N/A
Fixes #32831

/assign @tyxia

/assign @tyxia

Thank you for tackling this (which was targeted as future work) to make gcp_authn more flexible and extensible!
Regarding precheck format issue, you could use bazel run //tools/code_format:check_format -- fix
Regarding precheck publishing failure, it seems to point to label -- :ref:<>.  I don't know a good command/tool to auto fix this. The approach I have been taking is comparing with existing label manually.

Ping @mattklein123 could you please take a look at the changes I proposed in response to your feedback on the protos? https://github.com/envoyproxy/envoy/pull/33246#discussion_r1548573190

The feature this is blocking is deprioritized for now, but I'll make the appropriate changes to the API and code for the future

/wait


Unity 2020.3 - Some c# runtimes appears to be compatible

I'm attempting to use the latest SuperUnityBuild in unity 2020.3, and I get an error saying something along the lines of String.join is not able to convert from 'char' to 'string'.
I'm trying to use mono and .net 4.0.
Are not all C# versions/frameworks available in unity 2020.3 supported by super unity build? If they are, it would not be a large PR to fix. If they are not, I'd consider updating the README to mention what is supported.

I noticed this actually and already fixed it in my personal fork where I'm doing some other UX changes and fixes. Specifically, it was a dependency on .NET Standard 2.1 whereas Unity 2020.3 still supports Standard 2.0. I should have a PR ready in just a few days that addresses it :) in the meantime I believe previous versions of SuperUnityBuild don't have the same issue

This is fixed in v7.0.0, thanks to @RobProductions in #113 🥳


missing uuidgen dependency

the install doc is missing a mention of this dep.
Ubuntu 11.10
sudo apt-get install uuid-runtime

Could you post here the compile error, please? It will be easier if we cite the error in the manual.
Thanks.

Sorry. I'd have to rebuild my OS from scratch.
To reproduce the error.
Temporarily rename uuidgen
Launch m2sh
Execute uuid command
/r
On Dec 28, 2011, at 3:43, Dalton<EMAIL_ADDRESS>wrote:

Could you post here the compile error, please? It will be easier if we cite the error in the manual.
Thanks.

Reply to this email directly or view it on GitHub:
https://github.com/zedshaw/mongrel2/issues/93#issuecomment-3289068

Hmm. I see. This is because m2sh uses system("uuidgen") to generates the uuids.
Thanks, I will add a note to the docs.


feat(publick8s) tune mirrorbits (get.jenkins.io) resources

The goal is to pack more containers by compressing requests (scheduler) while keeping sustainable limits
Ref. https://github.com/jenkins-infra/helpdesk/issues/3827
Metrics in datadogs:

![Uploading Capture d’écran 2024-01-03 à 15.46.21.png…]()

Self merging to deploy


Fix LLVM escape sequences

This is related to my previous fixes for escape sequences in strings.
Apparently it's quite hard to get this 100% right since every backend handles strings differently.
Since Javascript escapes the sequences by itself and LLVM does not, I now explicitly de-escape the string using StringContext in a much later stage (machine transformer).
Let me know if you come up with a better solution :)

It looks great, but I wonder if this is the best way of doing this long-term.
Perhaps it might be better to directly:

unescape in the frontend (in the parser)
escape in the transformers for the individual backends if needed

This way, we could actually have nice, consistent string & character escapes across all backends.
However, this still seems like a good fix for now. Let's perhaps discuss this in person. :)


[SPARK-26144][BUILD] build/mvn should detect scala.version based on scala.binary.version

What changes were proposed in this pull request?
Currently, build/mvn downloads and uses Scala 2.12.7 in Scala-2.11 Jenkins job. The root cause is build/mvn got the first match from pom.xml blindly.

https://amplab.cs.berkeley.edu/jenkins/view/Spark QA Test (Dashboard)/job/spark-master-test-maven-hadoop-2.7-ubuntu-scala-2.11/6/consoleFull

exec: curl -s -L https://downloads.lightbend.com/zinc/0.3.15/zinc-0.3.15.tgz
exec: curl -s -L https://downloads.lightbend.com/scala/2.12.7/scala-2.12.7.tgz
exec: curl -s -L https://www.apache.org/dyn/closer.lua?action=download&filename=/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

How was this patch tested?
Manual.
$ build/mvn clean
exec: curl --progress-bar -L https://downloads.lightbend.com/scala/2.12.7/scala-2.12.7.tgz
...
$ git clean -fdx
$ dev/change-scala-version.sh 2.11
$ build/mvn clean
exec: curl --progress-bar -L https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.tgz

Test build #99173 has started for PR 23118 at commit f4f51af.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/5273/
Test PASSed.

cc @srowen , @shaneknapp , @dbtsai , @HyukjinKwon
I noticed this during investigating Scala-2.11 Jenkins jobs. Sorry for pinging you guys at Thanks Giving holiday. As I'm the one who merged Scala-2.12 default PR, I hope that we are able to keep Scala-2.11 profile cleanly like before.

Haha today's not holiday here :D.

Thank you, @HyukjinKwon . :D

Test build #99173 has finished for PR 23118 at commit f4f51af.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

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

Retest this please.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/5289/
Test PASSed.

Test build #99193 has started for PR 23118 at commit f4f51af.

Test build #99193 has finished for PR 23118 at commit f4f51af.

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

Merged build finished. Test PASSed.

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

Merged to master.

Late to the party! Thanks @dongjoon-hyun for taking care of this.


[Android] Build failed undeclared identifier 'aligned_alloc'

I'm trying to build codon from source on Termux, using clang.
~/.../codon-0.15.5/build $ clang --version
clang version 15.0.7
Target: aarch64-unknown-linux-android24
Thread model: posix
InstalledDir: /data/data/com.termux/files/usr/bin

(Skipping...)

[ 50%] Linking C static library libgc.a
[ 50%] Built target gc
[ 50%] Generating kmp_i18n_id.inc
[ 50%] Generating kmp_i18n_default.inc
[ 50%] Built target libomp-needed-headers
[ 50%] Building CXX object _deps/openmp-build/runtime/src/CMakeFiles/omp.dir/kmp_alloc.cpp.o
In file included from /data/data/com.termux/files/home/downloads/codon-0.15.5/build/_deps/openmp-src/runtime/src/kmp_alloc.cpp:13:
In file included from /data/data/com.termux/files/home/downloads/codon-0.15.5/build/_deps/openmp-src/runtime/src/kmp.h:118:
/data/data/com.termux/files/home/downloads/codon-0.15.5/build/_deps/openmp-src/runtime/src/kmp_barrier.h:111:51: error: use of undeclared identifier 'aligned_alloc'
distributedBarrier *d = (distributedBarrier *)KMP_ALIGNED_ALLOCATE(
                                                  ^
/data/data/com.termux/files/home/downloads/codon-0.15.5/build/_deps/openmp-src/runtime/src/kmp_barrier.h:24:47: note: expanded from macro 'KMP_ALIGNED_ALLOCATE'
#define KMP_ALIGNED_ALLOCATE(size, alignment) aligned_alloc(alignment, size)
                                              ^
1 error generated.
make[2]: *** [_deps/openmp-build/runtime/src/CMakeFiles/omp.dir/build.make:76: _deps/openmp-build/runtime/src/CMakeFiles/omp.dir/kmp_alloc.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:2050: _deps/openmp-build/runtime/src/CMakeFiles/omp.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

It's native Termux I'm using, not proot-distro linux.
~/.../codon-0.15.5/build $ neofetch --off
u0_a202@localhost
-----------------
OS: Android 11 aarch64
Host: Redmi 21091116AC
Kernel: 4.14.186-perf-gd65dbc980d48
Uptime: 4 days, 10 hours, 49 mins
Packages: 309 (dpkg), 1 (pkg)
Shell: bash 5.2.15
CPU: MT6833P (8) @ 2.000GHz
Memory: 3362MiB / 5635MiB

Look like a known libmusl issue, as aligned_alloc is not implemented

This is an issue with LLVM's OpenMP. If it can be compiled on Termux, then this should work; you will probably need a different set of flags. I will close this issue for now as it is upstream issue; if anybody has a correct set of OpenMP compilation flags for MUSL distros, please let us know and we will integrate it into our build script.


add logos for access marking

A lof of things require specific access. A ton of achievements such as dailies, crafting recipes, legendary equipment etc
I prepared these 512px images to help mark access requirements.

Keeping accessory textures to modules for now unless they are also utilized by core.


Docs hotfix

Fixed doc errors (source of warnings on the doc build)

Codecov Report

Merging #50 (ffd3fd2) into master (0f51c49) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #50   +/-   ##
=======================================
  Coverage   80.92%   80.92%
=======================================
  Files          41       41
  Lines        3377     3377
=======================================
  Hits         2733     2733
  Misses        644      644

Impacted Files
Coverage Δ

bluegraph/backends/stellargraph/embed/embedders.py
97.36% <ø> (ø)

bluegraph/core/analyse/paths.py
85.27% <ø> (ø)

bluegraph/preprocess/generators.py
81.25% <ø> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0f51c49...ffd3fd2. Read the comment docs.


nixos/atticd: init module

Copied from https://github.com/zhaofengli/attic/blob/1b29816235b7573fca7f964709fd201e1a187024/nixos/atticd.nix and modified

Uses option helpers
Drop direct configFile setting
Set defaults for required chunking config
Added tests for local and s3 backends
Further service hardening

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

This is now ready. There is some further hardening that can be added upstream, and possibly the tests if it would be helpful to have these in the attic repo.

@ofborg build attic-client.passthru.tests


Can't destroy stack from command line if the stack was created from CI/CD

Hi,
I create a stack from CI/CD pipeline.
Then, after successful deployment I want to destroy the stack locally from infrastructure's directory:
$ ros-cdk destroy alibaba-cicd-poc
The following stack(s) will be destroyed(Only deployed stacks will be displayed).

Please confirm.(Y/N)
Y

As you can see, instead of stack's name, there are three empty lines printed out, and that's it.
Also, when I just print the available stacks, I see:
$ ros-cdk ls
alibaba-cicd-poc destroy

For this test I used the same credentials in CI/CD and locally.
My ros-cdk version is 1.0.11.

We have received suggestions and will fix this issue in the future.

We are considering adding a command line to generate the stack.info.json file based on the name of the resource stack.

ros-cdk-cli 1.0.15 is released. Tryros-cdk generate-stack-file to generqte stack.info.json.


feat: Add Bash completion for Homebrew aliases

Add Bash completion support for Homebrew aliases:
https://github.com/Homebrew/homebrew-aliases
Unfortunately I'm not familiar enough neither with Ruby, nor with Fish/Zsh 🤷🏻
Fixes https://github.com/Homebrew/homebrew-aliases/issues/91

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[x] ~Have you written new tests for your changes?~ Here's an example.

It somewhat exists: https://github.com/Homebrew/brew/blob/master/Library/Homebrew/test/completions_spec.rb#L303-L316

[x] Have you successfully run brew style with your changes locally?
[x] Have you successfully run brew typecheck with your changes locally?
[x] Have you successfully run brew tests with your changes locally?

Thanks so much for your first contribution!  You rock, @yermulnik!


idea: script that looks for files that can have @ts-strict added to them

script takes in a folder (or list of files) and recursively looks at each TS file
if the TS file doesn't have errors with strict mode turned on and doesn't have the //@ts-strict directive, the script would add //@ts-strict to the top of the file.

This might help for scenarios where //@ts-strict is available, but not everyone on the dev team knows about it or maybe has forgotten to use it, and also just to avoid the manual effort of trying to figure out which files are already strict compatible.
Along this same train of thought... another idea could be a pre-commit hook that checks to make sure new TS files have //@ts-strict and checks to see if existing ones can have //@ts-strict added to them.

Hi, we're working on an update which has a tool to do exactly that. Thanks for your idea, and stay tuned!


improvement: Add cross publish for Scala 3

This is very much a work in progress, but at least we are down to 11 failing tests.

This should be ready to review, the biggest changes are:

moving tests around for things not supported in Scala 3
changes to build.sbt, but most of it is minor
I needed a new SimpleTraverser since traversers are not yet supported, but it's simple enough

Quoasiquotes will be added later and maybe traversers also.

@tgodzik something about -skip-packages is failing: https://github.com/scalameta/scalameta/actions/runs/12203699094/job/34048231238
is this new?

It's an issue with scaladoc, let me check


import data from wakatime timeout

I am in Hong Kong. If i use api.wakatime.com, it will time out. But if I use wakatime.com, then everything works fine.

So can there be an option in docker-compose-deploy.yml for setting importing from which domain? Just like HAKA_WAKATIME_HOST: "wakatime.com"

Are you sure the problem is your location and not the amount of data you're expecting? Maybe the server is slow to respond and a second try will most likely fetch your data.
You can check that both wakatime.com & api.wakatime.com are in California, USA so the latency should be the same.  Or is api.wakatime.com blocked in Hong Kong?

Look at the screenshot I uploaded earlier. I did not set user credentials such as cookies and tokens. I just send an anonymous request. But the response time of the two domains is quite different.

You're right. It seems like the api.wakatime.com is only redirecting to wakatime.com/api on HTTP . This will work curl http://api.wakatime.com/v1/users/current/heartbeats, but it returns HTML instead of JSON.  Removing the /api path with HTTPS likecurl https://api.wakatime.com/v1/users/current/heartbeats also works but still no JSON.
I'll provide a variable to control this endpoint. Thanks for the suggestion.

@WankkoRee I pushed a quick fix that uses the correct endpoint (wakatime.com). In the future this will be configurable.

Thank you for your timely fix. I tried to import again and everything was working.


Can't make highlightOnHover work ?

Describe the bug
I have a Nextjs application using Mantine. I just tried mantine-datatable but can't make the highlight in hover option work.
To Reproduce
I tried using a very basic table  from the examples in my app:
export default function SubstituteOptionsTable({
  substituteOptions,
  eventForSubstitution,
}: {
  substituteOptions: SubstituteOptions;
  eventForSubstitution: CalendarEventIncludingAll;
}) {
  return (
    <DataTable
      columns={[{ accessor: 'name' }, { accessor: 'streetAddress' }, { accessor: 'city' }, { accessor: 'state' }]}
      highlightOnHover
      records={[
        {
          "id": "1323addd-a4ac-4dd2-8de2-6f934969a0f1",
          "name": "Feest, Bogan and Herzog",
          "streetAddress": "21716 Ratke Drive",
          "city": "Stromanport",
          "state": "WY",
          "missionStatement": "Innovate bricks-and-clicks metrics."
        },
        {
          "id": "0cf96f1c-62c9-4e3f-97b0-4a2e8fa2bf6b",
          "name": "Cummerata - Kuhlman",
          "streetAddress": "6389 Dicki Stream",
          "city": "South Gate",
          "state": "NH",
          "missionStatement": "Harness real-time channels."
        }]}
    />
  );
}

I paid attention to import the css too in layout.tsx:
import<EMAIL_ADDRESS>import<EMAIL_ADDRESS>import<EMAIL_ADDRESS>import<EMAIL_ADDRESS>import 'mantine-datatable/styles.layer.css';
import 'react-big-calendar/lib/css/react-big-calendar.css';

import React from 'react';
import { MantineProvider, ColorSchemeScript } from '@mantine/core';
import { Notifications } from '@mantine/notifications';
import { resolver, theme } from './theme';

export const metadata = {
  title: 'Bloom Care',
  description: 'The AI copilot for homecare',
};

export default function RootLayout({ children }: React.PropsWithChildren) {
  return (
    <html lang="en">
      <head>
        <ColorSchemeScript />
        <link rel="shortcut icon" href="/favicon.png" />
        <meta
          name="viewport"
          content="minimum-scale=1, initial-scale=1, width=device-width, user-scalable=no"
        />
      </head>
      <body>
        <MantineProvider theme={theme} cssVariablesResolver={resolver}>
          <Notifications position="top-center" />
          {children}
        </MantineProvider>
      </body>
    </html>
  );
}

I can't find what I could be doing wrong since I have done so few. I checked the doc multiple times. Is there anything I forgot?
Expected behavior
Having the option work.
Desktop (please complete the following information):

OS: MacOs 12.7.4
Browser Chrome Version 124.0.6367.61

I think it is a new issue with nextjs css chunking as I am getting 404 errors around this when in next dev. I'll investigate further:
GET /_next/static/css/app/react-big-calendar.css.map 404 in 12451ms
 GET /_next/static/chunks/app/(auth)/planning/YearsList.module.css.mjs.map 404 in 6085ms
 GET /_next/static/chunks/app/(auth)/Spotlight.module.css.mjs.map 404 in 11766ms
 GET /_next/static/chunks/app/Notifications.module.css.mjs.map 404 in 12090ms

I downgraded to next 14.1.3, the 404 are gone but I still don't have the highlights working 🤔 .

The documentation website itself is built on Next.js; I just bumped it to the latest version (14.2.3 at the moment) and there are no issues with it, as you can see.
Related to your highlightOnHover problem, perhaps it happens because you're importing the non-layered CSS version of Mantine packages and the layered CSS version for Mantine DataTable?
Either try with:
import<EMAIL_ADDRESS>import<EMAIL_ADDRESS>import<EMAIL_ADDRESS>import<EMAIL_ADDRESS>import 'mantine-datatable/styles.layer.css';

...or:
import<EMAIL_ADDRESS>import<EMAIL_ADDRESS>import<EMAIL_ADDRESS>import<EMAIL_ADDRESS>import 'mantine-datatable/styles.css';

...but do not mix them.
Let me know how it goes.

@laugri if you're importing the layered styles, make sure to also enforce their order, as explained in the styling docs page here.
Since this is something that periodically confuses people and generates issues and discussions from time to time, I'm 100% open to suggestions on how I could improve the docs. I'd like to hear your thoughts on this, @laugri and @vilola.

@icflorescu thanks for the prompt answer. Mixing layered and non-layered was the issue. My bad.
I should have payed more attention to the styling page. I can try to describe what made me not look correctly:

I had seen the Getting Started warning ("Very important The @mantine/core package styles must be applied before Mantine DataTable styles.).
Because I am not familiar with CSS layers, I didn't catch that the imports in the first examples use them.
For some reasons, on the styling page, I assumed the CSS layers part was another possible approach, not a mandatory part, and I ignored it.
When skimming through the page, I thought "well I am already using Mantine v7 so this difference stuff isn't for me".

Some ideas:

Maybe you could make the differences from v6 to v7 less prominent, in favor of just showing what needs to be done ?
Maybe merge the styling page into Getting Started so that it is unquestionably part of the setup.

Sorry if I am not being super helpful here, looking back there already were many warnings I ignored 🤷 .


max-w-wide wasn't set up in whitespace, but defined in definitions

@weotch don't know if this was intentional, but I had to set this up in whitespace.styl, seems like it should be there.

I know we've historically used max-w-wide, but what do you think of switching to like max-w-large or max-w-xl?  Since we're using suffixes like that for spacing too.  Like maybe we should have:

max-w-s
max-w-m
max-w-l
max-w-xl

Thoughts?


Add global search/replace to editor

It would be nice to have ability to search for anything (but, most important, names and maybe strings) inside the whole project or at the very least across text files (should be much easier to implement this). This would be very helpful for big projects and especially when working with third-party project. Having also a global replace feature would make renaming things easy.
Implementation thoughts

text-only version

filename filtering (e.g. "*.gd")
possibility to choose between open and all project files
search results can be presented in tree, like this (or even with more hierarchy - including functions):

script.gd

line xx: [line with search term highlighted]
line yy: [line with search term highlighted]

another_script.gd

..

possibility to choose which occurrences to replace

full version

highlight occurrences everywhere in ui (e.g. Inspector)
search area filter (e.g. only nodes or only signals)
search result window can be pretty much the same as text-only version, but also display type of search result
clicking on search result switches to appropriate item (e.g. clicking on node name would change to its scene and select node)

Yeah, I always alt tab to notepad ++ but having it inside the editor would be great. Nice idea!

upvoted this :)

Looks like a duplicate of #2592

Indeed.


Added support for enumerations and TypeValueCalc

Not quite done yet. I still want to improve the test coverage. But, given the size, I wanted to start the review process as well now that I am passing my initial test set.
This is a fairly big change.
In addition to the actual implementation, and some minor hooks throughout,
this also involved moving a fair amount of the DSOM functionality into
the factory classes.

Sorry, I missed your statement about not being done yet, so ignore my comments about dealing with TODO's, etc.
I haven't gotten through everything yet, but I've only noticed some small formatting things, so things are looking good so far.

Didn't realize I never gave a +1. I think all my comments have been addressed. This is a much needed addition.
+1 :+1:


Add title for entry list

:tada: This PR is included in version 2.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Library events refactor

This pull request introduces a breaking change and it will bump a major version of the library.
More granular events have been created to create flexibility:
onListen
This event is triggered when the listen method is called. It is useful if you only want to access the main Home Assistant elements only once.
instance.addEventListener('onListen', function({detail}) {
    /* detail:
    {
        HOME_ASSISTANT: {...},
        HOME_ASSISTANT_MAIN: {...},
        HA_DRAWER: {...},
        ...
    }
    */
});

The dispatched event is a [CustomEvent] and its detail property is an object containing the main Home Assistant DOM elements. All the properties and methods included in each element are Promises, so they are async and will be resolved when the element is ready to work with it.
onListen event elements
This is the list of the elements available inside the detail property of the onListen event:

Detail element
DOM element

HOME_ASSISTANT
home-assistant

HOME_ASSISTANT_MAIN
home-assistant-main

HA_DRAWER
ha-drawer

HA_SIDEBAR
ha-sidebar

PARTIAL_PANEL_RESOLVER
partial-panel-resolver

All the available elements contain an element property and the selector property:

Property or method
Description

element
Promise that resolves in the respective DOM element

selector
Object that allows one to query for elements using dot notation

onPanelLoad
This event is triggered when the listen method is called or when any panel is loaded.
instance.addEventListener('onPanelLoad', function({detail}) {
    /* detail:
    {
        HOME_ASSISTANT: {...},
        HOME_ASSISTANT_MAIN: {...},
        HA_DRAWER: {...},
        ...
    }
    */
});

The dispatched event is a [CustomEvent] and its detail property is an object containing the main Home Assistant DOM elements. All the properties and methods included in each element are Promises, so they are async and will be resolved when the element is ready to work with it.
onPanelLoad event elements
This is the list of the elements available inside the detail property of the onPanelLoad event:

Detail element
DOM element

HOME_ASSISTANT
home-assistant

HOME_ASSISTANT_MAIN
home-assistant-main

HA_DRAWER
ha-drawer

HA_SIDEBAR
ha-sidebar

PARTIAL_PANEL_RESOLVER
partial-panel-resolver

All the available elements contain an element property and the selector property:

Property or method
Description

element
Promise that resolves in the respective DOM element

selector
Object that allows one to query for elements using dot notation

onLovelacePanelLoad
This event is triggered when the listen method is called on a lovelace dashboard or when a lovelace dashboard is loaded.
instance.addEventListener('onLovelacePanelLoad', function({ detail }) {
    /* detail:
    {
        HOME_ASSISTANT: {...},
        HOME_ASSISTANT_MAIN: {...},
        HA_DRAWER: {...},
        ...
    }
    */
});

The dispatched event is a [CustomEvent] and its detail property is an object containing the main Home Assistant DOM elements. All the properties and methods included in each element are Promises, so they are async and will be resolved when the element is ready to work with it.
onLovelacePanelLoad event elements
This is the list of the elements available inside the detail property of the onLovelacePanelLoad event:

Detail element
DOM element

HOME_ASSISTANT
home-assistant

HOME_ASSISTANT_MAIN
home-assistant-main

HA_DRAWER
ha-drawer

HA_SIDEBAR
ha-sidebar

PARTIAL_PANEL_RESOLVER
partial-panel-resolver

HA_PANEL_LOVELACE
ha-panel-lovelace

HUI_ROOT
hui-root

HEADER
.header

HUI_VIEW
hui-view

All the available elements contain an element property and the selector property:

Property or method
Description

element
Promise that resolves in the respective DOM element

selector
Object that allows one to query for elements using dot notation

coverage: 99.522% (-0.5%) from 100.0%
when pulling 8ab36bcc25df1e20106ff002eb3c2c1531e258f8 on library_events_refactor
into 6aefc8b4975911730edbac410a323c676f0f42ac on master.


Consider adding eval overlays

As discussed in http://endlessparentheses.com/eval-result-overlays-in-emacs-lisp.html , it's really nice having the output of evaluating sexps shown inline, rather than in the minibuffer.

hmm, really? i've seen that in cider and rather dislike the "feature" (i
turned it off after a couple of days) so i'll need more votes or patches
:)

                                                                                I vote optional. -Dan

I don't like this thing too, but if it can be easily turned
off/on, I don't mind.  My understanding is that such a
feature (optional) will be accepted, it's just: someone who is
interested needs to implement it :-)

Great! Optional would work well I think.

we are moving the project to gitlab. so please, follow-up there as needed. sorry for the inconvenience!
http://gitlab.com/jaor/geiser/issues/175


Refactor returning clear functions from reactive primitives

Currently our event-listener package and primitives that use it internally (e.g. mouse and active-element) are are following such pattern for removing the listeners. Even timer and date packages does that in some primitives.
const clear = createEventListener(el, "click");
clear()

This removes the listeners, but there is no easy way for restoring the listeners. It will happen once the reactive sources change, for example the target or eventName signals.
const [el, setEl] = createSignal(ref);
const clear = createEventListener(el, "click");
clear()
// will restore listeners:
setEl(ref2)

First this is clunky to do, especially if we don't want to change the element.
And secondly this feels like an implicit behaviour, that can happen without us really planning it – the primitive stays reactive.
A possible solution:
Separate primitives into:

lower level primitive that is responsible only for: 1. attaching the event listeners 2. removing them onCleanup 3. returning the clean function

const clear = createEventListener(el, "click", (e) => {...})
clear()

higher level – reactive primitive, that wraps itself internally in an effect, allowing for accessor arguments, that will cause the listeners to be removed and attached on change. Doesn't return the clear function – has to wrapped in a createDisposable (#102) to be disposed early, because it is an effect.

const [target, setTarget] = createSignal(el);
createEventEffect(target, "click", (e) => {...});

// or disposable:
const clear = createDisposable(() => {
   createEventEffect(target, "click", (e) => {...});
})
clear()

(naming is bad, I know)
This refactor would need to be applied to all packages that share this pattern.

Another option: return createEventEffect already in a branch if it is reactive, which keeps clear on everything without the implicit restart behaviour:
const createEventEffect = (...) => {
  if (!reactive) return createEventListener(...);
  // if reactive, deopt and createBranch
  return createDisposable(() => { ... });
}

Which trades performance and implementation simplicity for a cleaner and simpler API. An advantage is it avoids createDisposable or createBranch; I mention both because with primitives that return an accessor:
let accessor!: SomethingType;
const clear = createDisposable(() => accessor = createSomething());
// vs
const [accessor, clear] = createBranch(dispose => [createSomething(), dispose]);

The latter is simpler for typescript since it allows inference, and also tuples are more familiar. However createDisposable is simpler for primitives that don't return an accessor. runWithSubRoot currently provides for both situations which avoids splitting the use case between two functions, but has the unfortunate downside of an inconsistent return value if you want to ignore the callback's return value, or a return value is sometimes undefined or null (note: this can be worked around https://playground.solidjs.com/?hash=-2033266374&version=1.3.13).

For me the primitives should do as little as possible.
All the reactive createEventListener should do is to react to changes to the reactive arguments. Being disposable should be out of it's concern. Besides how would the arguments be passed to createDisposable? – it allows the "owner dependencies" to be passed explicitly. Also most users don't care about disposing of event listener early, so adding that logic to the primitive would only bloat it for them.
As for the "smart return" of the createDisposable, I'm also not convinced. It would be more flexible – yes. But also similarly confusing as the first iteration. I prefer the current option as it is the most simple.


SDK Release 2.3.1 PR

Codecov Report
Attention: Patch coverage is 11.29032% with 275 lines in your changes are missing coverage. Please review.

Project coverage is 22.59%. Comparing base (a133c1d) to head (382656d).
Report is 3 commits behind head on main.

Files
Patch %
Lines

lib/iden3comm/authenticate.dart
0.00%
78 Missing :warning:

...omain/use_cases/get_iden3comm_claims_use_case.dart
0.00%
56 Missing :warning:

...common/response/problem_report_message_entity.dart
0.00%
36 Missing :warning:

..._multi_query_10/witness_linked_multi_query_10.dart
0.00%
35 Missing :warning:

lib/proof/libs/polygonidcore/pidcore_proof.dart
0.00%
18 Missing :warning:

...domain/use_cases/profile/add_profile_use_case.dart
64.28%
15 Missing :warning:

...b/proof/data/data_sources/witness_data_source.dart
0.00%
9 Missing :warning:

...ommon/libs/polygonidcore/native_polygonidcore.dart
0.00%
6 Missing :warning:

...ta/data_sources/lib_pidcore_proof_data_source.dart
0.00%
5 Missing :warning:

...query_10/native_witness_linked_multi_query_10.dart
0.00%
5 Missing :warning:

... and 8 more

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #412      +/-   ##
==========================================
- Coverage   22.91%   22.59%   -0.33%
==========================================
  Files         312      313       +1
  Lines        8649     8791     +142
==========================================
+ Hits         1982     1986       +4
- Misses       6667     6805     +138

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


AIY Case

Hello,
Can someone explain me where to get a new AIY cardboard Case ? a new one or only the opensource drawings so that I'll print them by myself.
best regards. julien

Reach out to<EMAIL_ADDRESS>for your requirement.


npm WARN deprecated on Verifying deployment

` [DOMAIN] x Verifying deployment: FAILED
-----------------------------------STDERR-----------------------------------
 run:
npm WARN deprecated
npm WARN deprecated   npm -g install npm@latest
npm WARN deprecated
npm WARN deprecated (Depending on how Node.js was installed on your system, you
npm WARN deprecated may need to prefix the preceding commands with `sudo`, or if
npm WARN deprecated on Windows, run them from an Administrator prompt.)
npm WARN deprecated
npm WARN deprecated If you're running the version of npm bundled with
npm WARN deprecated Node.js 0.10 LTS, be aware that the next version of 0.10 LTS
npm WARN deprecated will be bundled with a version of npm@2, which has some small
npm WARN deprecated backwards-incompatible changes made to `npm run-script` and
npm WARN deprecated semver behavior.
npm WARN package.json<EMAIL_ADDRESS>No description
npm WARN package.json<EMAIL_ADDRESS>No repository field.
npm WARN package.json<EMAIL_ADDRESS>No README data

><EMAIL_ADDRESS>install /bundle/bundle/programs/server/node_modules/fibers
> node build.js || nodejs build.js

-----------------------------------STDOUT-----------------------------------

To see more logs type 'mup logs --tail=50'

----------------------------------------------------------------------------`

I could provide more information about the error if any one has an idea about it. I'm still having the same error. Any idea?

+1:
Having the same issue, its failing on deploy, I have set  deployCheckWaitTime to 60.
Issue is:
2016-04-01T01:24:49.122459700Z /bundle/bundle/programs/server/node_modules/fibers/fibers.js:16
2016-04-01T01:24:49.122799400Z 	throw new Error('`'+ modPath+ '.node` is missing. Try reinstalling `node-fibe

+1

I moved to kadirahq meteor-up.
It works with meteor 1.3
On Sunday, 3 April 2016, cafe4it<EMAIL_ADDRESS>wrote:

+1
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/arunoda/meteor-up/issues/933#issuecomment-204770505

I read this on kadirahq/meteor-up and change time for my current arunoda/meteor-up to 60sec. And it worked! Not sure if it was actually what fixed it or something else happened.
FAQ

Q) I get an deploy verification error with logs like below (Similar to issue 88)

Verifying Deployment: FAILED

Error:
-----------------------------------STDERR-----------------------------------
 run:
npm WARN deprecated
npm WARN deprecated   npm -g install npm@latest
npm WARN deprecated

A) Try increasing the value of deployCheckWaitTime field in mup.js file.

Moving to solved it for me: https://github.com/kadirahq/meteor-up
Though I had to remove the old mup symlink in ~/.nvm folder


Update v0.6.0 release code

v0.6.0 update release code
see commits for details about what will change

sure (am I talking to myself!?)


Three Geometry is deprecated and removed port to BufferGeometry

Hey,
any plans to support THREEjs BufferGeometry?

Wondering this too

Try this branch https://github.com/juniorxsound/Depthkit.js/tree/dependabot/npm_and_yarn/three-0.137.0

Hi 👋 thanks for opening this issue.
Totally agree we should migrate over to BufferGeometry - I currently have no bandwidth to do that but if anyone wants to open a PR i'd be happy to review and provide some feedback

Just cracked it here, hopefully can be merged, just need to build depthkit.min,js because I wasn't sure how to do that but I rebuilt depthkit.js in build folder https://github.com/juniorxsound/Depthkit.js/pull/30

@ROBYER1 @arpu this has now been merged 🙏

Thanks! I was going to look into fully updating to the very latest Three.js but hit some other issues there, this works good for what I needed though!

I forgot to add, I got DepthKit.js running in Needle which has support for desktop/AR/MR/VR
Needle Example:
https://outgoing-exuberant-cheshire.glitch.me/
More about Needle:
https://needle.tools/