Version 4.0.0-rc3 : generated by LeafSnowflakeKeyGeneratorkey mod 4 always is 0/1, expected 0/1/2/3

Bug Report
For English only, other languages will not accept.
Before report a bug, make sure you have:

Searched open and closed GitHub issues.
Read documentation: ShardingSphere Doc.

Please pay attention on issues you submitted, because we maybe need more details.
If no response more than 7 days and we cannot reproduce it on current information, we will close it.
Please answer these questions before submitting your issue. Thanks!
Which version of ShardingSphere did you use?
4.0.0-rc3
Which project did you use? Sharding-JDBC or Sharding-Proxy?
sharding-jdbc
Expected behavior
mod 4  is  0/1/2/3
Actual behavior
mod 4 always is 0/1
Reason analyze (If you can)
Steps to reproduce the behavior, such as: SQL to execute, sharding rule configuration, when exception occur etc.
Example codes for reproduce this issue (such as a github link).

One of My  unit test cases code as follows

public void assertLastDigitalOfGenerateKeySameMillisecond() {
Properties properties = new Properties();
properties.setProperty("serverList", "<IP_ADDRESS>:2181");
properties.setProperty("serviceId", "testService1");
properties.setProperty("digest", "name:123456");
properties.setProperty("maxTimeDifference", "5000");
properties.setProperty("registryCenterType", "ForthTestRegistryCenter");
properties.setProperty("maxVibrationOffset", String.valueOf(3));
FieldUtil.setStaticFinalField(leafSnowflakeKeyGenerator, "timeService", new FixedTimeService(6));
leafSnowflakeKeyGenerator.setProperties(properties);
String actualGenerateKeyBinaryString0 = Long.toBinaryString(Long.parseLong(leafSnowflakeKeyGenerator.generateKey().toString()));
assertThat(Integer.parseInt(actualGenerateKeyBinaryString0.substring(actualGenerateKeyBinaryString0.length() - 3), 2), is(0));
String actualGenerateKeyBinaryString1 = Long.toBinaryString(Long.parseLong(leafSnowflakeKeyGenerator.generateKey().toString()));
assertThat(Integer.parseInt(actualGenerateKeyBinaryString1.substring(actualGenerateKeyBinaryString1.length() - 3), 2), is(1));
String actualGenerateKeyBinaryString2 = Long.toBinaryString(Long.parseLong(leafSnowflakeKeyGenerator.generateKey().toString()));
assertThat(Integer.parseInt(actualGenerateKeyBinaryString2.substring(actualGenerateKeyBinaryString2.length() - 3), 2), is(2));
String actualGenerateKeyBinaryString3 = Long.toBinaryString(Long.parseLong(leafSnowflakeKeyGenerator.generateKey().toString()));
assertThat(Integer.parseInt(actualGenerateKeyBinaryString3.substring(actualGenerateKeyBinaryString3.length() - 3), 2), is(3));
String actualGenerateKeyBinaryString4 = Long.toBinaryString(Long.parseLong(leafSnowflakeKeyGenerator.generateKey().toString()));
assertThat(Integer.parseInt(actualGenerateKeyBinaryString4.substring(actualGenerateKeyBinaryString4.length() - 3), 2), is(4));
}

The key code is FieldUtil.setStaticFinalField(leafSnowflakeKeyGenerator, "timeService", new FixedTimeService(6));
My  test   case   just   invokes  5   times , but  I set the  invokeTimes  of  FixedTimeService.getCurrentMillis()   is  6 .
Why  should  i  do  this ?   The   reason  as  follow:
When LeafSnowflakeKeyGenerator  is being initialized , its  method  initializeTimeNodeIfNeed()  invokes  one time  FixedTimeService.getCurrentMillis() , invokeTimes  value  is  0   .  This  first  call  of  FixedTimeService.getCurrentMillis()  is  just  for  initialization .  Then  when
LeafSnowflakeKeyGenerator   finishs  its initialization  and  begins  to   generate  the  first  key  , the  invokeTimes  of  FixedTimeService.getCurrentMillis()   value  change  to  1.  That  means   when  we   generate  the  first  key ,  the  actual  call  of  FixedTimeService.getCurrentMillis()   we make  is  not   the  first  call.
So , this  test   case   just   invokes  5   times , but  I set  it  to 6 .

Any good suggestions?

FixedTimeService  code  as  follows

public final class FixedTimeService extends TimeService {
private final int expectedInvokedTimes;
private final AtomicInteger invokedTimes = new AtomicInteger();
private long current = LeafSnowflakeKeyGenerator.EPOCH;
@Override
public long getCurrentMillis() {
if (invokedTimes.getAndIncrement() < expectedInvokedTimes) {
return current;
}
invokedTimes.set(0);
return ++current;
}
}


Shown Wazuh API version is wrong or empty after upgrade

Describe the bug
During https://github.com/wazuh/wazuh/issues/27183, it was found that Wazuh API version shown is not the current one after upgrading from v4.9.2 to v4.10.0-rc1

After cleaning the cache, the error is worse

To Reproduce
See https://github.com/wazuh/wazuh/issues/27183
Expected behavior
Wazuh API is v4.10.0

OpenSearch Version
Please list the version of OpenSearch being used.
Dashboards Version
Please list the version of OpenSearch Dashboards being used.
Plugins
Please list all plugins currently enabled.
Screenshots
If applicable, add screenshots to help explain your problem.
Host/Environment (please complete the following information):

OS: [e.g. iOS]
Browser and version [e.g. 22]

Additional context
Add any other context about the problem here.

The problem was reproducible.

I have been reviewing where the data in the Version column of the table comes from, and I found that the information originates from a request made to the server (GET /manager/version/check?force_query=${forceQuery}), which in turn makes a request to the CTI. In this case, since v4.10.0-rc1 is not yet in production, CTI is unaware of the existence of this version and does not return the expected information, including the current API details. To address this issue, considering that a failure in the request to CTI occurs, I plan to resolve this directly by making a direct request to the server at / to inquire about the version.


UnitTests Overhead

Create Unit Test Project and make GameBackbone comparable with it.

Unit test project is now set up and functioning


Support on setting the API_BASE variable

Confirm this is a feature request for the Python library and not the underlying OpenAI API.

[X] This is a feature request for the Python library

Describe the feature or improvement you're requesting
Hi Openai developers!
In the new version of openai-python package (>=1.0), I find it rather inconvenient to set the OPENAI_API_BASE variable. That is to say, it is impossible to set the variable with something either like:
client = OpenAI(
    api_base = "",
    api_key = ""
)

or export the variable in the terminal like:
export OPENAI_API_BASE=
But in order versions, one can conveniently set the variable through the Python script, using something like openai.api_base=
Additional context
No response

It has been renamed:
https://github.com/openai/openai-python?tab=readme-ov-file#module-level-client
openai.base_url = "https://..."

or OpenAI(base_url="…") or OPENAI_BASE_URL=….


Add admonitions for new and changed APIs in 2022 version

This PR,

[x] Adds admonitions for changed APIs in 2022 version in the draft folder
[x] Adds admonitions for new APIs in 2022 version in the draft folder

I guided myself using the changelog for both the changed and new APIs.
Some questions,

Should I only add the admonitions for the draft version? Or do we also want them in the 2022 spec?
When I compile locally, I get some sphinx errors with the new make and the documents are not re-rendered correctly. I'm not sure if this is only happening on my side, tomorrow I will test it in a new env and if the error persists I'll open an issue 😉

Thanks @steff456. The changes look good mostly; one thing to add is to ensure there's a Notes section when you add the directives at the bottom. Otherwise you'll get rendering issues like this (for __dlpack__):

Should I only add the admonitions for the draft version? Or do we also want them in the 2022 spec?

I suggest to do and review it in this PR for the draft version. Once it's merged, let's sync it to the 2022 version. That should be easy, I don't think we've merged other changes to these files, so copying files should get you the right diff.

When I compile locally, I get some sphinx errors with the new make and the documents are not re-rendered correctly. I'm not sure if this is only happening on my side, tomorrow I will test it in a new env and if the error persists I'll open an issue 😉

I don't see an issue. Maybe also ensure you delete the build dir and the auto-generated files, that can cause problems sometimes.


For now, delete CIVO cluster

Until we potentially make progress again delete the cluster.

I suppose commenting out things in the main.tf it the better way to go for now because of how the CI works.


JSONPathParser.charsetFix huge time sink in batch indexing

I was testing out some batch indexing items in <IP_ADDRESS> this weekend when I noticed the hadoop indexer was spending a LOT of self-time in JSONPathParser::charsetFix as measured with CPU Sampling through jvisualvm.
I don't have enough evidence yet to say if this is a "real" bottleneck or masking an actual bottleneck due to how JMX does cpu sampling, but I found it very odd that a rare-event fixer is the dominant self-time method.

The input file was line-delimited JSON


what's the healthbar color variable? (urgently need an answer)

Describe your problem here.
what's the healthbar color variable? (i need this urgently)
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows x64
Did you edit anything in this build? If so, mention or summarize your changes.
No response

If you're using getProperty(), I would assume that you need dad.healthColorArray[n], where n is in the inclusive range from 0 - 2, or boyfriend.healthColorArray[n].
If you're using setProperty(), I would suggest trying out runHaxeFunction() with healthBar.setColors() where its parameter is a color, acquirable from FlxColor.fromRGB() with three integer parameters. Though I haven't tried that out yet, you might be the first to do so.


Set environment variables to only expose allocated devices

Set both HIP and OpenCL environment variables for devices
to be exposed. The device ordinals are calculated from the
sorted PCI addresses. Tested on machines with dual AMD
and NVIDIA cards where the ROCm GPUs in the system were
identified as cards #2 and #4.
Note that for pods not requesting any devices this code will
never be called, so unless you set the default exposed devices
all of them will be exposed.

Hi @y2kenny ; would it be possible to either merge this, provide feedback how I should update it, or alternatively point to any other functionality that already achieves this?

Actually, scratch that: Instead of patching an updated release of the plugin, we updated to kubernetes 1.18, and with that version k8s seems to do the proper job of only creating device links to the number of GPUs requested. That's a much safer setup anyway, so no need for this anymore :-)


Getting started in readme

Happy to iterate on this if you think it can be worded better, just wanted to get a PR out to start the conversation, see https://github.com/hexedpackets/trot/issues/28

Thanks for the contribution. I think it would be a bit clearer to take the comment out of the shell-formatted block, would you mind making the change?
Also, it's probably worth mentioning the mix trot.server task, which does essentially the same thing without an iex shell.

Absolutely I'll make the change.


DLQ Messages Missing Headers

As a message on a DLQ topic, I should have headers indicating my source topic and the reason of my being on the DLQ, so that I can be diagnosed or replayed more easily.

https://docs.confluent.io/cloud/current/connectors/dead-letter-queue.html

https://stackoverflow.com/a/73065295


Fix virt-v2v image build

Fix virt-v2v image build
Issue: When running make build-virt-v2v-image the build failed due to
some packages throwing 404.
Fix: I needed to change the rpm url from AppStream to BaseOs for perl
packages. It was not detected by the ./hack/virt-v2v-rpm-deps.sh as
the packages did not change (did not got updated) but only their
location changed. Might be issue in the bazeldnf rpmtree.
Fixes: https://github.com/kubev2v/forklift/pull/1205
Signed-off-by: Martin Necas<EMAIL_ADDRESS>

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 15.65%. Comparing base (b75f9ab) to head (338e13e).
Report is 7 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1214   +/-   ##
=======================================
  Coverage   15.65%   15.65%
=======================================
  Files         112      112
  Lines       23075    23071    -4
=======================================
  Hits         3612     3612
+ Misses      19178    19174    -4
  Partials      285      285

Flag
Coverage Δ

unittests
15.65% <ø> (+<0.01%)
:arrow_up:

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

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


Multi audio track files crash ffmpeg with error 1

Hi, if you convert a file (I tested a mix of mkv and MP4) that has multiple audio tracks, the encoder will crash, ffmpeg exits with error 1 with no text: https://i.imgur.com/Gn9Qxrq.png
I was looking for a way to convert a bunch of old video I have but don't want to get rid of (a lot of OBS/Shadowplay recordings of games where I might want to edit in a quick reference of, say, a boss fight in a video game and don't want to replay hours of a game for a 9 second throwaway reference video clip) so I don't have multiple terabytes of footage at maximum quality. h265ize works wonderfully, until I threw some video that OBS, Vegas and Premiere handle wonderfully, that would crash the encoder with no error text, and I realized that all my test footage was single track audio where I didn't have a microphone track or voice chat track active in the recording.
This is reproduce-able by recording a multi-track audio recording in both Shadowplay and OBS. I haven't tried rendering a multitrack audio video in Vegas or Premiere to see if its an error in OBS/Shadowplay MP4 handling. (For the record, Shadowplay records maximum 2 tracks, mic and system audio, where my OBS recordings are set up for 4 tracks, game, mic, voice chat and misc audio, to make post editing convenient)
At first i used YAMB to mux and rip all the tracks, and create a MP4 with only the raw h264 stream and no audio track, which worked when encoding with the bug that YAMB encoded the 60fps steam at 30fps, so it played in slowmo. Using VLC to "keep video track" and uncheck audio, and encoding this works fine.
I'm okay with this workaround for the first few games i'm transferring, as these games I really don't need audio for and can just play a soundtrack for in the background and call it a day. However, some games with dialog I might want to pull a scene of dialog out, and unless I go through and manually by hand extract all the tracks, find the ones i want, and remux them and render the video and audio into a single audio track, i dont have a way of doing this with this program.
FYI: in the picture above, it states that I did not name the tracks. I definitely did, and VLC can read the track names just fine.
Let me know if you need any log files or sample videos, i'm more than happy to share!

turns out im a dumbass, i forgot that i replaced ffmpeg with another binary. this is most likely unrelated to the program. deepest apologies


Error: Could not compile shader: ERROR: 0:3: '#' : invalid character ERROR: 0:3: '?' : syntax error

After upgrade chrome to version 91.0.4472.77, I got an compile error. How to fix this error?  thanks!
Error: Could not compile shader: ERROR: 0:3: '#' : invalid character ERROR: 0:3: '?' : syntax error

Please could you share the report from chrome://gpu?
I'm running chrome v91.0.4472.101 without issue so maybe could you also try to upgrade it just in case.


[Feature] Use Nearest Neighbor scaling for small textures in Remix UI

Describe the issue
Currently small textures in the Remix UI are almost impossible to make out due to the current scaling method. For example, the textures on the right:

This is a small request, but it'd make selecting textures in older games much easier

Would nearest neighbor really help in this case? I mean if the textures are that low resolution wouldn't they be difficult to make out either way since they'd just be a pile of blocky pixels instead.

There's been a few cases now where it would help, yes. Specifically for marking smaller UI elements and also low res particle effects


Cant scroll results in debug mode

This issue seems to be happening for me on version 2.2.5 and even after upgrading to latest 3.0.2.

could be related to #282


Add information for using infnoise with udev

software/README talks about running as a daemon, and using rngd to add entropy from a FIFO to /dev/random. However, it's possible to use udev to start the daemon whenever the infnoise is plugged in, as so:
$ cat /etc/udev/rules.d/75-infnoise.rules
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", RUN+="/usr/local/bin/infnoise --dev-random --daemon"

Many similar software packages for hardware will ship udev rules in the repository with instructions on how to add the rules and check that they're working. I think this would be useful for infnoise, as it provides the lowest-friction way to use the infnoise.
If you think this would be useful in the repository, I can make a pull request with a rules file and instructions on how to use it (and maybe even make rules to install infnoise and the rules).

Thanks, Abigail!  I added your udev file at the end of the README to
start.  Maybe it makes sense to have it as a make option.  My only
hesitation is that even this super-simple Makefile is already not portable
across Linux distros (it does not work on Fedora, for example).  I prefer
not to include distro-specific stuff.
Thanks,
Bill
On Mon, Feb 8, 2016 at 3:44 AM, Abigail<EMAIL_ADDRESS>wrote:

software/README talks about running as a daemon, and using rngd to add
entropy from a FIFO to /dev/random. However, it's possible to use udev to
start the daemon whenever the infnoise is plugged in, as so:
$ cat /etc/udev/rules.d/75-infnoise.rules
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", RUN+="/usr/local/bin/infnoise --dev-random --daemon"
Many similar software packages for hardware will ship udev rules in the
repository with instructions on how to add the rules and check that they're
working. I think this would be useful for infnoise, as it provides the
lowest-friction way to use the infnoise.
If you think this would be useful in the repository, I can make a pull
request with a rules file and instructions on how to use it (and maybe even
make rules to install infnoise and the rules).
—
Reply to this email directly or view it on GitHub
https://github.com/waywardgeek/infnoise/issues/12.

Hi there,
I have some problems running infnoise with this method. When I run it from the command line everything runs smoothly and I can generate random nums for hours with gpg.
But when the same command (i.e /usr/local/bin/infnoise --dev-random --daemon) is executed by the udev rule above it crash after a while (generally a few seconds).
Here is what strace says:
select(5, NULL, [4], NULL, {0, 1000})   = 1 (out [4], left {0, 982}) ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7fff171a38f8) = 0 ioctl(4, USBDEVFS_SUBMITURB, 0x7fff171a3930) = 0 ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7fff171a38f8) = -1 EAGAIN (Resource temporarily unavailable) select(5, NULL, [4], NULL, {0, 1000})   = 1 (out [4], left {0, 993}) ioctl(4, USBDEVFS_REAPURBNDELAY, 0x7fff171a38f8) = 0 ioctl(3, RNDGETENTCNT, 0x7fff171a3a8c)  = 0 poll([{fd=3, events=POLLOUT}], 1, 1000) = 0 (Timeout) ioctl(3, RNDADDENTROPY, 0x11b9010)      = 0 ioctl(4, USBDEVFS_SUBMITURB, 0x7fff171a3960) = -1 EBUSY (Device or resource busy) write(2, "USB write failed\n", 17)      = -1 EPIPE (Broken pipe) --- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=2527, si_uid=0} --- exit_group(-1)                          = ? +++ exited with 255 +++
So I guess it has something to do with ftdi_write_data. Any idea why it works fine when executed  from command line and not from udev rule ?

And BTW there seems to be a zombie process just after plugin-in the device:
asusport ~ # ps faux|grep infnoise
root      1002  0.0  0.0      0     0 ?        Z    16:43   0:00      _ [infnoise]
root      1005  0.0  0.0  12748  2192 pts/1    S+   16:43   0:00  |           _ grep infnoise
root      1003  0.5  0.0  16024  2088 ?        S    16:43   0:00 /usr/local/bin/infnoise --dev-random --daemon

Hello,
This method doe's not work on Debian Jessie.
Here is relevant dmesg output on device insertion:
[83350.556035] usb 2-4: new full-speed USB device number 18 using ohci-pci
[83350.787052] usb 2-4: New USB device found, idVendor=0403, idProduct=6015
[83350.792483] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[83350.797963] usb 2-4: Product: FT240X USB FIFO
[83350.803363] usb 2-4: Manufacturer: FTDI
[83350.808681] usb 2-4: SerialNumber: DN004WRD
[83350.822111] ftdi_sio 2-4:1.0: FTDI USB Serial Device converter detected
[83350.828454] usb 2-4: Detected FT-X
[83350.833961] usb 2-4: Number of endpoints 2
[83350.839446] usb 2-4: Endpoint 1 MaxPacketSize 64
[83350.844883] usb 2-4: Endpoint 2 MaxPacketSize 64
[83350.850146] usb 2-4: Setting MaxPacketSize 64
[83350.863116] usb 2-4: FTDI USB Serial Device converter now attached to ttyUSB0
[83351.068409] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[83351.074254] ftdi_sio 2-4:1.0: device disconnected
[83382.640061] usb 2-4: usbfs: process 6260 (infnoise) did not claim interface 0 before use
Here is relevant journalctl output:
<...> same as above <...>
Aug 17 16:17:33 homeserv kernel: ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
Aug 17 16:17:33 homeserv kernel: ftdi_sio 2-4:1.0: device disconnected
Aug 17 16:18:03 homeserv systemd-udevd[6258]: timeout '/usr/local/bin/infnoise --dev-random --daemon'
Aug 17 16:18:04 homeserv kernel: usb 2-4: usbfs: process 6260 (infnoise) did not claim interface 0 before use
Aug 17 16:18:34 homeserv systemd-udevd[6258]: timeout '/usr/local/bin/infnoise --dev-random --daemon'
If started by user from console runs as expected.

Actually, using udev for this is not the right way, as we want to start a daemon which is not the idea of udev.
Thats why all the problems arise..
Jul 25 17:57:23 zen systemd-udevd[616]: seq 3118 '/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0' is taking a long time
Jul 25 17:59:23 zen systemd-udevd[616]: seq 3118 '/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0' killed
I'm gonna try to write a systemd device unit, which will hopefully do the job.

Is everything working OK with udev now?  If so, I'll close this issue.


the entire mtcnn was broken :/ push fix asap pls!

syntax error fix broke the main function. Script was not able to run.
https://github.com/ipazc/mtcnn/issues/62

lol that was wrong.. i have another fix there works.. hope to push it.


Crash report - runtime error: index out of range (git create after git init --bare)

Error (runtime.errorString): runtime error: index out of range
Stack:
goroutine 1 [running]:
panic(0x780ca0, 0xc420010140)
	/nix/store/6s9ipd2x4zm8nk5ml7dfdvibq2azg8x9-go-1.7.4/share/go/src/runtime/panic.go:458 +0x243
github.com/github/hub/git.WorkdirName(0xc4200e81e0, 0x1c, 0x0, 0x0)
	/tmp/nix-build-hub-2.2.9.drv-0/go/src/github.com/github/hub/git/git.go:70 +0xb6
github.com/github/hub/commands.create(0x9a65e0, 0xc4200230e0)
	/tmp/nix-build-hub-2.2.9.drv-0/go/src/github.com/github/hub/commands/create.go:66 +0x6a
github.com/github/hub/commands.(*Command).Call(0x9a65e0, 0xc4200230e0, 0x7fff343fecf6, 0x6)
	/tmp/nix-build-hub-2.2.9.drv-0/go/src/github.com/github/hub/commands/commands.go:47 +0x91
github.com/github/hub/commands.(*Runner).Call(0xc420011710, 0x9a65e0, 0xc4200230e0, 0x6, 0xc420083d68, 0xc42005fed8, 0x401039)
	/tmp/nix-build-hub-2.2.9.drv-0/go/src/github.com/github/hub/commands/runner.go:108 +0x39
github.com/github/hub/commands.(*Runner).Execute(0xc420011710, 0x814970, 0x47dabe, 0xc42001c180, 0x0)
	/tmp/nix-build-hub-2.2.9.drv-0/go/src/github.com/github/hub/commands/runner.go:96 +0x1e9
main.main()
	/tmp/nix-build-hub-2.2.9.drv-0/hub/main.go:14 +0x51

Runtime:
GOOS: linux
GOARCH: amd64

Version:
git version 2.11.1
hub version 2.2.9

Thanks for reporting! Duplicate of https://github.com/github/hub/issues/1331


Should we make int32's configurable?

Just noticing that we rely a lot on 32-bit integers in datashader quite a bit - grepping for 'i4' and 'int32'. Should we make these configurable at some point? Either way, it would be nice if we had more tests that exercise inputs that exceed 2.15B, and verify that we aren't encountering subtle overflow issues (probably easier said than done). What do you think?

Yes, we should, thanks.  int32 is good as a default for performance reasons, but should be configurable.  Note that not all int32 types will be relevant for the dataset size, as e.g. using int32 for the aggregate array cell doesn't limit it to 2.15B data points, just 2.15B data points per pixel.  Still needs to be configurable, of course.


Update Onja description

This is such a cool thing, but your description is so dry! Why did you do it? What did you get out of it? What did they get out of it?
https://github.com/ndorfin/cv/blob/b116bf61170f344f602d9df86d70a1ca45e9d33b/CV-ShaunO'Connell.html#L270

Done, thanks!


[KYUUBI #2761] Flaky Test: engine.jdbc.doris.StatementSuite - test select

Why are the changes needed?

close https://github.com/apache/incubator-kyuubi/issues/2761#issue-1250326421
How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[ ] Run test locally before make a pull request

Codecov Report

Merging #2816 (c3475db) into master (b42c28b) will increase coverage by 0.07%.
The diff coverage is 78.26%.

@@             Coverage Diff              @@
##             master    #2816      +/-   ##
============================================
+ Coverage     62.84%   62.91%   +0.07%
  Complexity      202      202
============================================
  Files           480      481       +1
  Lines         21339    21415      +76
  Branches       2833     2843      +10
============================================
+ Hits          13411    13474      +63
- Misses         6651     6663      +12
- Partials       1277     1278       +1

Impacted Files
Coverage Δ

...a/org/apache/kyuubi/service/TFrontendService.scala
94.65% <0.00%> (-0.30%)
:arrow_down:

...kyuubi/server/statestore/api/SessionMetadata.scala
95.23% <0.00%> (ø)

...g/apache/kyuubi/session/KyuubiSessionManager.scala
85.36% <ø> (-1.22%)
:arrow_down:

...e/kyuubi/server/statestore/SessionStateStore.scala
91.54% <62.50%> (-3.84%)
:arrow_down:

.../apache/kyuubi/server/api/v1/BatchesResource.scala
87.87% <66.66%> (+0.92%)
:arrow_up:

...e/kyuubi/client/api/v1/dto/CloseBatchResponse.java
72.22% <72.22%> (ø)

...g/apache/kyuubi/operation/BatchJobSubmission.scala
83.05% <72.50%> (-4.19%)
:arrow_down:

.../apache/kyuubi/client/KyuubiSyncThriftClient.scala
88.18% <82.85%> (-0.40%)
:arrow_down:

...rg/apache/kyuubi/server/api/v1/AdminResource.scala
90.90% <90.90%> (ø)

...a/org/apache/kyuubi/operation/OperationState.scala
44.44% <100.00%> (+1.58%)
:arrow_up:

... and 17 more

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 9265cf3...c3475db. Read the comment docs.

I have update the docker image. It may be fix the problem. @ulysses-you

thanks, merging to master


[ansible] be able to define watch[Dependent,ClusterScoped]Resources as CR annotations

Today, a user can modify the reconcile period by annotating the CR with ansible.operator-sdk/reconcile-period: "120s". The default is defined in the watches.yaml setting called reconcilePeriod.
There is no analogous CR annotation to disable/enable dependent resource watching. For example, in watches.yaml there are settings called watchDependentResources and watchClusterScopedResources. This enhancement request is to create annotations that can be put on the CR to set those values in the same way the reconcile-period annotation can override the watches.yaml's reconcilePeriod setting.
From @fabianvf on slack:
I think it would definitely be doable, it's just the sort of thing we'd
want to be careful about adding as it allows the user to fundamentally
alter the behavior of the operator in a way that the operator author
may not have intended. Not sure what security options we have but
if we allow per-cr customization to that level we might need to also
add some controls so that authors can disable the behaviors

Hi @jmazzitelli,
It is duplicated of #2502 and it is implemented already. See https://sdk.operatorframework.io/docs/ansible/development-tips/#ansible-operator-annotations. You can use the annotation ansible.operator-sdk/reconcile-period: "30s".
I am closing this one as sorted out and duplicated.

You can use the annotation ansible.operator-sdk/reconcile-period: "30s".

I think there is confusion. I do not think this is a dup of that issue. As my issue description already states, yes, there is this reconcile-period annotation already. I'm asking for something different. That reconcile-period simply triggers the playbook every X seconds. But suppose I don't want to blindly run the playbook every X seconds, but instead run whenever a dependent resource is touched?
The operator author can define this behavior in watches.yaml via watchDependentResources and watchClusterScopedResources - but there is no way for a CR author to set their own values for those settings via annotations.
See the response @fabianvf told me on slack about this (I copy-n-pasted his slack response in this issues description as well).

Hi @jmazzitelli,
Sorry for my misunderstanding of your question/RFE. You looking for to set the  reconcilePeriod diff for the watchDependentResources and watchClusterScopedResources via the watches file? I will keep it open and we will discuss this in the next bug triage meeting.

@camilamacedo86  Let me explain how I think things work today (in case I misunderstand something myself), and perhaps make this enhancement request more clear. In short, it is not involving anything about reconcile period.
I understand the watches file and the CR annotation can define a reconcile period of X seconds - this allows the playbook to be blindly run every X seconds. So, if reconcilePeriod is set to "60s" that means every 60 seconds the playbook is executed.
That is NOT what I am concerned about.
Now, I also know the watches file has two other settings called watchDependentResources and watchClusterScopedResources. These are booleans (true or false) - they are NOT reconcile periods or time durations.
As I understand it, when those settings are true, they will create k8s watches on all resources that the operator creates (cluster scoped and namespace scoped). When those watches are triggered (say, by a user deleting or modifying one of those operator-created resources), the playbook is immediately executed. There is no reconcile period consulted - there is no time delay or "every X seconds" - involved here. Whenever a dependent resource (i.e. an operator-created resource) is touched, the playbook is immediately invoked.
That behavior is only enabled or disabled by the operator author via the watches.yaml settings. However, I am asking if it is possible to allow the CR author to enable or disable that functionality by some new annoations, say, something like:
annotations:
  ansible.operator-sdk/watch-dependent-resources: "true"
  ansible.operator-sdk/watch-cluster-scoped-resources: "true"

I understand @fabianvf concern that this might turn on or off capabilities that the operator author does not intend. However, in my use case, it would be beneficial to allow a user to enable this capability.

Hi @jmazzitelli,
IMO we should not move forward with because when we do  watchDependentResources  and watchClusterScopedResources  what actually are doing is creating watches for these resources in the same way that it works in GO such as:
// TODO(user): Modify this to be the types you create that are owned by the primary resource
// Watch for changes to secondary resource Pods and requeue the owner Memcached
err = c.Watch(&source.Kind{Type: &appsv1.Deployment{}}, &handler.EnqueueRequestForOwner{
    IsController: true,
    OwnerType:    &cachev1alpha1.Memcached{},
})
if err != nil {
    return err
}

err = c.Watch(&source.Kind{Type: &corev1.Service{}}, &handler.EnqueueRequestForOwner{
    IsController: true,
    OwnerType:    &cachev1alpha1.Memcached{},
})
if err != nil {
    return err
}

Which means that any event raised (create/update/delete) on these KInds will re-trigger the reconcile and I do not see how a watched resource would fit with a "reconcile period" in GO for this feature as well. So, let's see what the others think about.

Which means that any event raised (create/update/delete) on these Kinds will re-trigger the reconcile and I do not see how a watched resource would fit with a "reconcile period" in GO as well

I don't understand this linkage with "reconcile period" in the context of this enhancement request. Perhaps I misunderstand why you are bringing up reconcile period. AFAIK, the watch-dependent-resources feature is orthogonal to the periodic reconciliation executions invoked by "reconcile period" setting. Isn't it true that I can have a reconcile-period of 0 OR non-0 and enable OR disable watching dependent resources (so any combination is possible and should work).
In other words, what does the reconcile period setting have to do with this watch-dependent-resources feature - because I do not see them as related. Unless you are concerned that when an event on a watched resource comes in, that that might trigger a playbook that might already be running due to a reconcile-period having also triggered it? But if that would be a problem, then that is already a problem because an operator author could have enabled watch-dependent-resources in watches.yaml but a CR author could annotate the CR with reconcile-period of non-zero (so in that case, a playbook could get triggered both by a watch event and a reconcile period).

Hi @jmazzitelli,
So, by following your suggestion we will need to ignore the watch of any resource that for example has the annotation ansible.operator-sdk/watch-dependent-resources: "false". Am I right?
The watch for the dependent ansible files shows be implemented here. And then, it would need to be implemented to have filters for the labels as described in https://github.com/kubernetes-sigs/controller-runtime/issues/244.
Also, note that you can indeed disable the watch for specific GVKs by using the feature blacklist already which I understand that is not exactly what you are looking for but can help you with so far.
Example:
# ConfigMaps owned by a Memcached CR will not be watched or cached.
- version: v1alpha1
  group: cache.example.com
  kind: Memcached
  role: /opt/ansible/roles/memcached
  blacklist:
    - group: ""
      version: v1
      kind: ConfigMap

I do remember the blacklist feature now that you mention it, but I don't think you can specify a blacklist in the CR (i.e. it can only be declared by the operator author in the watches.yaml) - see https://sdk.operatorframework.io/docs/ansible/reference/watches/

So, by following your suggestion we will need to implement the watch to ignore any resource that for example has the annotation ansible.operator-sdk/watch-dependent-resources: "false". Am I right?

Right. That's what I am proposing. So, following your example there, suppose I have a Memcached CR that looks like this:
apiVersion: "cache.example.com/v1alpha1"
kind: "Memcached"
metadata:
  name: "example-memcached"
  annotations:
    ansible.operator-sdk/watch-dependent-resources: "false"
spec:
  size: 3

This would mean the operator will not watch any dependent resources, EVEN IF the Memcached operator has watchDependentResources: true in its watches.yaml.
Conversely, if I annotate the Memcached CR with this instead:
    ansible.operator-sdk/watch-dependent-resources: "true"

Then I'm telling the Memcached Operator that I want it to watch all dependent resources and re-run its playbook when a dependent resource is touched, EVEN IF the Memcached operator has watchDependentResources: false in its watches.yaml.
Now, this gets to the issue that @fabianvf raises. What if an operator is written with the explicit requirement that watchDependentResources must be true (i.e. the operator needs those watches and must be told when a dependent resource is touched). Or vice-versa - perhaps the operator explicitly does NOT want to be told when dependent resources are touched and so needs watchDependentResources to be false). In those cases, we should not allow the user to overwrite the watch flag in the CR via that annotation. So, perhaps we would need to add a flag in the watches.yaml that the operator author can use to indicate "I do NOT want the user to be able to overwrite the watch-dependent-resources flag". Something like this in watches.yaml:
watchDependentResources: true
watchDependentResourcesOverrideAllowed: false

When the author sets watchDependentResourcesOverrideAllowed to false then the operator SDK should emit an error if a user puts that annotation in the CR and its value is different than the value in the watches.yaml - i.e. the user should not be allowed to change the value that the author wants.
Therefore, I propose the following:
Add two new settings in watches.yaml:

watchDependentResourcesOverrideAllowed (whose value is a boolean)
watchClusterScopedResourcesOverrideAllowed (whose value is a boolean)

Add two new annotations that can be added to a CR:
annotations:
  ansible.operator-sdk/watch-dependent-resources: "<boolean>"
  ansible.operator-sdk/watch-cluster-scoped-resources: "<boolean>"

If the annotation ansible.operator-sdk/watch-dependent-resources is true, the operator SDK should add watches to dependent resources, regardless of the value of watchDependentResources in watches.yaml. If the annotation is false, the operator SDK should NOT add watches to dependent resources, regardless of the value in watches.yaml. Analogous behavior should occur for ansible.operator-sdk/watch-cluster-scoped-resources and watchClusterScopedResourcesOverrideAllowed.
But if watches.yaml sets watchDependentResourcesOverrideAllowed to false and the user added the annotation ansible.operator-sdk/watch-dependent-resources: <bool> then the annotation value  must be the same as the value of watchDependentResources in the watches.yaml or an error should result. Same analogous behavior should occur with watchClusterScopedResourcesOverrideAllowed and ansible.operator-sdk/watch-cluster-scoped-resources.
Hopefully that makes sense. From the brief discussion I had on this with @fabianvf , he seemed to indicate this kind of thing was possible, with the caveat that it might cause problems if the operator author expects a certain watch-dependent-resource behavior - but perhaps my suggestion for the two "OverrideAllowed" settings in watches.yaml alleviates that concern.

Hi @jmazzitelli,
I catcher the @fabianvf's point and it shows introduce a complexity not just in the implementation in order to make it maintained and works as you described as its usage for the users. So, what are the problems and use cases that would be solved/beneficiated with these features? Could you describe what are the scenarios that would justify this introduction?

Could you describe what are the scenarios that would justify this introduction?

Yes. In my particular case - the Kiali Operator - the operator works perfectly fine without any periodic reconciliation (reconcilePeriod=0) and without any dependent-resource watching (watchDependentResources=false, watchClusterScopedResources=false). In other words, the Kiali Operator does not require those features in order for the Kiali Operator to function properly. The Kiali Operator sits dormant for the vast majority of the time (taking up very little cluster resources) until someone creates or modifies a Kiali CR. I like Kiali Operator not having to consume resources when it doesn't have to.
However, I had a user that wanted the operator to run a reconciliation when, say, someone accidentally/purposefully deleted the Kiali Deployment - he wanted the Deployment to get resurrected by the operator automatically. A perfect reason to turn on either periodic reconciliation or dependent-resource-watching. Because of this feature request, I wrote up this issue here.
But I noticed that when I turned on periodic reconciliation in watches.yaml (e.g. "reconcilePeriod=60s"), obviously my operator's playbook is run EVERY 60 seconds, even when it doesn't need to (and remember, Kiali Operator works fine without periodic reconciliation). So my operator immediately went from using almost no cluster resources (e.g. CPU/memory) the vast majority of time to needing resources every minute; and this is bad especially considering that each run of the Kiali Operator's playbook could take 30 seconds or even a minute to complete (thus the Kiali Operator would effectively be continually running its playbook non-stop). So I did not want to enable that by default. I could tell the user to turn on periodic reconciliation via the CR annotation, but that would mean that user would be seeing the Kiali Operator take up those resources every minute and I didn't think that would be good. The alternative would be to change it to something like 5 minutes, but.. meh...
OK, so then I said to myself, "why not try this dependent-resource-watch feature?" So I went back and set reconcilePeriod back to "0" but enabled watchDependentResources=true and watchClusterScopedResources=true (note: my operator does create and manage cluster-scoped resources). And that worked better. Now the operator stays dormant until either the CR is created or modified OR one of the resources that operator creates is touched. That's exactly what the user wanted.
However, there is one thing that bugs me about how that feature works. I noticed that every time a new CR is created (i.e. a Kiali CR is created to indicate that the operator needs to install an operand - the Kiali Server) my playbook is invoked twice. I talked to @fabianvf about this to see if I can find out what event causes this second invocation with the hope of being able to quickly abort the playbook run if I can determine it is an unimportant event that doesn't require the playbook to re-run, but he told me the SDK does not even log what event or dependent resource triggered the playbook invocation. So I cannot tell you exactly why this immediate second invocation happens, but it happens, and the operator has no way of determining if it should circumvent the full playbook reconciliation run. And notice that my playbook takes about 30 to 60 seconds to fully complete (even when it changes nothing). So it is annoying to effectively have the Kiali Operator playbook run twice when a Kiali CR is created, rather than just the one time that is necessary in order to install the operand at CR creation time.
So - the solution to this would be - I'll turn off dependent-resource watch by default. Only if a user WANTS this capability to reconcile changes to dependent resources (with the negative side effect of having the playbook triggered multiple times, thus the operator taking more time and resources before going "dormant" again), then the user merely has to annotate his CR with these annotations we are talking about: ansible.operator-sdk/watch-dependent-resources and
ansible.operator-sdk/watch-cluster-scoped-resources.
Thus the best of both worlds - the operator can be configured, by default, to use very little cluster resources and will only run when absolutely necessary (at CR creation or modification time) but the user can configure the operator to do reconciliation of dependent resources if they want that additional capability (at the expense of having the operator use more resources). This trade-off is why I would like the flexibility of being able to turn on and off the dependent-resource-watching feature by the user.

Hi @jmazzitelli,
So, IMO we might need to address these via docs instead of that such as make clear to the users that:

they should avoid a small period of reconciliation and make a statement similar to the sync period attribute of manager.Options for the ReconcilePeriod option:

// A lower period will correct entropy more quickly, but reduce
// responsiveness to change if there are many watched resources. Change this
// value only if you know what you are doing.

they can create many CRD's and use the APIs to persuade the concepts such as single responsibility, cohesion and encapsulation
And then, that by persuading these concepts they would able to re-use more their code, increase the maintenance ability as take more advantage of the Ansible operator features and has more flexibility to do more granular configurations since they are able to define watchDependentResources, watchClusterScopedResources, blackList per GVK(role/playbook) as its reconciliation period as well.

Example:

- version: v1alpha1
  group: app.example.com
  kind: AppService
  playbook: playbook.yml
  maxRunnerArtifacts: 30
  reconcilePeriod: 60s
  manageStatus: False
  watchDependentResources: True

- version: v1alpha1
  group: app.example.com
  kind: Databse
  playbook: playbook.yml

In this way, users probably would not end up in this scenario and needing these features. However, if users still requiring this kind of customizations it can be addressed with the hybrid operators. See: https://github.com/operator-framework/operator-sdk/issues/670
@fabianvf wdyt?

they are able to re-use more their code, increase the maintenance ability as take more advantage
of the Ansible operator features and has more flexibility to do more granular configurations since'
they are able to define watchDependentResources, watchClusterScopedResources, blackList per
GVK(role/playbook)as its reconciliation period as well in the watches file.
...
if users still requiring this kind of customizations it can be addressed with the hybrid operators.

Is the suggestion that users of Kiali build their own operator (extending the existing Kiali Operator) if they want to optionally perform the dependent resource watch? I certainly do not want to ask my users to build an operator. Just getting them to deploy and use an operator is a difficult task (do you know how many times people have asked me to just provide a helm chart for my operand? People are not enthusiastic when asked to just USE an operator - I shutter to think what the reaction would be if we tell them they have to build their own just to get an operand to install).
My users only care about "I want to install Kiali." Today, they have to install the Kiali Operator and create a Kiali CR in a watch namespace to see the operand get installed somewhere. Most of my users (I contend, the majority of them) don't even know what an operator is, let alone how to build one.
I think it is a non-starter if a solution includes asking operand users to build their own operators.
That suggestion in the previous comment's example:
- version: v1alpha1
  group: app.example.com
  kind: AppService
  playbook: playbook.yml
  maxRunnerArtifacts: 30
  reconcilePeriod: 60s
  manageStatus: False
  watchDependentResources: True

- version: v1alpha1
  group: app.example.com
  kind: Databse
  playbook: playbook.yml

requires the user to actually build an operator. Of course, for Red Hat customers, this is a non-starter because their operator will not show up in the OperatorHub as a "Red Hat Provided" operator and obviously will not be supported as one.
So for these reasons I really think this is not a viable option.

Hi @jmazzitelli,
Just to clarifies. When I say users, I mean SDK users and not users of some project built with. Ansible Operator SDK developers can build their projects by persuading good practices.

In this way, IMO the problem described that motivates you to raise the RFE could be solved/addressed by improving the docs to make more clear some recommendations.

So would the recommendation be something like: set reconcilePeriod to some large value (say, 15 minutes) but also turn on dependent-resource-watching? I actually don't think I need both - I just need one or the other. But each has pros and cons - and I would prefer to give the user the option/authority to pick which one they want, rather than me as the operator author to impose that choice upon the user (e.g. I don't want to force the user to use extra cluster resources if that is something the user doesn't want to compromise on).

Doing a drive-by here (@fabianvf shoot this down if this isn't what you have in mind)
This makes sense to me, but the implementation is going to look at little different than what the UX makes it seem like is happening.
If a watch is setup for a particular resource type, events will come in regardless of whether the CR has this new annotation. So when the event comes in, we would lookup the owner, check its annotation, and only then allow the event to trigger a reconciliation.
The naive implementation would require that watchDependentResources is true and then allow the CR annotation to set it to false.
Doing it the other way around (default to NOT watching dependent resources, but allow it if a CR annotation is set to true), would mean still actually watching all the dependent resources, but only triggering reconciliation if the annotation is true.

@joelanford ah.. yeah, I didn't think about the implementation of my suggestion. Now, considering I do not know anything about the ansible operator SDK implementation details, what I say here may be naive but -- couldn't the SDK wait to decide if it needs to watch the dependent resources until after the CR is initially created? Because (a) the resources aren't created until the CR is created and (b) but at that point, the CR annotations are also known.
So, the operator could have watchDependentResources set to false in watches.yaml - thus the SDK defaults to not watching. But then when the CR is created (with the annotation turning watch on) - at that point, the SDK sees the resources need to be watched - and it is at that same time the SDK triggers the playbook (so it can set a flag of some sort to say, "anything this playbook creates needs to be watched").
Ignore me if this makes no sense because, as I say, I'm oblivious to the SDK Go implementation code :)

I think that would be problematic. Consider this scenario:

We have a primary CR that reconciles a Secret
watchDependentResources: false is set in watches.yaml
CR1 comes in with annotations["watchDependentResources"]: true, so we start watches for Secrets owned by CR instances.
CR2 comes in with no annotation set. It is reconciled and its child Secret is created.
CR2's child Secret is manually changed.
Due to the watch setup from when CR1 was reconciled, an event comes in for CR2's Secret that triggers CR2 to be reconciled. This would be unexpected since the global watches.yaml value is set to false and it was not overridden in CR2's annotations.

Due to the watch setup from when CR1 was reconciled, an event comes in for CR2's Secret that triggers CR2 to be reconciled. This would be unexpected since the global watches.yaml value is set to false and it was not overridden in CR2's annotations.

Yes, I see your point. Though, couldn't the SDK check, "there is no annotation on the CR that owns the Secret (CR2), and the watches.yaml value is "false" so even though I got an event for this CR2 Secret resource, the owning resource (CR2) behavior (based on no annotation and global watches.yaml) dictates that the playbook should not be triggered right now"

It could. I'm just pointing out that we need to be careful with the implementation to handle these cases (and write unit tests to verify them!)

My suggestion to address the scenario which motivates the RFE is: https://github.com/operator-framework/operator-sdk/pull/3384. IHMO is that this kind of customizations would more appropriately done in the specific cases by the owner projects when/if they find required via the hybrid operators instead of provided by default.

@camilamacedo86 I finally understand what you are suggesting to do. You are saying, "Rather than have the user add annotations to the CR, have the user create a different Kind of CR to indicate what behavior they want".
So in the Memcached example, I could create this:
apiVersion: "cache.example.com/v1alpha1"
kind: "Memcached"
metadata:
  name: "example-memcached"
spec:
  size: 3

Or this:
apiVersion: "cache.example.com/v1alpha1"
kind: "MemcachedWatchDependentResources"
metadata:
  name: "example-memcached"
spec:
  size: 3

and the operator would watch for the different CRDs (one to indicate dependent resource watching is on, one with it off).
I'm meh on that because (a) it adds more CRDs that my operator has to be associated with (what happens when I need to bump up my CRD versioning - I now have 2 I need to bump and manage). I just don't like having more CRDs that I have to maintain than I have to. And (b) to me it is confusing/misleading to have different CRDs just to be able to alter this watch behavior (to me, a different CRD would indicate a different operand - not simply just a small change in operator implementation behavior - that seems the classic purpose for annotations).
Also, what if the operator utilizes the built in variable "_$GROUP_$KIND" - now the operator has to be refactored so it can handle the different versions of CRDs (e.g. _cache_example_com_memcached and _cache_example_com_memcachedwatchdependentresources) even though it really shouldn't matter (at least in my case) - the playbook functionality is the same.
It just seems to me this triggering of the reconciliation (i.e. the calling of the playbook) on changes to a dependent resource is very analogous to the annoation "reconcile-period" - it seems to make sense to have the same mechanism (annotations) to trigger the calling of the playbook when a dependent resource is touched just as when you want some arbitrary time period expiring do the same thing.

Hi @jmazzitelli,
Just to clarifies.
And (b) to me it is confusing/misleading to have different CRDs just to be able to alter this watch behavior
The suggestion is NOT for you only be able to have this watch behaviour. The suggestion is for developers following good practices.
See that when a CR/CRD is created/defined means a new resource/class(representation) with these attributes. So, if we use the same class to define all the different sorts of resources, we may be hurting concepts such as encapsulation, single responsibility principle and almost for sure cohesion that may cause unexpected sides effects such difficulty to read, maintain/improve and extend, just to mention a few. Just to clarify my POV, it is the same as defining a User class which will have attributes related to other objects and do not respect its domains. For example; add to the Client Kind attributes that are part of a Shoe Kind domain. Particularly  I'd recommend you persuade the DDD concept to design the solutions.

I still would like this feature. However, I hacked around it myself by creating my own setting in the CR to be able to turn on and off reconciliation manually if the user sees the operator going into infinite reconciliation loops (typically this happens due to bugs in the operator).


HTTPS & EPROTO error

What happened?
I tried to crawl a site that switches from http to https and I get fetch client errors. This has got something to do with https because it doesn't happen with other than https sites.
What should have happened?
It should have fetched the page properly.
Steps to reproduce the problem
I start to crawl http://add.org and it gets the homepage correctly because ADD haven't implemented https redirect to the root. All the links on the homepage are HTTPS so the following fetches are under HTTPS. Code is standard boilerplate from the examples and the error I get is {"host":"add.org","path":"/pab/","port":443,"protocol":"https","uriPath":"/pab/","url":"https://add.org/pab/","depth":2,"referrer":"http://add.org/","fetched":true,"status":"failed","stateData":{"code":600},"id":12},{"code":"EPROTO","errno":"EPROTO","syscall":"write"}.
I also applied fix from #288 manually because for whatever reason it doesn't seem to exist in NPM or master but all it did was that now port shows 443 correctly. Without the fix port is empty but in either case it fails.

Hey, thanks for filing an issue! That's kind of a special case there with http://add.org. Do I understand it correctly that even if you apply the changes from #288, it still doesn't work correctly?
simplecrawler does consider sites that use HTTP and sites that use HTTPS as different, and it shouldn't really follow links that use HTTPS from a page that was fetched over HTTP. Even though you say that they code you're using is standard boilerplate, would you mind posting a use case so that I can try and reproduce the problem?

Yes, I applied the changes and I see from the error that port 443 is applied correctly at least to the error message ;)
Here's the code. My URLs are domains without protocol or subdomain.
let myCrawler = new Crawler('http://'+url);
myCrawler.respectRobotsTxt = false
myCrawler.useProxy = true

let prox = _.shuffle(proxies)[0]
myCrawler.proxyHostname = prox[0]
myCrawler.proxyPort = prox[1]
myCrawler.proxyUser = prox[2]
myCrawler.proxyPass = prox[3]
myCrawler.maxConcurrency = CONCURRENT_FETCH_THREADS
myCrawler.maxDepth = 2
myCrawler.scanSubdomains = false
myCrawler.filterByDomain = true
myCrawler.start()

Coming back to this now, first of all I should correct myself, because simplecrawler only makes a difference between different protocols on the same domain in certain aspects. When adding items to the queue, no distinction is made, but when it comes to robots.txt filtering, different protocol and domain name combinations are considered different. The latter aspect should be transparent however, and shouldn't be something you have to worry about.
What's more likely to be going on here is something with the proxy settings. I know it's been some time since the last activity on this issue, but if you could give me some insight into what setup you're using for your proxy, that would be great!

Because I saw your discussion here: we had the same problem with our cooperate proxy, that we ended up into an ssl issue. But we resolved it by simply change the getRequestOptions function in that way, that we do not anymore replace request host, port but we set an agent with the help of the package "https-proxy-agent". Only as a small hint here.


build error for mac

compilation terminated.
make: *** [Release/obj.target/qt/src/qt.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 15.3.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/steppenwolf/openSource/TalkGG/node_modules/node-qt
gyp ERR! node -v v4.2.2
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
npm verb unsafe-perm in lifecycle true
npm info<EMAIL_ADDRESS>Failed to exec install script
npm verb unlock done using /Users/steppenwolf/.npm/_locks/node-qt-96f067b7d3d1086f.lock for /Users/steppenwolf/openSource/TalkGG/node_modules/node-qt
npm verb stack Error<EMAIL_ADDRESS>install: node-gyp rebuild
npm verb stack Exit status 1
npm verb stack     at EventEmitter. (/usr/local/lib/node_modules/npm/lib/utils/lifecycle.js:214:16)
npm verb stack     at emitTwo (events.js:87:13)
npm verb stack     at EventEmitter.emit (events.js:172:7)
npm verb stack     at ChildProcess. (/usr/local/lib/node_modules/npm/lib/utils/spawn.js:24:14)
npm verb stack     at emitTwo (events.js:87:13)
npm verb stack     at ChildProcess.emit (events.js:172:7)
npm verb stack     at maybeClose (internal/child_process.js:818:16)
npm verb stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
npm verb pkgid<EMAIL_ADDRESS>npm verb cwd /Users/steppenwolf/openSource/TalkGG
npm ERR! Darwin 15.3.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "--save" "-verbos" "node-qt"
npm ERR! node v4.2.2
npm ERR! npm  v2.14.7
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>install: node-gyp rebuild
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the node-qt package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls node-qt
npm ERR! There is likely additional logging output above.
npm verb exit [ 1, true ]
npm verb unbuild node_modules/node-qt
npm info preuninstall<EMAIL_ADDRESS>npm info uninstall<EMAIL_ADDRESS>npm verb unbuild rmStuff<EMAIL_ADDRESS>from /Users/steppenwolf/openSource/TalkGG/node_modules
npm info postuninstall<EMAIL_ADDRESS>npm verb gentlyRm don't care about contents; nuking /Users/steppenwolf/openSource/TalkGG/node_modules/node-qt
npm ERR! Please include the following file with any support request:

Any update how you resolved this issue, as I'm currently seeing similar issue on Mac.


Request: Add "Ignore Leading Articles When Sorting" toggle option in UI Settings

This is a really nice feature in AmberELEC that would be lovely to have on ArkOS as well.
"Legend of Zelda, The" just doesn't have the same ring to it :)

I'm not quite sure I fully understand how this feature is supposed to work but I just merged it from Batocera's Emulationstation which is what AmberElec uses.  Follow the directions here to load and test this and report back if it works as expected.

Take the attached compressed file (arkosbackup.tar.gz) and put it in your roms/backup folder. Do not uncompress the contents! Just place the file as is in your roms/backup folder. If you don't have a backup folder in the roms folder, just create it.

Then go into the Emulationstation Menu, scroll to Options, hit A, then go to Advanced, hit A, then scroll all the way down to Restore Settings, hit A.

Once completed.  Reboot the device and confirm functionality.

again, let me know how it works out.
Thanks,
arkosbackup.tar.gz

Oh.  I should’ve asked what unit you were using.  Are you familiar with ssh?

As for how this feature is intended to work, here are some examples.
This is my RG351P running AmberELEC with the "Ignore Leading Articles When Sorting" UI setting turned on. As you can see, this allows games that start with a leading article like the word "The" to show the word at the beginning of the title as intended but still be properly sorted alphabetically by the next word instead. So in this case, "The Legend of Zelda", "The Lion King", etc can be listed properly in the L's, instead of in the T's.

And here is my RG351V running ArkOS, which currently needs to have the leading article changed to be at the end of the display name to sort properly, so "The Legend of Zelda" and "The Lion King" must become "Legend of Zelda, The" and "Lion King, The".

Both have the same ROM files on them, just AmberELEC is ignoring the word "The" for sorting purposes.

For the rk2020 running ArkOS only!
While powering on your device, press and hold the B button down until you boot into the Boot and Recovery Tools menu.  Make sure you have a compatible wireless adapter connected and press the A button on Enable Remote Services.  Once you've done that, you'll need to copy the emulationstation.header and emulationstation file from the attached zip file to your device using winscp.  Just copy them to the /home/ark location.  Once you do that, ssh into the device using a program like Putty.  Once you're in the device, copy and paste the following command into the ssh session then press enter.
sudo cp /home/ark/emulationstation* /usr/bin/emulationstation/. && sudo chmod 777 /usr/bin/emulationstation/emulationstation* && sudo reboot

Once complete, your device should reboot and emulationstation should start up.  Then you can test and confirm the Ignore Leading Articles When Sorting option in the start menu, UI Settings works as expected.  Let me know you results either way.
Thanks again
emulationstations.zip

If all works well on the RK2020, you can use the following backup package to update the emulationstation on your ArkOS install for your 351v following the instructions from https://github.com/christianhaitian/arkos/issues/645#issuecomment-1436037166
arkosbackup.tar.gz

Once complete, your device should reboot and emulationstation should start up. Then you can test and confirm the Ignore >Leading Articles When Sorting option in the start menu, UI Settings works as expected.

Indeed it does! Thank you for the guide on how to restore the RK2020. I will test it on my RG351V in a little bit and post those results as well.

If all works well on the RK2020, you can use the following backup package to update the emulationstation on your ArkOS install for your 351v following the instructions from #645 (comment)
arkosbackup.tar.gz

Yes, it works well! Awesome, thank you for your help!
Is this option something you would consider adding to the builds going forward?

yes.  I'm going to merge them into fcamod since you've confirmed it works as expected and credit you for the request and testing.  Thanks again.

Officially added with today's update.  Thanks again for suggesting and testing.

Officially added with today's update. Thanks again for suggesting and testing.

Thank you for all your hard work and dedication to this project!


try to make ci-release work

Hum I don't know why travis is not starting...
https://github.com/julien-truffaut/Monocle/issues/616

restarted on another branch


OAuth and multiple accounts

A user has reported that while logged into their personal account, they logged in to Always Be Running through NRDB, and found themselves logged into ABR as an organizational account they use sometimes.

do you have more details?  An organizational account for ... what exactly?
I am starting to look into some more oauth stuff, so if there is any more detail, I'm happy to take a look.

The organizational account was for NISEI. They had logged into ABR with NISEI’s account previously to set up some tournaments as NISEI.

oh, interesting.  Thanks for the extra details.  If you want to share any other details on slack we can see if we can reproduce it and debug.

Ok, #590 should take care of this and will be in the imminent release!


Added New Illustration Website TranshumansXYZ

Hi @Gilbishkosma,
I'd like to contribute for hacktoberfest.
PR

Added new website to content folder

hi @stevenanthonyrevo , thankyou so much for contributing to this repo. The changes has been deployed.

hi @Gilbishkosma, thanks!


Configure the Tanzu CLI Home

Describe the feature request
Is there currently a way to change the location where the Tanzu CLI reads configuration values from, other than the default ~/.config/tanzu
I would love to be able to set different home directory trees like;
# No variable set, defaults to ~/.config/tanzu

tanzu do-some-stuff

export TANZU_CLI_HOME=~/.config/tanzu-A

tanzu do-some-stuff using config from A

export TANZU_CLI_HOME=~/.config/tanzu-B

tanzu do-some-stuff using config from B

Describe alternative(s) you've considered
I'm currently using a bit of a hack where I just symlink from my desired location to ~/.config/tanzu and that works ok for now.
Additional context
I currently switch between multiple different environments, sub-environments and lifecycles and although the ability to use contexts and different servers is great there are times where I would love a completely seperate isolated  file tree such as if you need to make a custom overlay test or a short-term modification to correct a bug or use different versions of the plugins concurrently without re-sync etc.

What I have seen is people temporarily changing their $HOME directory.
You could have ~/tanzu-A/.config and ~/tanzu-B/.config.
You can even create a alias to make this transparent:
alias tz="HOME=$HOME/tanzu-A tanzu"

Seems to work when I tried it:
$ alias ttz="HOME=$HOME/tanzu-A tanzu"
$ ttz version
version: v1.2.0-dev
buildDate: 2023-12-22
sha: 21bac41f1
arch: arm64
$ ls -a ~/tanzu-A
.       ..      .config Library

But I think the CLI should respect the XDG paths, which, looking at now, I don't think it does...

Apologies for the delay in response and thanks.
I ended up going with a similar trick, just using different "environment" directories each with their own config files.
So far its working out.


Compat updates for String rename

There were some test errors but they seemed unrelated to this change. Hopefully this is helpful.

Coverage remained the same at 61.881% when pulling bcb18ae8e1e370ce4bd418c7901c86dd5e9ad4cd on StefanKarpinski:master into 33d0db6c0b57d50b6abe451044ecd2eafa58c7ca on JuliaLang:master.

This change is potentially breaking.

Coverage remained the same at 61.881% when pulling 771e4f022a7a6cece1f257a63380cfc91b21e073 on StefanKarpinski:master into 33d0db6c0b57d50b6abe451044ecd2eafa58c7ca on JuliaLang:master.

Coverage remained the same at 61.881% when pulling 3c1789b3a34debd0035ddff754efec1835050fc7 on StefanKarpinski:master into 33d0db6c0b57d50b6abe451044ecd2eafa58c7ca on JuliaLang:master.


Pod mac is added into the podMap instead of VMMap

Scenario:
Step 1:Create VM with more the 2 or 3 interfaces bridged to Linux Bridge.
Step 2:Turn on this VM
Step 3: Check that mac allocated from default mac pool
Step 4: Shrink mac pool and restart kubemacpool-mac-controller-manager pod
Step 5: Check logs.
Issue is below:
Data	{"macmap": {"02:00:00:00:00:05":"Allocated","02:00:00:00:00:06":"Allocated"}, "podmap": {"myproject/virt-launcher-vmtest-m9hxg":{"br1":"02:00:00:00:00:05","br2":"02:00:00:00:00:06"}}, "vmmap": {}, "currentMac": "02:00:00:00:00:00"}
its add the pod into the podMap and not under the vmMap

Closed by #13


Add turbolinks support for nested menu items

by disabling turbolinks for the parent menu anchor tags

fix in #37


Verify BasicAuth works when configured via API

Configure an uptime test for https://staging.caktusgroup.com/

What is the login and password for the site?

Support issue I opened:

I'm having trouble using basic_user and basic_pass with the new API. When I create or update, the uptime test doesn't appear to save provided credentials for use.

Response from StatusCake:

For security this is something we actively stop from being displayed in an API response. Much like the GUI. We do not reveal the user/pass that's been put in place.
I can ensure you though that they are being saved as expected, and used within the confines of an uptime test only.

I contacted Statuscake on 1/13/22 explaining the issue - still no response from the Statuscake team.

As a work around, if a BasicAuth test is updated via the web UI to work, will a successive run of the API call cause it to become unset?


getting error - Could not find a server matching the region en

Hello, I am getting an error,
[error] - Error: Error: Could not find a server matching the region en     at module.exports (C:\Users\Z3R0\Documents\Discord Botting\Kurumi\node_modules\discord.js-akinator\src\index.js:355:15)     at runMicrotasks (<anonymous>)     at processTicksAndRejections (node:internal/process/task_queues:96:5)
I am using discord.js v13 so I can't update to latest version, I am using<EMAIL_ADDRESS>Can you please help me use this in djs v13

Hello! 👋 As of the release of Akinator v5, we have deprecated versions relying on Discord.js v13. This is due to recent changes in the Akinator API that rendered the package unusable. Unfortunately, there is nothing that can be done here apart from making the move to Discord.js v14, which I'd highly recommend to keep your bot performing optimally. My apologies.


can i remove packet_parser.p4 when i run rdma test?

In the pacekt_filter.v, I add logic that distinguishes between RDAM and non-RDMA network packets。
so can i run rdma test?

@qgzln Yes, it will work. You can use the same simulation in RecoNIC to test your code first before doing on-board testing.

@qgzln Yes, it will work. You can use the same simulation in RecoNIC to test your code first before doing on-board testing.

Thanks, do I still need to modify the software part of Reconic? If so, could you tell me which software needs to be modified?

@qgzln no need to modify any software code.


Bad aligment of contours

Hi!
First of all, thank you so much for releasing this code, it's amazing! We have a little issue with the alignment of the created contours: it seems that there is a displacement of all contours (see attached image). Any ideas? Thanks in advance!

Hi, thanks for checking out the tool.
Would it be possible for you to share a screenshot or possibly a json of the (anonymized) metadata for your DICOM CT image? I'm particularly interested in the image size and the "Image Position Patient" attribute.
The current structure of repackaging contours into a DICOM assumes that realspace coordinate 0,0 occurs at the center of each image (see line 92 of branch:New_Interface_React - backend/createdicomfile.py).  I suspect that your images may have different coordinate alignment in metadata, which would cause this sort of offset.
I can make fixing that to be more flexible an objective for an update (will require modifying how some of the file data is passed around) but seeing the anonymized metadata for this image would help me be sure of the root cause of the issue.

Hi jasbach,
thanks for the fast reply! We suspected of that, reading the github help, but opening the CT files with dicompyler seems that center for X and Y coordinates are in the center (even though the 0,0 pixel is in one corner of the image). I've attached an image of the metada for the first and last slice of my CT.
Thank for the help!


PVAYLADEV-722

It would be nice to have "set DEFAULT_SERVERPROXY_SUPPORT_CLIENTS_POOLED_CONNECTIONS to correct value, read more about this here -> link to where this property in relation to clustering is explained" in the manual installation instructions.

Looks good to me.


upload/put method refer to https://github.com/fsspec/s3fs/issues/737

Version 2023.6.0
def run(self):
    s3_path = f'{BUCKET_NAME}/{dir}/'
    # s3_path = f'{BUCKET_NAME}/{dir}'
    self.FILE_SYSTEM.upload(
    str(local_path),
    s3_path, recursive=True
    )

    return s3_path

I saw that the previous version had this problem. If you do not specify / at the end of the c3 file path, then an old bug with file duplication appears

Can you please try now?


Various build failures, starting with 'Missing "curl" tool'

I was trying to build the current tip of the tree ( d2f7dbcf70246cafb9baedcb5d4083b3dba4bc6e ) yesterday to try your latest updates. Before that, I was using 7ec6b53c62f9b55b187708fbaa80a9bb9ca4b2cc (one day earlier) which was working fine for me, and which still builds fine on the same build host. I'm building for an i.MX8MP based on https://github.com/dh-electronics/meta-dhsom-imx-bsp - not sure if that matters.
I now see various failures in the build, which seem to be not fully reproducible. What is reproducible for me is that failures start with this:

ERROR: flutter-sdk-native-git-r0 do_unpack: failed 1 (cmd was flutter config --clear-features):
Missing "curl" tool. Unable to download Dart SDK.
Consider running "sudo apt-get install curl".

This error repeats for all run_command calls from here: https://github.com/meta-flutter/meta-flutter/blob/d2f7dbcf70246cafb9baedcb5d4083b3dba4bc6e/recipes-graphics/flutter-sdk/flutter-sdk_git.bb#L109
FWIW, I have curl installed on my build host.
What feels weird is that these failures do not cancel the yocto build, and when re-running the build, this part of the failure does not occur anymore (but the follow-up's do).
Possible follow-up errors:

ERROR: flutter-gallery-git-r0 do_compile: failed 1 (cmd was flutter pub get --offline):
Downloading Linux x64 Dart SDK from Flutter engine 4a585b79294e830fa89c24924d58a27cc8fbf406...
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: storage.googleapis.com
Warning: Problem : timeout. Will retry in 1 seconds. 3 retries left.
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: storage.googleapis.com
Warning: Problem : timeout. Will retry in 2 seconds. 2 retries left.
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: storage.googleapis.com
Warning: Problem : timeout. Will retry in 4 seconds. 1 retries left.
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: storage.googleapis.com

or this here:

ERROR: flutter-gallery-git-r0 do_compile: failed 127 (cmd was /home/markus/projects/build_316_updated/build/tmp/work/cortexa53-crypto-dhlinux-linux/flutter-gallery/git-r0/recipe-sysroot-native/usr/share/flutter/sdk/bin/cache/dart-sdk/bin/dart --disable-analytics --disable-dart-dev /home/markus/projects/build_316_updated/build/tmp/work/cortexa53-crypto-dhlinux-linux/flutter-gallery/git-r0/recipe-sysroot-native/usr/share/flutter/sdk/bin/cache/artifacts/engine/linux-x64/frontend_server.dart.snapshot --sdk-root /home/markus/projects/build_316_updated/build/tmp/work/cortexa53-crypto-dhlinux-linux/flutter-gallery/git-r0/recipe-sysroot-native/usr/share/flutter/sdk/bin/cache/artifacts/engine/common/flutter_patched_sdk_product/ --target=flutter --no-print-incremental-dependencies -Ddart.vm.profile=false -Ddart.vm.product=true --aot --tfa --target-os linux --packages .dart_tool/package_config.json --output-dill .dart_tool/flutter_build//app.dill --depfile .dart_tool/flutter_build//kernel_snapshot.d --verbosity=error package:gallery/main.dart):
/bin/sh: 1: /home/markus/projects/build_316_updated/build/tmp/work/cortexa53-crypto-dhlinux-linux/flutter-gallery/git-r0/recipe-sysroot-native/usr/share/flutter/sdk/bin/cache/dart-sdk/bin/dart: not found

... or others, which I don't have in my current build output.
The follow-up-errors differ on each new build, and I believe that I even need a fresh SSTATE_CACHE to get the original first error back.

@Markus43 Hey thanks for filing the issue.  I'm in the process of catching up on my meta-flutter todo list given CES dev work is over (~2 months).
flutter-sdk has a build time dependency on curl-native.  So it shouldn't be using the system's curl.
There have been some odd issues AGL+Toyota+myself have seen when updating versions, and no one has captured the exact set of variables yet.  I think I have a solution though.  It involves adding the flutter sdk version to the DL_DIR filenames, as of right now that's not present.  This change would re-trigger a pub-cache fetch, as of recently I just added bitbake flutter-gallery -cdo_cleanall which will delete the pub-cache archive, as it has stale SDK references.
What OS and version are you building with, and are you using either one?
INHERIT:remove = "uninative"
INHERIT += "rm_work"

@Markus43 Hey thanks for filing the issue. I'm in the process of catching up on my meta-flutter todo list given CES dev work is over (~2 months).

And thanks for your quick reply!

What OS and version are you building with, and are you using either one?
INHERIT:remove = "uninative"
INHERIT += "rm_work"

I'm on Ubuntu 20.04. I have INHERIT += "rm_work" in my local.conf - do you think that might cause the issue, and removing it might fix it? A colleague added it and commented that it is there to preserve disk space ...

@Markus43 I would try commenting out INHERIT += "rm_work" in your local.conf, -cdo_cleanall for flutter-sdk-native, flutter-engine, and related apps.  Then pull my latest commit on kirkstone and rebuild your app.  If that works, then I can take a closer look at any possible interaction.
Between AGL and Toyota we have a large matrix of targeted platforms.  The commits in production are currently lagging behind meta-flutter, and when a commits get merged is when the matrix build flush-out happens.  If I have time I will re-enable my CI on gitlab.freedesktop.org as gitlab works flawless with podman rootless.  I have strong security concerns running anything non-rootless with github runners.

@Markus43 any update?

@Markus43 I would try commenting out INHERIT += "rm_work" in your local.conf, -cdo_cleanall for flutter-sdk-native, flutter-engine, and related apps. Then pull my latest commit on kirkstone and rebuild your app. If that works, then I can take a closer look at any possible interaction.

I followed your steps, and the build then finished without errors :-)

Maybe now add INHERIT += "rm_work" back in and rebuild your image.  If that works you should be good to go.

Maybe now add INHERIT += "rm_work" back in and rebuild your image. If that works you should be good to go.

I started a full rebuild (still without INHERIT += "rm_work") and get a new error:

ERROR: No recipes in default available for:
/home/markus/projects/build_316_latest/build/../layers/meta-flutter/dynamic-layers/clang-layer/recipes-graphics/toyota/ivi-homescreen-next_%.bbappend

You can delete it for now.  I will remove from the repo

https://github.com/meta-flutter/meta-flutter/pull/393

Are we good, can we close this issue?

Are we good, can we close this issue?

I'll do a few builds with today's tip of the tree and report back within a few days.

Maybe now add INHERIT += "rm_work" back in and rebuild your image. If that works you should be good to go.

So rm_work is  supposed to fully work now with meta-flutter?

Maybe now add INHERIT += "rm_work" back in and rebuild your image. If that works you should be good to go.

So rm_work is supposed to fully work now with meta-flutter?

It doesn't. I still see the curl error when building an image with INHERIT += "rm_work"  :

ERROR: flutter-sdk-native-git-r0 do_unpack: failed 1 (cmd was flutter config --clear-features):
Missing "curl" tool. Unable to download Dart SDK.
Consider running "sudo apt-get install curl".

This is on f4f58f952482793a3ddb1ea3685733e48da45b8a , building with a fresh DL_DIR and SSTATE_CACHE.

If flutter-sdk version changed after recent pull and you see build errors.  Follow this sequence:
bitbake flutter-sdk-native -cdo_cleanall
bitbake flutter-engine -cdo_cleanall
bitbake <your app>

I have tried this with Ubuntu 20.04, 22.04 and Debian-12, same error. I am now trying without rm_work.

In case of rm_work I suspect flutter-engine-sdk-dev needs to be added to do_compile as a dependency in flutter-app.inc.
I've been building in an AGL tree since CES.  No issues for me on Fedora (selinux, etc) without a container.  Followed the pre-requisites from Yocto project site.
Tested dunfell last week without issue using a container on redhat running rootless podman.  rm_work not set.
@perezmeyer Are either of your build scenarios using a container, and are you using rm_work too?

What recipe is failing when rm_work is present?  Only flutter app?

What recipe is failing when rm_work is present? Only flutter app?

flutter-sdk-native is the one that fails with the above error message, and after that all flutter apps fail.

@jwinarske Docker container, using rm_work. But I do not suspect the container here, but something not playing nicely with rm_work.

@jwinarske now that you mention it... I have always built the AGL current master with rm_work enabled. So the version of meta-flutter on it does not creates any issues. Or somehow the build order happens to paper over it?

I now also tested a fresh build with empty DL_DIR / SSTATE_CACHE and without INHERIT += "rm_work", and in that case I also get the Missing "curl" tool error (!).
When I then clean flutter-sdk-native and flutter-engine and build my image again, the build succeeds. When I then build again in a new build folder, but from the same SSTATE_CACHE / DL_DIR, the build also succeeds.
Since I also see the issue without rm_work, I wonder if it has to do anything with the issue at all? Or if it's just a problem with dependency resolution of flutter-sdk-native - the root issue is that curl is not found, and when building the second time, flutter_engine has been built in-between (which takes very long, so all other recipes with no dependencies have been built in-between) ?
Another thing that I noticed when testing this with several builds with both fresh and old cache: I only get the "missing curl" exactly once. A follow-up build (without cleaning anything) then doesn't rebuild flutter-sdk, even if it failed before. And then, flutter apps depending on flutter sdk start to fail because of missing files. Could it be that the failures in do_unpack are not properly handled and thus are not recognized as build failures by the yocto environment?
Sorry for the long delays when reporting back by the way: I really did a lot of builds until I finally was able to reproduce something here, so this did cost me a lot of waiting time, waiting for builds, again and again, thus the delay.

I now also tested a fresh build with empty DL_DIR / SSTATE_CACHE and without INHERIT += "rm_work", and in that case I also get the Missing "curl" tool error (!).

I saw that doing a build without cleaning the sstate cache, which makes sense. rm_work should get stuff from the cache if things need to be replay.

Could it be that the failures in do_unpack are not properly handled and thus are not recognized as build failures by the yocto environment?

Now hat's actually a nice idea to check.

@Markus43 @perezmeyer Please see if https://github.com/meta-flutter/meta-flutter/pull/402 resolves the issue.
Quickest way to repro/test:
bitbake ca-certificates-native -cdo_cleanall
bitbake curl-native -cdo_cleanall
bitbake ninja-native -cdo_cleanall
bitbake unzip-native -cdo_cleanall
bitbake flutter-sdk-native -cdo_cleanall
bitbake flutter-sdk-native

I tested in two scenarios, but I am suspecting a race condition with a smaller core count machine.  My build machines are 32+ HW threads.  When testing uni-proc everything is serialized correctly.
conf/local.conf addition:
PARALLEL_MAKE = "-j 1"
BB_NUMBER_THREADS = "1"

With the non-uni-proc build I did see this which would appear to be a bug.  I sent out an email to the OE-Core mailing list to clarify:

merged to kirkstone for clarity of my OE-Core message.

@Markus43

Sorry for the long delays when reporting back by the way: I really did a lot of builds until I finally was able to reproduce something here, so this did cost me a lot of waiting time, waiting for builds, again and again, thus the delay.

No worries.  It's easy enough to work around (bitbake curl-native before bitbake flutter-sdk-native).  The good news is that you are participating and making meta-flutter better!  There are many people who don't participate.  So thank you for that!
What is the HW thread cound on your build machine?

Awesome, I'll test it as soon as I finish some other builds I have!
My machine has 8 cores with two threads each.

Tip of tree resolves it: 591ea0eefa482ab45e9b09c4173108ef0152551a
This issue should be good to go.

@jwinarske this is so far looking good. I will not declare victory until my from-scratch build ends, but I think I saw the errors earlier.

This is the minimum viable repro case, and should be used to validate fix on your machine:
bitbake ca-certificates-native -cdo_cleanall
bitbake curl-native -cdo_cleanall
bitbake ninja-native -cdo_cleanall
bitbake unzip-native -cdo_cleanall
bitbake flutter-sdk-native -cdo_cleanall
bitbake flutter-sdk-native

flutter-sdk-native should not start until curl-native is done.  I was seeing them run in parallel before the fix.  Which on a higher core count machine would likely not hit the issue (my case).  A lower core count machine would be more likely to hit it.

I confirmed with a clean, from-scratch build, having rm_work enabled. I still need to build an app yet

And I could build an app too, always with rm_work enabled. Thanks a lot @Markus43 and @jwinarske  !

Both building from scratch and incremental builds work again for me, also with rm_work. Many thanks @jwinarske for your support!


AppCheck

Triaging Issues
I'm getting a permission denied 403 error when attempting to fetch the appcheck token - https://www.loom.com/share/b84eb3108f78498e846c73f9f9690bfe?sid=cc246230-fe65-4c15-9e32-a53249fdef14
Below are related issues:

https://github.com/invertase/react-native-firebase/discussions/6163

Alternatives to Firebase
https://github.com/jeffDevelops/expo-app-integrity

Summary by CodeRabbit

New Features

Introduced Firebase App Check functionality for enhanced security.
Added a new configuration file for Google services.
Implemented a new component for managing app check tokens.
Updated navigation to include a test screen for app check.

Bug Fixes

Improved error handling for API requests requiring app check tokens.

Documentation

Enhanced comments in various scripts for better clarity and maintainability.

Chores

Updated dependencies in package.json for Firebase integration.
Added new environment variable for Firebase App Check in eas.json.
Modified .gitignore to exclude sensitive plist files.

 LOG  13:08:18 | DEBUG : [InitialStateHandler] Handling initial deeplink
 LOG  13:08:18 | DEBUG : Getting token
 LOG  13:08:18 | ERROR : Error getting token [appCheck/token-error] The operation couldn’t be completed. The server responded with an error:
 - URL: https://firebaseappcheck.googleapis.com/v1/projects/converse-unshut-labs/apps/1:564961909146:ios:779bcea169541560bd0223:exchangeDebugToken
 - HTTP status code: 403
 - Response body: {
  "error": {
    "code": 403,
    "message": "Firebase App Check API has not been used in project<PHONE_NUMBER>46 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/firebaseappcheck.googleapis.com/overview?project=564961909146 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
    "status": "PERMISSION_DENIED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.Help",
        "links": [
          {
            "description": "Google developers console API activation",
            "url": "https://console.developers.google.com/apis/api/firebaseappcheck.googleapis.com/overview?project=564961909146"
          }
        ]
      },
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "SERVICE_DISABLED",
        "domain": "googleapis.com",
        "metadata": {
          "service": "firebaseappcheck.googleapis.com",
          "consumer": "projects/564961909146"
        }
      }
    ]
  }
}

Waiting for permission to setup AppCheck for this firebase project

Finally have a working e2e example! 🥳

Triaging Issues
I'm getting a permission denied 403 error when attempting to fetch the appcheck token - https://www.loom.com/share/b84eb3108f78498e846c73f9f9690bfe?sid=cc246230-fe65-4c15-9e32-a53249fdef14
Below are related issues:

https://github.com/invertase/react-native-firebase/discussions/6163

oops - removed files from git history incorrectly. fixing

closed in favor of https://github.com/ephemeraHQ/converse-app/pull/1369


Compare image

Description
Add Compare_Image, some updates to Clipboard function
Add:

[x] Add Appium command route
[x] Add Appium method
[x] Add Base constant
[x] Update Appium Core Functions
[x] Add Base commands
[x] Update Clipboard
[x] Format updates

Done:

Compare Image
Clipboard


pagination error : this._init is not a function

<EMAIL_ADDRESS>Module build failed: TypeError: this._init is not a function

What's wrong ? How can i solve that problem ?

@figoxu I'm not sure, but I've noticed a warning message in the above screenshot.
[Vue warn]: Vue is a constructor and should be called with the `new` keywork

It seems like you initiates Vue without new keyword. Try checking your code again.

I just using  81a5bb4d86be3a3b4588854c4a260274d429e82a

@figoxu It is still working as expected on my side. I checkout 81a5bb4, verify that it is exactly as your screenshot, and run using npm, but I never see that warning message and everything runs fine. But my NPM version is 3.10.10.
Do you have problem with all other lessons or just lesson-7?  Are you using Vue 2.x or Vue 1.x because Vuetable-2 is for Vue 2.x.
Maybe try updating NPM version, remove everything in node_modules and try npm install again.

What a pity of npm install .  < __<
I am using yarn install instead of npm install , It should be ok .  tks  : )  .


no matching versions for query "latest"

when  I execute go run example/client/main.go localhost:6121, I have this problem:
go: finding module for package github.com/lucas-clemente/quic-go/h2quic
example\client\main.go:11:2: no matching versions for query "latest"

how can I solve it?
By the way, I want to know where can I get more detail doc about the quic-go?

h2quic has not been in use for at least a year, maybe even two.

h2quic has not been in use for at least a year, maybe even two.

There is lib h2quic in release-0.10. why dont you have a more detail description? It is beyond my apprehension.


[refactor] move code from AccountController to AccountService

What's changed?

As a layer of interaction with front-end, controller should not contain any code logic.
Checklist

[x]  I have read the Contributing Guide
[ ]  I have written the necessary doc or comment.
[x]  I have added the necessary unit tests and all cases have passed.

Add or update API

[ ] I have added the necessary e2e tests and all cases have passed.

@tomsun28 There are some controllers have the same problem like this pr.
Shall we create an issue for newcomers?

@tomsun28 There are some controllers have the same problem like this pr. Shall we create an issue for newcomers?

hi, ok. 👍


adds support for Sonos One

Awesome thanks.
Btw you don't have to edit supported models next time, this will be automatically generated by a github action.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 97.146%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2587

Relevant Lines:
2663

💛  - Coveralls


Events not being consumed in parent of custom element

Sorry if the title is slightly misleading. I'm new to JavaScript and Aurelia.
Ok, to get to the point, I have a view and view-model named main.html and main.js, and another view and view-model named custom-element.html and custom-element.js that represent a custom element. I'm trying to fire an event from the custom element, catch the event in the parent of the custom element, and call a method in the parents view-model(main.js) named customEventFired. I would like to catch the event in the DOM like the example below...
<!--I would like to catch the event like buttons do-->
<button click.delegate='buttonClicked()'></button>

<!--But instead with my custom element and event like this-->
<custom-element customEvent.delegate = 'customEventFired()'></custom-element>

Here is the code I have and it does not work...
<!--main.html-->
<template>
   <require from='./custom-element'></require>
   <custom-element customEvent.delegate='customEventFired()'></custom-element>
</template>

//main.js
export class Main{
   customEventFired(){
      alert('Custom Event Fired!');
   }
}

<!--custom-element.html-->
<template>
   <button type='button' click.delegate='fireEvent()'>Fire Event!</button>
</template>

//custom-element.js
import{inject} from 'aurelia-framework';

@inject(Element)
export class CustomElement{

   constructor(element){
      this.element = element;
   }

   fireEvent(){
      let e = new CustomEvent('customEvent', {bubbles: true}); //create the event
      this.element.dispatchEvent(e);//dispatch the event
   }
}

I tried multiple variations of the code above and cannot get the parent view-model to consume the event produced by the custom element! I have been working on this for days without success. Any help would be appreciated.
Also, I have tried multiple versions of the aurelia-skeleton including versions 15, 16 and 17 without success.
Thank you in advance for your help.

I finally discovered a solution! For those who have this problem, this is what I did to correct the issue.
When you create a custom event, the event type, or the first parameter of the CustomEvent constructor, can not be uppercase. Example below...
let e = new CustomEvent('customEvent', {bubbles: true}); //This is wrong!

let e = new CustomEvent('customevent', {bubbles: true}); //This is right!

Also, don't forget to change the event delegate binding in the parent view.
<!--main.html-->
<template>
   <require from='./custom-element'></require>
   <custom-element customevent.delegate='customEventFired()'></custom-element>
</template>

I'm not sure if this is a bug in the framework or just the nature of how events function, but this definitely solved my problem!
Also, this is such an intuitive framework and I absolutely love working with aurelia. Keep up the excellent work!

Ah. Yes. This has to do with the fact that html doesn't understand case and the parser basically lowercases all html element names and attributes before any 3rd party code can see them. So, when you wire for the event like this customEvent.delegate Aurelia actually sees this: customevent.delegate. And unfortunately, there's nothing we can do about it since this is coming from the browser itself. Hopefully that explains why your solution works. In general, I think all biult-in events, are lowercase, so using that same naming convention for your own, also gives you the added benefit of being consistent with the underlying platform.


Request: Zero model engines and tanks

Started build a massive rocket for lolz, FPS went from 120 to 0 with about 2k+ engines. It would be useful to have engines and tanks that have no models. This way I can ignore visual looks for better performance, I think others might want the same thing.
Edit: Might also be easy to implement a config that doesn't render the models.

I've mentioned i was planning on doing that a few dozen times...

Things are baked in 1.10, closing