Massive rancher-agent logs filled with repeated unable to get usage from thin pool device

Rancher Version:
1.1.0
Docker Version:
1.10.3
OS and where are the hosts located? (cloud, bare metal, etc):
RHEL 7.2 / AWS
Setup Details: (single node rancher vs. HA rancher, internal DB vs. external DB)
HA Rancher (3 nodes), external Db
Environment Type: (Cattle/Kubernetes/Swarm/Mesos)
Cattle
Steps to Reproduce:
OOTB install/config of Rancher so no special use case instructions.
The docker install uses the default RHEL script based from the Docker docs: https://docs.docker.com/engine/installation/linux/rhel/
docker demon is configured:
-H fd:// -H tcp://<IP_ADDRESS>:2375 -H unix:///var/run/docker.sock --graph=/data/docker ...
/data is the mouint point for atached EBS of 100GB
Docker info returns (note: the devicemapper storage driver is using 'loop-back'. We are aware of the warning advice around use for production (this is a non production environment):
[ec2-user@10-64-3-158 ~]$ docker info
Containers: 11
Running: 8
Paused: 0
Stopped: 3
Images: 12
Server Version: 1.10.3
Storage Driver: devicemapper
Pool Name: docker-202:160-5767172-pool
Pool Blocksize: 65.54 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 4.205 GB
Data Space Total: 107.4 GB
Data Space Available: 99.78 GB
Metadata Space Used: 7.037 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.14 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /data/docker/devicemapper/devicemapper/data
WARNING: Usage of loopback devices is strongly discouraged for production use. Either use --storage-opt dm.thinpooldev or use --storage-opt dm.no_warn_on_loop_devices=true to suppress this warning.
Metadata loop file: /data/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.107-RHEL7 (2015-12-01)
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
Volume: local
Network: host bridge null
Kernel Version: 3.10.0-327.18.2.el7.x86_64
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 7.389 GiB
Name: 10-64-3-158.avivaaws.com
ID: HMJO:PGNN:3PGU:URHH:2LKZ:KKWB:HWSE:UUAG:2WQY:LM65:U7OE:U3PR
Http Proxy: http://uknp-obproxy.avivaaws.com:80
Https Proxy: http://uknp-obproxy.avivaaws.com:80
No Proxy: localhost,<IP_ADDRESS>,10.*,docker-registry-private-digital.avivaaws.com,docker-registry-mirror-digital.avivaaws.com,.via.novonet,.avivagroup.com,.avivaaws.com,.ecs.com,<IP_ADDRESS>
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Results:
Thousands of repeated messages about thin pool fs usage (sample below).
This happens on all Rancher HA servers AND on all hosts.
I have attached a zip file containing the following:

var-log-rancher-agent.log (/var/log/rancher/agent.log) from one of the Rancher HA servers
rancher-agent-cointainer-server.log (truncated output from the command docker logs rancher-agent >rancher-agent.log 2>&1) taken from the same Rancher HA server in (1)
rancher-agent-host.log (truncated output from the command docker logs rancher-agent >rancher-agent.log 2>&1) from one of the registered Hosts.

(2) and (3) output have been truncated because clearly the logs are massive. I stopped the output from the command above when the file size reached 1GB !!
E0708 15:56:27.759654   26468 thin_pool_watcher.go:65] encountered error refreshing thin pool watcher: error performing thin_ls on metadata device /dev/loop1: Error running command thin_ls --no-headers -m -o DEV,EXCLUSIVE_BYTES /dev/loop1: exec: "thin_ls": executable file not found in $PATH
output:
E0708 15:56:28.355016   26468 handler.go:278] unable to get fs usage from thin pool for device 128: no cached value for usage of device 128
E0708 15:56:29.823608   26468 handler.go:278] unable to get fs usage from thin pool for device 128: no cached value for usage of device 128
E0708 15:56:31.073218   26468 handler.go:278] unable to get fs usage from thin pool for device 128: no cached value for usage of device 128
E0708 15:56:32.829584   26468 handler.go:278] unable to get fs usage from thin pool for device 128: no cached value for usage of device 128
E0708 15:56:34.492505   26468 handler.go:278] unable to get fs usage from thin pool for device 128: no cached value for usage of device 128
E0708 15:56:36.007645   26468 handler.go:278] unable to get fs usage from thin pool for device 128: no cached value for usage of device 128
time="2016-07-08T14:56:36Z" level="info" msg="Processing event: &docker.APIEvents{Status:"start", ID:"9c33b8f0e8cb296f6f03c0291a6f4933c733f4b479ee1a4367e8d86bec9d6964", From:"rancher/agent-instance:v0.8.3", Time:1467989796}"
time="2016-07-08T14:56:36Z" level="info" msg="Assigning IP [<IP_ADDRESS>/16], ContainerId [9c33b8f0e8cb296f6f03c0291a6f4933c733f4b479ee1a4367e8d86bec9d6964], Pid [26989]"
time="2016-07-08T14:56:36Z" level="info" msg="Processing event: &docker.APIEvents{Status:"start", ID:"9c33b8f0e8cb296f6f03c0291a6f4933c733f4b479ee1a4367e8d86bec9d6964", From:"-simulated-", Time:0}"
E0708 15:56:37.215847   26468 handler.go:278] unable to get fs usage from thin pool for device 135: no cached value for usage of device 135
E0708 15:56:37.462914   26468 handler.go:278] unable to get fs usage from thin pool for device 128: no cached value for usage of device 128
E0708 15:56:38.298222   26468 handler.go:278] unable to get fs usage from thin pool for device 135: no cached value for usage of device 135
E0708 15:56:38.729387   26468 handler.go:278] unable to get fs usage from thin pool for device 128: no cached value for usage of device 128
E0708 15:56:39.828470   26468 handler.go:278] unable to get fs usage from thin pool for device 128: no cached value for usage of device 128
E0708 15:56:39.920311   26468 handler.go:278] unable to get fs usage from thin pool for device 135: no cached value for usage of device 135
E0708 15:56:41.551592   26468 handler.go:278] unable to get fs usage from thin pool for device 135: no cached value for usage of device 135
E0708 15:56:41.772358   26468 handler.go:278] unable to get fs usage from thin pool for device 128: no cached value for usage of device 128
I0708 15:56:43.952712   26468 thin_pool_watcher.go:117] reserving metadata snapshot for thin-pool docker-202:160-5767172-pool
E0708 15:56:43.994912   26468 handler.go:278] unable to get fs usage from thin pool for device 135: no cached value for usage of device 135
E0708 15:56:43.995018   26468 thin_pool_watcher.go:65] encountered error refreshing thin pool watcher: error performing thin_ls on metadata device /dev/loop1: Error running command thin_ls --no-headers -m -o DEV,EXCLUSIVE_BYTES /dev/loop1: exec: "thin_ls": executable file not found in $PATH
output:
Expected:
A MUCH smaller log for the rancher-agent container
aviva-rancher-agent-logs.zip

I can confirm that after configuring the LVM thinpool storage using the scrip provided by Redhat, the rancher-agent messages appear to have ceased. I will continue to monitor, and if this remains the case I will close the ticket.

@goffinf can you point me at that script?

Hey Craig,
sure. The script I'm referring to of course is the docker-storage-setup that comes with the RHEL docker binary install (rather than the default install from docker). As I'm sure you are aware Redhat is very picky about the details and in my experience it isn't possible to successfully configure the devicemapper LVM thinpool storage unless you use both the docker binary from Redhat and the setup script (attached). Trying to do otherwise typically just results in the storage setup script hanging and the meta and data pools created utterly unusable.
Using the default (loopback) storage driver config is clearly not ideal and on RHEL at least results in the proliferation of error messages outlined above from the rancher-agent container. Configuring devicemapper thinpool remedies that.
However, there's no free lunch here. I would say I am a bit unhappy being locked in to a vendor's roadmap for docker but the reality is that at present this is the only sanctioned distro at the org that I work for.
This ticket came about following a different rancher-agent problem which I've raised separately:-
https://github.com/rancher/rancher/issues/5528
Jul 21 16:34:47 10-64-13-250 docker: time="2016-07-21T16:34:47.329682223+01:00" level=error msg="Handler for GET /v1.22/containers/rancher-ha-agent/json returned error: No such container: rancher-ha-agent"
Jul 21 16:34:52 10-64-13-250 docker: time="2016-07-21T16:34:52.553092835+01:00" level=error msg="Handler for GET
HTHs
Fraser
docker-storage-setup.zip

Thanks for the info @goffinf. I was aware of RHEL's pickiness, but not of the script, as I typically don't run on RHEL. At any rate, I was actually asking about the script on behalf of a user that was experiencing the same problem.  But I've now realized that that user is you. :-)

Hehe. Would still be good to understand why the rancher-agent reports this configuration difference, and indeed quite so vociferously ! Using the loopback device isn't really an error as such and, whilst I can rotate the logs, they quickly become completely full of this message which hides other important output.

It is actually cadvisor, the third party stats gathering/reporting tool we use which is logging that error. It looks like it was relatively recently reported here:
https://github.com/google/cadvisor/issues/1306
and following the issue trail to the ultimate PR, a possible fix was merged in June: https://github.com/google/cadvisor/pull/1327.
So, it may be time for us to look into updating cadvisor again.
So that we can test a newer version of cadvisor, what would the steps to reproduce be @goffinf? Basically, just run RHEL docker on a RHEL vm, but without running the storage setup script?

Yes that approach would seem to be a close enough approximation of my environment. I am running an AWS instance with a specifically hardened CIS based AMI build, but there is no evidence to suggest any of that would effect these results. I can send you the very specific steps that form this part of the AMI build if that would help, although they are taken pretty much verbatim from the Redhat Openshift docker install docs. I would be more that happy to test a revised version of the agent container as well if you want. I am in regular contact with your UK colleagues (Chris Urwin and Simon Robinson) so they could easily coordinate testing with us (Aviva - we are a large financial services organisation).
Regards
Fraser.

Looks like the fix made it into a pre-release of cadvisor:
https://github.com/google/cadvisor/releases/tag/v0.23.4

To clarify what I said earlier. To reproduce you just need a to follow a standard docker install (per the docker docs) on RHEL, specifically NOT using the docker binary from Redhat, and leaving the default devicemapper config as loopback. On site I use install from a local RPM to ensure that the vagaries of the Internet do not impact our internal build process, but that is likely not important.
I'll check if the rancher-agent (via cadvisor) messages also appear for a local Centos VM in case that makes it easier for you to test (rather than have to provide a valid Redhat subscription)
The instructions from the Openshift docs I was referring are of course how to configure the thinpool device to work with this distro (so most likely you don't need those).

@goffinf I just repro'd on a local centos vm

Was able to resolve the issue with the above PR. This'll go into our next release.

Thx Craig. Do you mean the next point release of Rancher as a whole (1.1.1 ?) or do you release the rancher-agent separately (obviously I'm keen to upgrade ASAP)

@goffinf this just missed our release yesterday (Release v1.2.0-pre1). Next one (pre2) will be in two weeks. In the meantime, I could give you a no garauntees version that you could point your current rancher deployment at, if that interests you.

@goffinf Ok, here is the updated cadvisorr. Again, this hasn't been through all our QA yet and won't until our next release. So try at your own risk, but it has worked in my own testing.
https://github.com/rancher/cadvisor-package/releases/download/v0.23.4/cadvisor.tar.gz
You'll want to update the agent.package.cadvisor.url setting. You can do this through the browser or via curl. To do it via browser, go to http://:8080/v1/activesettings/1as!agent.package.cadvisor.url, click edit, and update the value to https://github.com/rancher/cadvisor-package/releases/download/v0.23.4/cadvisor.tar.gz
After you set the setting, it looks like you'll have to restart the rancher-agent containers on your hosts for it to take affect. Or it may happen after some amount of time on my own, but I restarted to ensure it happened immediately.
FYI, the release will have the new version baked in, you won't have to set this setting if you wait for the release.

Thx @cjellick, I might give this a go in a sandpit Rancher environment. Working for a relatively conservative org it might be difficult for me to get approval for a 'pre' release version in our prod environment, so I'm a bit stuck between a rock and a hard place ... but that's my problem, you've done your part.
I appreciate your attention for this one. .... Now if you could just sort out this related one too ;-) ... https://github.com/rancher/rancher/issues/5528

@goffinf I had a feeling pulling the pre release might be a stretch, just wanted to get the option out there.

Tested with rancher-server version  - v1.2.0-pre3-rc1.
We are still getting - cAdvisor version 0.23.2
root@sangeev120pre3rc1-10acre-1:/var/lib/cattle/bin# ./cadvisor --version
cAdvisor version 0.23.2 ()

@sangeethah Please re-test whenever v1.2.0-pre3-rc2 is created.

Tested with v1.2.0-pre3-rc3. The message "unable to get fs usage from thin pool for device" is not seen any more.
The cadvisor version is below:
root@ip-172-31-18-38:/var/lib/cattle/bin# ./cadvisor --version
cAdvisor version 0.23.4 ()


I would like to know, how i can make the script a bit more interactive & check status of power before flipping it to the other state. I cannot seem to make it show power status bol of 1 or 0 but using the smart life app it displays the status just fine so my bulbs are capable of providing that data.
So to clarify I have got two 432mhz switches that my rpi is listening to. i would like to assign them to the power flip flop i was asking about.
At the moment it works using a bash script. It monitors the exec binary that prints a "signal received" msg. and that in turn triggers my two independent simple py scripts
So how do i add it all into one python script that can also control a group of lights.
I hope this is possible to someone with greater knowledge than me.
Thank you in advance if you decide to help.

I think this was answered in the other issue thread #25 with something like this:
if(data['dps']['20'] == True):
    print("its on Turning off")
    d.turn_off()
else:
    print("its off Turing on")
    d.turn_on()

I think this was answered in the other issue thread #25 with something like this:
if(data['dps']['20'] == True):
    print("its on Turning off")
    d.turn_off()
else:
    print("its off Turing on")
    d.turn_on()


RunUAT.sh doesn't produce a package

I'm trying to build CesiumForUnreal on Arch Linux for Unreal Engine 5 according to the documentation: https://github.com/CesiumGS/cesium-unreal/blob/ue4-main/Documentation/developer-setup-linux.md
(sidenote: the directory $UNREAL_ENGINE_DIR/Engine/Source/ThirdParty/Linux/LibCxx doesn't exist, I used
$UNREAL_ENGINE_DIR/Engine/Source/ThirdParty/Unix/LibCxx instead)
The compilation succeeded but now I'm stuck at the packaging step described here: https://github.com/CesiumGS/cesium-unreal/blob/ue4-main/Documentation/packaging-guide.md
The $UNREAL_ENGINE_DIR/Engine/Build/BatchFiles/RunUAT.sh command just doesn't produce any output.
This is all I get:
Running AutomationTool...
Fixing inconsistent case in filenames.
Setting up Mono
Setting up bundled DotNet SDK
AutomationTool.dll is up to date
Start UAT Interactively: ./AutomationTool BuildPlugin -Plugin=/home/vidar/dev/cesium-unreal-samples/Plugins/cesium-unreal/CesiumForUnreal.uplugin -Package=/home/vidar/dev/packages/CesiumForUnreal -CreateSubFolder -TargetPlatforms=Linux
But the dev/packages folder stays empty. Am I missing something?
Addendum: I also tried to check out the ue5-main branch, got it to compile alright but the outcome is the same as above: the RunUAT.sh script doesn't produce a package.

For the sake of completeness: I tried installing the release version of the plugin  (https://github.com/CesiumGS/cesium-unreal/releases/tag/v1.16.2-ue5)
But then I always get the dreaded "Missing Modules" error message ("Engine modules cannot be compiled at runtime. please build through your IDE.")

I'm glad I'm not the only one having issues running Cesium for UE5 on Linux. I've tested this on Ubuntu 20.04 as well as Ubuntu 22.04 and I'm not able to run the release version of the plugin either. (Same "Engine modules cannot be compiled at runtime..." error).
I tried building the plugin using those same guides but I'm also running into issues on the RunUAT. For me, script fails with the following errors:
Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/NOTICE.md = 10 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/NOTICE.md = 1523 ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/NOTICE.md to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/NOTICE.md Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/linux/Debug-x64/libSDL2-2.0.so.1 = 21 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/linux/Debug-x64/libSDL2-2.0.so.1 = 132 ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/linux/Debug-x64/libSDL2-2.0.so.1 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/linux/Debug-x64/libSDL2-2.0.so.1 Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Debug/SDL2.framework/SDL2 = 21 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Debug/SDL2.framework/SDL2 = 132 ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Debug/SDL2.framework/SDL2 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Debug/SDL2.framework/SDL2 Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 = 21 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 = 132 ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 23 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 130 ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/NOTICE.md to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/NOTICE.md        (see /home/nathan/Library/Logs/Unreal Engine/LocalBuildLogs/Log.txt for full exception trace) AutomationTool executed for 0h 1m 32s AutomationTool exiting with ExitCode=1 (Error_Unknown)
Files do appear in my dev/packages, but copying it to my UE5 results in the same missing modules error.

Hi folks, a little background here...
Until recently, Epic didn't provide official Linux binaries, which made it (nearly?) impossible to provide pre-built Linux Editor binaries for our plugin that a self-built engine would accept as an Engine plugin. However, Epic did provide the necessary binaries for packaging Linux games from Windows or macOS, so we did the same. When you installed Cesium for Unreal, either via the Epic Launcher or via our GitHub releases page, you would get binaries for packaging Linux games, but not for running Cesium for Unreal in the Editor on Linux. If you wanted to do this, you would have to build the plugin yourself.
Two things have changed recently:

Epic has started releasing official Linux builds of Unreal Engine.

So now it is possible for us to produce the necessary binaries to run Cesium for Unreal in the Editor on Linux. But this is a significant change to our CI system, and we haven't had a chance to set it up yet.

Due to a problem (on Epic's side as far as we can tell), Cesium for Unreal installed from the Epic Launcher no longer includes any Linux binaries.

Even packaging a game from Windows or macOS no longer works. We're in contact with Epic's support team, and they've escalated it to the development team, but so far no word on this.
You can work around this by installing the plugin from our Releases page on GitHub instead of from the Epic Launcher. This still will not allow you to run Cesium for Unreal in the Editor on a real Linux system, though.
We don't regularly develop or test with it (even though most other teams at Cesium prefer Linux), because, until recently, Linux was only barely supported as a development system. So I can't promise that the instructions are up-to-date, nor can I even promise it works at all. There's nothing fundamentally stopping it from working, though, it just may need some small tweaks.
So if you're using Linux, please share what you find, open pull requests to fix what's broken, etc. Once we get a Linux CI pipeline set up, we'll produce pre-built binaries and be confident they work. But in the meantime, you're on the bleeding edge. Do make sure you're using the ue5-main branch if you're using UE5, though.
As for the specific problems above...
@widarr:

sidenote: the directory $UNREAL_ENGINE_DIR/Engine/Source/ThirdParty/Linux/LibCxx doesn't exist, I used
$UNREAL_ENGINE_DIR/Engine/Source/ThirdParty/Unix/LibCxx instead

Quite right! We would definitely appreciate a pull request to fix this documentation error.

But the dev/packages folder stays empty. Am I missing something?

Very strange. Is the process crashing maybe? See if you can find an additional log. e.g. Nathan's was in /home/nathan/Library/Logs/Unreal Engine/LocalBuildLogs/Log.txt.
@Nathan127

I tried building the plugin using those same guides but I'm also running into issues on the RunUAT. For me, script fails with the following errors:

It may sound silly, but the first thing I'd check is that you're not out of disk space! Or have some kind of permission errors. Delete the existing packages folder, maybe. "Size Mismatch" is a very strange error, and I can't think why that would happen if your file system is working correctly. Certainly the Cesium for Unreal plugin isn't checking any sizes itself.

Hello @kring! Thanks for the explanation on the situation with Linux. It's surprising to hear that Epic took this long to release official binaries considered how long UE5 has been out, but I'm thankful they are out now. I realize Linux development has a lower priority, but do you have idea when it's CI pipeline will be up after you resolve those other issues? I know it still might not be any time soon.
On to my issue, I've tried this install on three different Ubuntu machines at this point, so I don't think it's a file system or permissions issue. And for a sanity check, I did double check that I have plenty of space on my disks. I did notice that all of those errors I posted previously involve something called 'KTX-Software', is it possible there is a Linux specific bug with this dependency?

Hello @kring! Thanks for the explanation on the situation with Linux. It's surprising to hear that Epic took this long to release official binaries considered how long UE5 has been out, but I'm thankful they are out now. I realize Linux development has a lower priority, but do you have idea when it's CI pipeline will be up after you resolve those other issues? I know it still might not be any time soon.
On to my issue, I've tried this install on three different Ubuntu machines at this point, so I don't think it's a file system or permissions issue. And for a sanity check, I did double check that I have plenty of space on my disks. I did notice that all of those errors I posted previously involve something called 'KTX-Software', is it possible there is a Linux specific bug with this dependency?

do you have idea when it's CI pipeline will be up after you resolve those other issues?

Sorry, I don't have an estimate for when it will be at the moment.

I did notice that all of those errors I posted previously involve something called 'KTX-Software', is it possible there is a Linux specific bug with this dependency?

Aah I think I might have an idea what's going wrong, now that you mention it. The KTX-Software module installs some of its bits via "git-lfs". If you don't have git-lfs installed, it won't work. There are some more details here:
https://github.com/CesiumGS/cesium-unreal/issues/852

I gave that a try, installing git-lfs through their documentation and making sure it was enabled. After running RunUAT, I got a new error of failing to copy due to date mismatches? There was some tips in the KTX-Software repo readme that I tried but no luck there. Here's the bottom errors from the RunAUT, but it seems like more of the same errors with KTX-Software.
Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 23 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 40656
Date mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 = 9/2/2022 5:38:09 PM to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 = 9/2/2022 5:38:11 PM
ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2
Date mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 9/2/2022 5:38:09 PM to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 9/2/2022 5:38:12 PM
ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi
ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/NOTICE.md to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/NOTICE.md
       (see /home/nathan/Library/Logs/Unreal Engine/LocalBuildLogs/Log.txt for full exception trace)
AutomationTool executed for 0h 1m 52s
AutomationTool exiting with ExitCode=1 (Error_Unknown)

I'm not sure where to go from here. I appreciate the troubleshooting tips, let me know if there's something else I can try.

@Nathan127 after you get git-lfs set up, you'll need to re-clone cesium-unreal / cesium-native / KTX-Software. There's probably a command to just update the lfs files without recloning, but I don't know what it is offhand.

I've gotten into the habit of wiping my dev folder on each build attempt, but just to be safe I wiped it and started again, making sure git lfs was enabled first. Unfortunately I'm still running into the RunUAT errors and still get the missing modules error when attempting to launch. I put the full console output into a pastebin, just in case it provides any insights.
Console Log: https://pastebin.com/fn0Xm3Kh
@kring Let me know if there's anything else I should try doing, I'm pretty stumped with this one.

@Nathan127 I finally got a chance to try it out on my own Linux system, and initially ran into the same problem you did. The problem seems to be that the Unreal Build Tool can't cope with the symlinks in the KTX-Software submodule. Fortunately, that directory isn't needed at all once cesium-native is built and installed, so there's an easy workaround. After you run:
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="unreal-linux-toolchain.cmake" -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --target install

Delete the entire cesium-unreal/extern directory:
cd ..
rm -rf extern

(or alternatively, move it somewhere else, so you can get it back easily if you need to and don't need to rebuild everything)
Then continue building the plugin as in the instructions:
cd $UNREAL_ENGINE_DIR/Engine/Build/BatchFiles
./RunUAT.sh BuildPlugin -Plugin="$CESIUM_FOR_UNREAL_DIR/CesiumForUnreal.uplugin" -Package="$CESIUM_FOR_UNREAL_DIR/../packages/CesiumForUnreal" -CreateSubFolder -TargetPlatforms=Linux

That seems to work for me. Unreal still complained about the plugin being unbuilt (even though I had just built it with the same engine version :shrug:), but when I let it build it everything worked fine. Let me know if it works for you, too.

That worked! Didn't have to rebuild a second time, but I now have Cesium working on my Ubuntu 20.05 for UE5. Thank you so much for your help @kring! I'll look into making a PR to update the ue5 linux documentation for this.

Hmm, I had problems with the Debug build, but the Release compiled and installed (doesn't launch the sample project yet).  You get no terminal output when you run ./RunUAT.sh ?

I did try to build the Release build.
The output I get from RunUAT.sh is still the same I posted above:
Running AutomationTool...
Fixing inconsistent case in filenames.
Setting up Mono
Setting up bundled DotNet SDK
AutomationTool.dll is up to date
Start UAT Interactively: ./AutomationTool BuildPlugin -Plugin=/home/vidar/dev/cesium-unreal-samples/Plugins/cesium-unreal/CesiumForUnreal.uplugin -Package=/home/vidar/dev/packages/CesiumForUnreal -CreateSubFolder -TargetPlatforms=Linux
that is really all.

It looks like your path in -Plugin is different, (not using $CESIUM_FOR_UNREAL_DIR?)
maybe double check this property in your terminal
export CESIUM_FOR_UNREAL_DIR=~/dev/cesium-unreal
my "Start UAT Interactively: . . ." :
Start UAT Interactively: ./AutomationTool BuildPlugin -Plugin=/home/albright/dev/cesium-unreal/CesiumForUnreal.uplugin -Package=/home/albright/dev/cesium-unreal/../packages/CesiumForUnreal -CreateSubFolder -TargetPlatforms=Linux
Your path is pointing under
~/dev/cesium-unreal-samples/Plugins/cesium-unreal
not:
~/dev/cesium-unreal
Worth a try . . .

Hopefully this is all resolved now that we include official Linux binaries for UE 5.2. Post to the community forum if you're still having trouble.


Fully move away from Python

This branch has a couple of changes:

Removes all Python files
Moves contents of the js/ folder to the root
Updates documentation accordingly
Stops tracking output/ folder

I hope that's helpful

So, I'm not going to remove the Python files. The Python implementation is the one I will be using. I also want output to be tracked, as this is a proof of concept repo. Output needs to be there so people can see concrete examples of what it does.
So, thanks for the PR, but I'm going to close this since this doesn't match what this repo is for.

Oh, fair enough, sorry for the noise.

No problem! I did make this commit https://github.com/eeue56/elm-static-site/commit/76c0fff1621ba98c4db86dab59c97e32b9cafd2e since your PR highlighted that the deps were missing!


ADU esp32

Please provide us with the following information:

I don't succeed to do device updates on the esp32-c3. The device reboots when it tries to perform an update.
Last log message: I (46686) AZ IOT:  xStatus: 0
I have tried to search for the bug but I had to go down several layers.
I got stuck in the function sendHttpData at the pTransport->send( pTransport->pNetworkContext,....)  function call.
The latest released code in the main branch already crashes after making a connection.
Last log: I (48854) AZ IOT: Successfully acquired IoT Hub name and Device ID
.

This issue is for a: (mark with an x)
- [ x] bug report -> please search issues before submitting
- [ ] feature request
- [ ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Minimal steps to reproduce

Any log messages given by the failure

Expected/desired behavior

OS and Version?

Windows 7, 8 or 10. Linux (which distribution). macOS (Yosemite? El Capitan? Sierra?)

Linux Mint
Versions

ESP-IDF v4.4.3-159-g54dcccc1f6
Mention any other details that might be useful

Thanks! We'll be in touch soon.

Hey @Quinnvanderschaar2
I think this is related to this issue which I opened.
https://github.com/Azure-Samples/iot-middleware-freertos-samples/issues/305
We just need to update the transport usage.
Do you mind trying the ADU sample and let us know if you still hit the same issue? It should contain the fix. Note that you don't to use the Device Update feature to run the sample. It should send telemetry.

Thanks for the fast response, I already tried that before. Unfortunately these adjustments makes it worse. This results in that the devices crashes after the moment a connection was made to the iot hub. It doesn't even got the chance to do the update sequence.
The last log is: I (50216) AZ IOT: Successfully acquired IoT Hub name and Device ID
CORRUPT HEAP: multi_heap.c:108 detected at 0x3fc9efc4
I have no problems with sending telemetry in general. The examples for that works overall fine, but I could not get any examples for the ADU working. I have tried the example in the main branch and the feature/iot-adu branch. Is there a branch available that has a stable version ( esp-idf version is not important for me) ?

Hey @Quinnvanderschaar2
Firstly, the feature/iot-adu branch here and in the middleware source code was merged to main so that is stale now. I have now deleted it and main should be what you are working off of right now.

I have no problems with sending telemetry in general. The examples for that works overall fine

Are you saying that you are aren't having any issues with the esp32 sample but you are with the ADU sample?

Hi,
I have tried it now and the adu works now for single devices. Nevertheless, if I use de DPS it crashes now with the following error:
I (38397) AZ IOT: Successfully acquired IoT Hub name and Device ID
CORRUPT HEAP: multi_heap.c:108 detected at 0x3fc9e2c4

@danewalton could we have a call around this? Seeing that this is blocking our production deployment

@Quinnvanderschaar2, @XavierGeerinck can you please share the ADU agent and DPS logs from the device that has a repro so we can investigate on our side? It would be great if we can jump on a call this week too. Let me know what your schedule looks like

@Quinnvanderschaar2 I think this is resolved with the latest code changes. I'm going to close this for now but please let us know if you would like it reopened.


Ludo Developer Grant submission

Ludo
Grant category

Developer tools / services

Description
Ludo - The Search Engine of the Web3 space
Ludo provides discoverability to web3 with AI-driven curation tools fueled by the algorithm called Ludo Rank - a technology tested on 200M+ NFTs indexed across 17+ most popular chains and 20+ marketplaces.
With Ludo, web3 users can easily find opportunities behind all NFT’s and brands get access to new user acquisition and engagement strategies.
Problem statement
Web 3 discoverability is severely hampered by its sheer scale and lack of effective multi-chain discoverability tools. With over 24 ecosystems and 500 million Non-Fungible Assets, it's challenging to sift through the noise and find true value, leading to widespread scams and brand impersonations. This issue is compounded by the global nature of Web 3, which blurs jurisdictional lines and complicates IP rights enforcement. Counterfeits, representing 3.3% of world trade and causing significant economic and brand damage, exacerbate the problem. In the U.S., 52% of consumers lose trust in brands due to counterfeits, while in Europe, counterfeit products account for 5.8% of all imports. Additionally, major NFT marketplaces like OpenSea, lacking robust monitoring, become breeding grounds for IP infringements, highlighting the urgent need for more effective legal frameworks and enforcement mechanisms in the Web 3 environment.
Proposed solution
Ludo provides discoverability to web3 with AI-driven curation tools fueled by the algorithm called Ludo Rank - a technology tested on 200M+ NFTs indexed across 17+ most popular chains and 20+ marketplaces.
With Ludo, web3 users can easily find opportunities behind all NFT’s and brands get access to new user acquisition and engagement strategies.
Through our Ludo Rank system (similar to Google Page Rank algorithm), we can reduce low quality assets, fraud and spam by curating assets and assigning a trusted score. This will allow us to monitor your brand assets, rank them properly and differentiate them from spam and IP infringement. The tool is already available as API and as Chrome Extension, which you can install and test here. Ludo Rank is currently deployed for Ethereum and MultiverseX.
We have successfully integrated Flow into our systems and are currently developing more features that allow us to oversee the status of NFTs within the infrastructure.
Impact
Some explicit advantages that our solution provides for Flow developers and the broader ecosystem are the following:

Ludo Rank, our innovative ranking algorithm, will be accessible at no cost through our API, enabling Flow developers to seamlessly integrate it into their decentralized applications (dApps)
Ludo Rank is available via the Ludo Chrome Extension, an essential tool for any Flow NFT collector. This extension aids collectors in understanding the trust score of an asset, empowering them to make well-informed decisions.
NFT project creators can leverage Ludo Rank to display their project's authority level, enhancing their appeal to potential users.
Ludo Rank also adds value for users, who can showcase their Reputation Level—based on the Ludo Rank of the assets they own—to attract more incentives from projects seeking users with high reputations.

Milestones and funding
Our plan is to allocate additional resources towards indexing every NFT on Flow and implementing the Ludo Rank algorithm for a comprehensive ranking of all assets. This approach will enable us to provide a trust score for each new NFT minted on Flow within minutes of its creation. This rapid assessment aims to significantly reduce the risk of scams for Flow users, thereby bolstering trust within the ecosystem. The enhanced security and reliability are expected to attract new users, further capitalizing on network effects and contributing to the ecosystem's growth.
Total funding proposed: <$100.000>
Team
Sergiu Draganus founded GeoRanker - leader in Data Acquisition Services and Search Engine Optimization Algorithm Analysis platform - back in 2009. He also funded in 2017 - CryptoCoin.PRO is one of the first European licensed FIAT On/Off Ramps. NFT Collector with a portfolio of over 10K NFTs including 2 of the first 100 Axies, 1000+ Sandbox Lands, Azukis and many others.
Renan Gomes Baretto - joined GeoRanker in 2011 - later becoming the CTO and in 2020 - Partner at GeoRanker.
Joining Ludo as CTO back in 2021, Dmytro Nasyrov excels in building robust, heavily-loaded distributed systems. His extensive background in blockchain technology and software architecture significantly contributes to Ludo's innovative solutions in the rapidly evolving Web3 and Metaverse domains.
https://www.linkedin.com/in/sergiudraganus/
https://www.linkedin.com/in/renangbarreto/
https://twitter.com/_0xMatt_
https://www.linkedin.com/in/dmytronasyrov/
Contacts for this application: Adrian Stratulat, PM Ludo<EMAIL_ADDRESS>or Sergiu Draganus, CEO<EMAIL_ADDRESS>Additional details about the team in the below pitch deck.
Pitch deck (for further details about Ludo)
https://ludo.com/pitchdeck

We appreciate your proposal. After careful review we've decided not to proceed at this time. Please stay connected to our Twitter and working groups to stay on top of the latest developments in the ecosystem and new grant opportunities.


Orient 3.0 not able to add additional properties through vertex.property(key, value)

OrientDB Version: 3.0
Java Version:  1.8
OS: Win 7
Expected behavior
I should be able to add additional properties through Vertex.property method.  It only works  through graph.addVertex(..) method. Basically I need to add all properties upfront which is a cumbersome thing.
There is this Vertex.property(, <value) method which I thought should be able to support additional properties. but though it looks like working (no compilation error),but data never gets stored into db.
This has been there, but we had lesser attributes so it was not a problem (were living with graph.addVertex...) but now I think we need elegant way of dealing with it.
Actual behavior
doesn't save properties set through vertex.property method into database.
Steps to reproduce
not sure if it needs a UT, but will try to add one.

@maggiolo00 , @luigidellaquila  can you please let me now if you have a suggestion for me?

Ok,  it is working fine. not an issue any more. may be it was the specific build thing.


Enable SP 2019 as a affected version

Search is similar between 2016 and 2019.
Also for DR, so 2019 should be enabled.

@tklarsen Hi Tone, could you please check this PR and merge if correct? Thanks!


How to get access to the audit logs?

According to this document "Quickly track where your data is going with built-in audit logs. Track access, creation, modification, and reads within each data store".
How can I view the audit logs?

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

ID: dfd4bc9d-c837-de57-8a7a-7e7ce06a5e57
Version Independent ID: 1d0706f8-f24f-3d66-0fc2-a80a6a82efac
Content: What is Azure API for FHIR Preview - Azure API for FHIR Preview
Content Source: articles/healthcare-apis/overview.md
Service: healthcare-apis
Sub-service: fhir
GitHub Login: @hansenms
Microsoft Alias: mihansen

Thanks for the feedback! We are currently investigating and will update you shortly.
CC @hansenms in case he has anything to add in the meantime.

For the OSS FHIR Server for Azure, the logs are available in the Application Insights instance deployed with the service. The components for self-service access to audit logs for the managed Azure API for FHIR will be available in the portal shortly and follow the pattern for monitoring of other services.

ah thanks @hansenms
@AhsanSAlam I will close this out but if you still need more information let us know and we can always reopen and continue the discussion.

Sounds good. Thanks for your help


Atempt to open a page with headless: true and userDataDir relative path hangs with high CPU load

Steps to reproduce
Tell us about your environment:

Puppeteer version: 1.9.0-post (chromium_revision 599821)
Platform / OS version: Windows 7 x64
URLs (if applicable): any?
Node.js version: 11.0.0 (or 12.0.0-v8-canary)

What steps will reproduce the problem?
This script is OK:
'use strict';

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch({
      headless: true,
    });
    const [page] = await browser.pages();

    await page.goto('https://example.org/');

    console.log(await page.evaluate(() => document.title));

    await browser.close();
  } catch (err) {
    console.error(err);
  }
})();

This hangs with high CPU load and no error messages:
'use strict';

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch({
      headless: true,
      userDataDir: 'test-profile-dir',
    });
    const [page] = await browser.pages();

    await page.goto('https://example.org/');

    console.log(await page.evaluate(() => document.title));

    await browser.close();
  } catch (err) {
    console.error(err);
  }
})();

Notes:

It seems any URL will do (including https://example.org/).
2.. With headless: false the issue is gone.
The content of the newly created profile dir after the process aborted:

Crashpad/reports
Crashpad/settings.dat
CrashpadMetrics-active.pma

I have the same problem when i set userDataDir,Very high CPU consumption

@vsemozhetbyt  I tried your example on pptr 1.9.0 win10x64 and was not able to reproduce high cpu/hang.
curiously, I am also able to specify an invalid userDataDir with no ill effects, which is surprising

@jasonswearingen Unfortunately, I have the same issue with 11.0.0, 10.12.0, and 08.12.0. Did you test with the same chromium_revision (599821)?

you are right, looking at my node_modules ppuppeteer package.json file, I'm using "chromium_revision": "594312"
if you can tell me what version to upgrade my puppeteer npm module to, I can give that a try.  I"m on 1.9.0

You can install from the master, it currently has this revision:
npm install https://github.com/GoogleChrome/puppeteer

@vsemozhetbyt I did that npm install (now on 599821) and still have no problems using C:\tmp\pptr as a (valid) userDataDir, or using an invalid userDataDir   (no hangs/highcpu)

in case it matters, here's the code I ran to try reproing your issue:
( async function main() {
	try {
		const browser = await puppeteer.launch( {
			headless: true,
			userDataDir: 'c:\\tmp\\pptr',
		} );
		const [ page ] = await browser.pages();

		console.log( "about to page.goto()" );

		await page.goto( 'https://example.org/' );
		console.log( "done to page.goto()" );

		console.log( await page.evaluate( () => document.title ) );

		await browser.close();
	} catch ( err ) {
		console.error( err );
	}
} )();

ok, with a relative dir I have the same issue you describe.
using the following code:
( async function main() {
	try {

		console.log( "about to pptr.launch()" );

		const browser = await puppeteer.launch( {
			headless: true,
			userDataDir: '..\\somedir',
		} );

		console.log( "done launch, about to obtain pages()" );

		const [ page ] = await browser.pages();

		console.log( "about to create new context+page" );

		console.log( "about to page.goto()" );

		await page.goto( 'https://example.org/' );
		console.log( "done to page.goto()" );

		console.log( await page.evaluate( () => document.title ) );

		await browser.close();
	} catch ( err ) {
		console.error( err );
	}
} )();

pptr hangs with max cpu at the await browser.pages(); call.

@vsemozhetbyt this is a chromium bug, can you please report upstream?

Done: https://bugs.chromium.org/p/chromium/issues/detail?id=900952

Additional note: on Windows, / delimiter in the absolute user data dir path still causes this issue, only \\ delimiter is OK.

Can't launch just call resolve on userDataDir?
Just wondered why my script that ran under macOS didn't do anything under Windows... Disabled headless and it worked. Then found this.
Hangs on navigation: { userDataDir: 'user_data', headless: true }.
Workaround: { userDataDir: resolve('user_data'), headless: true }.

same problem here,  test both on  ubuntu 18.04 and macos catalina.  use path.resolve to convert to absolute path works well

Can't launch just call resolve on userDataDir?
Just wondered why my script that ran under macOS didn't do anything under Windows... Disabled headless and it worked. Then found this.
Hangs on navigation: { userDataDir: 'user_data', headless: true }.
Workaround: { userDataDir: resolve('user_data'), headless: true }.

Workaround: { userDataDir: resolve('user_data'), headless: true }. - working fine, otherwise was facing cpu load issue.

Can't launch just call resolve on userDataDir?
Just wondered why my script that ran under macOS didn't do anything under Windows... Disabled headless and it worked. Then found this.
Hangs on navigation: { userDataDir: 'user_data', headless: true }.
Workaround: { userDataDir: resolve('user_data'), headless: true }.

@vogler , you the MAN. I was banging my head against the wall on why my script works on headful but not headless mode... Thank you so much for pointing it out.
So just wondering how did you find out this out, I saw you mentioned.

Hangs on navigation: { userDataDir: 'user_data', headless: true }.

So just wondering how did you find out this out, I saw you mentioned.

It worked under macOS, so I assumed it must be the path.

The Chromium people can't reproduce.
Why not just fix it by calling resolve on userDataDir internally? Should be no issue since the function is idempotent.

As per https://github.com/puppeteer/puppeteer/pull/6506#issuecomment-707704351 this should be closed nowadays, no?


view function returns only one element

Hi,
can I return more elements from root view?
I think that fn view(model: &Model) -> Vec<El<Msg>> would correspond more with quote from Seed documentation:

Fragments (<>...</> syntax in React and Yew) are components that represent multiple elements without a parent. They're useful to avoid unecessary divs, which clutter teh DOM, and breaks things like tables and CSS-grid.

Thanks!

This is a good point... Would be easy to implement. Am willing to make this breaking change if it looks like the right approach.

Do you see a practical advantage over the current method, or is it about elegance/consistency/something else? I see the consistency argument.

I've encountered this problem in my projects:

Side-project currently written in Yew, I want to rewrite it to Seed (cca 6k LoC, website editor, probably will be open-source)
I've started to develop webpack-based alternative to seed-quickstart with tailwindcss and examples of tests, typescript integration and easy deployment into netlify.

I'm using array of elements in both project, so it's more practical than elegance problem for me.

Inspiration:
I did a little research and there is an interesting approach to resolving view function in the latest Elm.Browser. It has type view : model -> Document msg where Document is:
type alias Document msg =
    { title : String
    , body : List (Html msg)
    }

So it returns list of elements and even a new page title.
I think that with similar approach we can provide more flexibility and add more functionality (e.g. modify head elements) in the future without breaking changes.

Working on a generic/trait-based approach where the view function could return either an El, or Vec of Els. This would be non-breaking, and allow either approach. (Notably, it wouldn't require you to wrap the top-level view fn in vec![] unless you wanted to return multiple as in your case)

No luck with generic/trait approach. Latest commit has this new API where we accept Vec<El>, but the implementation still wraps in a div. Standby.

@David-OConnor: What was the problem? Can I help you somehow?

I ran out of time and had to go to work! I'll give it a shot this evening. No need for you to dive in yet. Need to refactor to mount the returned Els directly in the mount pt.

Fixed in v0.3.1

Well, I had a whole day for experimenting and here is the result (see mainly view in examples/counter):
https://github.com/David-OConnor/seed/compare/master...MartinKavik:88-view-return-vector
Some examples of view with that implementation:
1.
fn view(model: &Model) -> impl ElContainer<Msg> {
    div![]
}

2.
fn view(model: &Model) -> impl ElContainer<Msg> {
    vec! [
        div![],
        div![],
   ]
}

3.
fn view(model: &Model) -> El<Msg> {
    div![]
}

4.
fn view(model: &Model) -> Vec<El<Msg>> {
    vec! [
        div![],
        div![],
   ]
}

And because 4. is the same as the current API, I think it's not a breaking change.
Notes:
I've changed viewFn to
type ViewFn<Mdl, ElC> = fn(&Mdl) -> ElC;

because compiler ignores redundant type parameters and fails on unused type parameter Ms, e.g.:
type ViewFn<Ms, Mdl, ElC: ElContainer<Ms>> = fn(&Mdl) -> ElC;  // FAIL

and we can't use impl everywhere yet (see initial limitations in RFC), e.g.:
type ViewFn<Ms, Mdl> = fn(&Mdl) -> impl ElContainer<Ms>;  // FAIL

OT: @David-OConnor, I've setuped quickstart for better developer experience and production-ready output + deploy. I would like to know your opinion, thanks - https://github.com/MartinKavik/seed-quickstart-webpack.

Haven't looked at the quickstart yet, but this appears to solve the problem we discussed, and would be non-breaking for both v <3.1 (view returns El), and 3.1 (View returns Vec<El>. If you make that as a PR, I'll merge it.

Merged, and published as v0.3.2. Added your quickstart to the readme and guide. Great change - more flexible than either of the previous approaches.


[LIVY-891] Expose the sessionID via the client APIs [WIP]

https://issues.apache.org/jira/browse/LIVY-891
What changes were proposed in this pull request?
Currently getSessionID() is exposed in HttpClient only for testing purposes. Since the internally created session ID is useful to doing operations such as re-connecting to the session, killing the session etc., it will be useful to expose it as a public api in HttpClient and LivyClient. (Include a link to the associated JIRA and make sure to add a link to this pr on the JIRA as well)
How was this patch tested?
(Please explain how this patch was tested. E.g. unit tests, integration tests, manual tests)
(If this patch involves UI changes, please attach a screenshot; otherwise, remove this)
Please review https://livy.incubator.apache.org/community/ before opening a pull request.

Codecov Report

Merging #348 (2369bdc) into master (4d8a912) will decrease coverage by 2.90%.
The diff coverage is 76.92%.

@@             Coverage Diff              @@
##             master     #348      +/-   ##
============================================
- Coverage     68.50%   65.59%   -2.91%
+ Complexity      841      818      -23
============================================
  Files           103      103
  Lines          5940     5968      +28
  Branches        898      907       +9
============================================
- Hits           4069     3915     -154
- Misses         1312     1529     +217
+ Partials        559      524      -35

Impacted Files
Coverage Δ

...c/src/main/java/org/apache/livy/rsc/RSCClient.java
72.61% <0.00%> (-0.88%)
:arrow_down:

...n/java/org/apache/livy/client/http/HttpClient.java
85.71% <100.00%> (+0.23%)
:arrow_up:

...a/org/apache/livy/server/ThriftServerFactory.scala
0.00% <0.00%> (-100.00%)
:arrow_down:

...main/scala/org/apache/livy/server/LivyServer.scala
2.23% <0.00%> (-29.47%)
:arrow_down:

...rc/main/scala/org/apache/livy/utils/SparkApp.scala
56.00% <0.00%> (-20.00%)
:arrow_down:

core/src/main/scala/org/apache/livy/Logging.scala
66.66% <0.00%> (-16.67%)
:arrow_down:

...e/livy/server/interactive/InteractiveSession.scala
56.97% <0.00%> (-12.80%)
:arrow_down:

...src/main/scala/org/apache/livy/sessions/Kind.scala
66.66% <0.00%> (-9.53%)
:arrow_down:

...c/main/scala/org/apache/livy/repl/ReplDriver.scala
27.27% <0.00%> (-8.63%)
:arrow_down:

...la/org/apache/livy/utils/LineBufferedProcess.scala
78.57% <0.00%> (-7.15%)
:arrow_down:

... and 19 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


conflict with supabase

hello.
I started studying flet not too long ago.
I'm running into a problem with dependencies while testing publishing a static webpage to cloudflare that integrates with supabase to input/output to a database.
How should I approach it?
https://github.com/JulimPark/flet_test2
02:01:07.756 | INFO: pip is looking at multiple versions of flet-runtime to determine which version is compatible with other requirements. This could take a while.
02:01:07.767 | ERROR: Cannot install -r requirements.txt (line 2) and flet because these package versions have conflicting dependencies.
02:01:07.767 |
02:01:07.767 | The conflict is caused by:
02:01:07.768 | supabase 1.0.3 depends on httpx<0.24.0 and >=0.23.0
02:01:07.768 | flet-runtime 0.8.2 depends on httpx<0.25.0 and >=0.24.1
02:01:07.768

Supabase must be supported for sure. So, what would be solution for that: change Flet's dependency to 0.23.0?


Issue #18: fix readme error for :each_row notation

Describe the change
Fix an error in the readme to make the example functional.
Why are we doing this?
gem will get wider, easier use if documentation improves.
Benefits
New users will be able to properly create tables following documentation.
Drawbacks
None.
Requirements
Put an X between brackets on each line if you have done the item:
[] Tests written & passing locally?
[] Code style checked?
[] Rebased with master branch?
[X] Documentation updated?

Coverage decreased (-0.06%) to 97.732% when pulling 58dc8001ff243a6836512cd92f4f6e32c9cc77e0 on RylanBauermeister:master into 1e9c669cbb956c8288a1f31ce8ad3475545a5d2c on piotrmurach:master.

This is actually more a workaround than a fix.  Closing this out until it can be better analyzed.


HHH-7913 Placeholders substitution in subselect

https://hibernate.atlassian.net/browse/HHH-7913

@gbadner I think it makes a lot of sense but could you take a quick look?

I just pushed a commit with a failing test that maps the entities to a non-default schema. It fails because the placeholder is substituted with the default schema instead of the mapped schema.
After pushing that commit, I realized that the user guide says that "{h-schema} resolves the current hibernate.default_schema configuration property value" [1], so maybe a different placeholder should be  used if we want to allow a mapped, non-default schema.
The Table#schema for the subselect has the correct schema name, so the information is there. The solution should take into account what is mapped, rather than just assuming the default should be used.
[1] http://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#sql-global-catalog-schema

Pushed a change. As was proposed If schema is configured on the entity level, the implementation chooses it instead of the default.

In 17.11. Resolving global catalog and schema in native SQL queries, the documentation explicitly says:
"{h-schema}
resolves the current hibernate.default_schema configuration property value."
Documentation for 2.5.8. Mapping the entity to a SQL query should be updated in a similar way, but mentioning that if a schema is mapped for the entity, then it will be used instead.

If adding support for substituting {h-schema} is added, support for {h-catalog} and {h-domain} should probably be added as well.

Actually, the method that resolves {h-schema} also resolves {h-catalog} and {h-domain}. So they are supported.
To be consistent with the previous commit I can implement the same behavior as for {h-schema} (first look at Table, if nothing is specified there than resolve placeholders against global settings)
But does it make sense to use @Subselect with @Table ?

Added same support for {h-schema} and {h-domain} as for {h-schema}. Changed documentation

See https://github.com/hibernate/hibernate-orm/pull/9293


[CODE] Add support for Brave Browser

Description
Added support for Brave browser through creating a class Brave in browsers.py.
Closes #42
Type of change

[x] New feature (non-breaking change which adds functionality)
[x] This change requires a documentation update

Checklist:

[x] I have read the contribution guidelines and followed it as far as possible.
[x] I have performed a self-review of my own code (if applicable)
[x] I have commented my code, particularly in hard-to-understand areas (if applicable)
[x] I have made corresponding changes to the documentation (if applicable)
[x] My changes generate no new warnings
[x] Any dependent and pending changes have been merged and published

Can you rebase on master?

Codecov Report

Merging #48 into master will increase coverage by 1.45%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #48      +/-   ##
==========================================
+ Coverage   62.28%   63.73%   +1.45%
==========================================
  Files           3        3
  Lines         175      182       +7
  Branches       22       22
==========================================
+ Hits          109      116       +7
  Misses         61       61
  Partials        5        5

Flag
Coverage Δ

#unittests
63.73% <100.00%> (+1.45%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

browser_history/browsers.py
100.00% <100.00%> (ø)

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 d32b044...b49f73d. Read the comment docs.

Closing in favour of #66