Support for new YiCamera

Hi,
I bought a camera (https://fr.aliexpress.com/item/1005004622553546.html) which is finally a Yi camera.
It is based on a FH8632 SoC, so the YiHack does not work as it is.
I succeeded to log using serial connection, and then to modify a debug.sh on /tmp/sd to get root access and ftp.
I found a similar file structure than your hack, as well as a /dev/shm/fshare_frame_buf file.
I used BuildRoot to recompile your tools and try them.
Unfortunately, the frames format is not the same (I tried all the existing models).
The closest model seems to be the "QG311R" one.
With this one, I am able to make a snapshot with "imggrabber" but only in low resolution.
The high resolution is crashing in the first "avcodec_send_packet" function call ("Killed" is reported in the bash).
With the same configuration (low resolution QG311R), rRTSPServer is not finding any frames (frozen on "Waiting for stream type (autodetection)...).
I attached 4 copies of my fshare_frame_buf file:
fshare_frame_buf_YiCam A35I.zip
Would you mind having a look to it ? Maybe you will find which "buffer offset" and "frame header size" I should change so that this camera is supported ?
I tried by myself but I still have not enough knowledge on the H264/HEVC formats and the tools I found were not able to decode also the fshare_frame_buf file :(
Thanks a lot for your help, best regards

Codec is h264.
SPS are different from Allwinner and Allwinner-v2.
00 00 00 01 67 4D 00 32 8D 8D 40 12 00 51 D0 80 00 05 DC 00 00 AF C8 02 <--- 2304 x 1296
00 00 00 01 67 4D 00 16 8D 8D 40 50 17 FC B0 80 00 05 DC 00 00 AF C8 02 <--- 640 x 368
PPS:
00 00 00 01 68 EE 38 80
The frame header is 26 bytes length, for example:
08 00 00 00 30 10 00 00 10 35 52 63 26 C5 A7 01 CD 46 1F F9 04 04 8B 05 00 00
Probably the buffer offset is 300.
But there is a "big" difference: SPS and PPS are repeated twice. The parser should consider it.
So the source code must be adapted.
imggrabber should work because it doesn't search a fixed byte sequence. Probably it fails with high res due to a memory problem.

Thanks a lot !
Regarding the imggrabber, you were right, it was a memory issue. I had the whole Yi application running, plus a ftpd and I compiler with static libraries, thus it was remaining about only 3-4MB of memory.
I killed all the Yi application, except the rmm, and then imggrabber is working in high resolution mode.
I updated rRTSPServer to remove the auto-detection (it was not working) and to not update the SPS timing info (since the SPS/PPS headers are only used here).
Unfortunately, now I have a "segmentation fault" when VLC is connecting on it (low or high resolution).
This might be related to the fact that "SPS and PPS are repeated twice" as you noted.
You said that the source code must be adapted, could you tell me more ? Should I skip repeated frames or is there other things to do ?

You should re-enable autodetect adding a definition for your SPSs.
For example, for high res:
unsigned char SPS4_4_2304X1296[]    = {0x00, 0x00, 0x00, 0x01, 0x67 0x4D, 0x00, 0x32,
                0x8D, 0x8D, 0x40, 0x12, 0x00, 0x51, 0xD0, 0x80,
                0x00, 0x05, 0xDC, 0x00, 0x00, 0xAF, 0xC8, 0x02};

And disable sps_timing_info.
Finally, when the frame is an IDR (fhs[i].type & 0x0001) you have to skip 59 bytes to skip the repetion of the SPS and PPS.
The IDR frame must start with 00 00 00 01 65.

I did the previous actions, but I was getting a segmentation fault at VLC connection :(
I finally build up also a full gdb for the FH8632 and was able to catch the faulty line, located in live555:
#5  0x00042bf8 in snprintf (s=, n=,
fmt=0x53818 "v=0\r\no=- %ld%06ld %d IN %s %s\r\ns=%s\r\ni=%s\r\nt=0 0\r\na=tool:%s%s\r\na=type:broadcast\r\na=control:\r\n%s%sa=x-qt-text-nam:%s\r\na=x-qt-text-inf:%s\r\n%s") at src/stdio/snprintf.c:9
#6  0x00022e2c in ServerMediaSession::generateSDPDescription(int) ()
#7  0x0001e3c4 in RTSPServer::RTSPClientConnection::handleCmd_DESCRIBE_afterLookup(ServerMediaSession) ()
#8  0x0001da78 in RTSPServer::RTSPClientConnection::handleCmd_DESCRIBE(char const*, char const*, char const*) ()
#9  0x0001f708 in RTSPServer::RTSPClientConnection::handleRequestBytes(int) ()
#10 0x00030e98 in BasicTaskScheduler::SingleStep(unsigned int) ()
#11 0x00032130 in BasicTaskScheduler0::doEventLoop(char volatile*) ()
#12 0x00010ca8 in main ()
What happens actually is that the time_t structure is defined as a 64 bits (long long int) on my target, while live555 assumes it is a 32bits (long int), since they use %ld.
The compiler is also not casting automatically, thus the snprintf of  %ld%06ld for fCreationTime.tv_sec and fCreationTime.tv_usec is passing wrong things on the stack (ie pushing 64bits values, instead of 32bits one).
I solved the segmentation fault by adding explicit casts in the snprintf call of ServerMediaSession.cpp:
(long int)fCreationTime.tv_sec, (long int)fCreationTime.tv_usec, // o=
However, VLC is looping forever trying to connect but nothing is displayed, no error message...
I am wondering if there could have other similar 64/32bits issue elsewhere in the code....
Is this something you already faced or due to my buildroot setup (I am using libmusl, and binaries statically linked) ?

If you are not able to find somewhere the cross toolchain for FH8632 platform, you should try to create your own toolchain as close as possible to what you find inside the cam.
You should check:

libc used (glibc, uclibc, musl, etc...)
gcc version
c++ libs

If I'm not wrong FH8632 is based on ARM1176, a 32 bit arm platform.
If your cross-tolchain is ok, it must build a 32 application.
I think that something is not ok on your buildroot.
You could try to create the toolchain with crosstool-NG.

Do you want to share with me a backup of the flash?

Yes, I got 32bits application. I noticed there were compiler warnings on the %ld (long int) time_t value (long long int) issue, thus I tried to cast all of them, but same result. There must have something else, I continue investigation :)
Here is a backup of this camera:
backup.zip

Ok, you can remove it, if you want.

There are 2 different versions of uClibc: <IP_ADDRESS> and <IP_ADDRESS>.
I don't know why.
A lot of libs:
ld-uClibc-<IP_ADDRESS>.so
ld-uClibc-<IP_ADDRESS>.so
ld-uClibc.so.0 -> ld-uClibc-<IP_ADDRESS>.so
libatomic.so -> libatomic.so.1.2.0
libatomic.so.1 -> libatomic.so.1.2.0
libatomic.so.1.2.0
libcrypt-<IP_ADDRESS>.so
libcrypt-<IP_ADDRESS>.so
libcrypt.so.0 -> libcrypt-<IP_ADDRESS>.so
libc.so.0 -> libuClibc-<IP_ADDRESS>.so
libdl-<IP_ADDRESS>.so
libdl-<IP_ADDRESS>.so
libdl.so.0 -> libdl-<IP_ADDRESS>.so
libgcc_s.so -> libgcc_s.so.1
libgcc_s.so.1
libitm.so -> libitm.so.1.0.0
libitm.so.1 -> libitm.so.1.0.0
libitm.so.1.0.0
libm-<IP_ADDRESS>.so
libm-<IP_ADDRESS>.so
libm.so.0 -> libm-<IP_ADDRESS>.so
libnsl-<IP_ADDRESS>.so
libnsl.so.0 -> libnsl-<IP_ADDRESS>.so
libpthread-<IP_ADDRESS>.so
libpthread-<IP_ADDRESS>.so
libpthread.so.0 -> libpthread-<IP_ADDRESS>.so
libresolv-<IP_ADDRESS>.so
libresolv.so.0 -> libresolv-<IP_ADDRESS>.so
librt-<IP_ADDRESS>.so
librt-<IP_ADDRESS>.so
librt.so.0 -> librt-<IP_ADDRESS>.so
libthread_db-<IP_ADDRESS>.so
libthread_db-<IP_ADDRESS>.so
libthread_db.so.1 -> libthread_db-<IP_ADDRESS>.so
libuClibc-<IP_ADDRESS>.so
libuClibc-<IP_ADDRESS>.so
libutil-<IP_ADDRESS>.so
libutil.so.0 -> libutil-<IP_ADDRESS>.so

crosstool-NG 1.19.0
Many different gcc used:
gcc 3.3.2
gcc 4.3.2
gcc 6.5.0

Check this:
https://airtake-public-data-1254153901.cos.ap-shanghai.myqcloud.com/smart/embed/pruduct/arm-fullhan-linux-uclibc-4.3.2_0.0.3.zip

Try this:
https://airtake-public-data-1254153901.cos.ap-shanghai.myqcloud.com/smart/embed/pruduct/arm-fullhan-linux-uclibcgnueabi_0.0.3.zip

What is the host for this one ? I am using Ubuntu on Windows 11.
The C++ located in toolchain\arm-fullhan-linux-uclibcgnueabi\bin is a 32bits one and I got a message when trying to execute (seems a dynamic library is missing/not found)

I attach also a log of the rRTSPServer with -d3 (rRTSPServer  -d3 -rlow -s ).
It seems that frames are detected, and when VLC is connecting, there are a few messages "RTSP doGetNextFrame()".
But it stops quite quickly and this is probably why I have nothing on my VLC.
I send you the log if you have some clue
rRTSPServer.log

What is the host for this one ? I am using Ubuntu on Windows 11. The C++ located in toolchain\arm-fullhan-linux-uclibcgnueabi\bin is a 32bits one and I got a message when trying to execute (seems a dynamic library is missing/not found)

Check Makefile.rRTSPServer and compile.rRTSPServer:
rRTSPServer.tar.gz
Build process works on my debian.

I send you the log if you have some clue
rRTSPServer.log

After the last doGetNextFrame() there are no error.
But it seems that the process is locked.

I finally understood the problem. The used socket number was always -1, thus nothing was really sent.
After other investigation, I came to the root-cause: setting the option SO_REUSEPORT with setsockopt was failing, thus closing the socket.
I just patched the function setupDatagramSocket in GroupsockHelper.cpp to not close the socket in case of error:
  if (setsockopt(newSocket, SOL_SOCKET, SO_REUSEPORT,
		 (const char*)&reuseFlag, sizeof reuseFlag) < 0) {
  #if 1  /* DGA PATCH */
	//fprintf(stderr, "DGA: newSocket=%d setopt SO_REUSEPORT reuseFlag %d ERROR\n", newSocket, reuseFlag);
	/* DGA: Do not close the socket, keep using it */
  #else
    socketErr(env, "setsockopt(SO_REUSEPORT) error: ");
    closeSocket(newSocket);
    return -1;
  #endif
  }

and now this is working fine !
Not easy to debug the live555 library :( It seems there is no easy way to know if the connection is opened/closed/error state so that the application could handle it ?

I don't remember the kernel version of your cam, but probably SO_REUSEPORT is not supported.
Maybe SO_REUSEADDR could work.

and now this is working fine !

Can you see the stream?

Not easy to debug the live555 library :( It seems there is no easy way to know if the connection is opened/closed/error state so that the application could handle it ?

I agree, is very complex.

Yes, SO_REUSEADDR is working. I will see to create a change/improvement ticket in the live555 library to avoid closing the socket in case this option is not supported. Especially, they already managed the WIN32 case by doing nothing, thus the option seems not mandatory.
Yes, I can see perfectly the streams now, both low and high res.
The low resolution has a lower FPS (about 1-2 FPS), while the high res is much better, I am a bit surprised with that or is it due to some additional rescaling performed by the live555 library ?

Other cams have 20 fps for both, high and low resolution.
1-2 fps is strange but live555 should not rescale the stream.

Hi !
I try now to add the IPC command on my camera. The ipc_cmd is compiling fine, but nothing happens (dispatch process is still running).
I modified it to act as a sniffer of /dev/mqueue/IPC_dispatch but nothing is reported :(
I think that dispatch process is getting the message before my sniffer.
I saw that you implemented a shared library to redispatch the IPC message in multiple queues, but I do not see how you "inject" this library ?
Is it in the original dispatch process or in the rmm one ?
Do you use LD_PRELOAD trick ?
If so, you have to set if before launching the executable ?
I got segmentation fault every time I tried something similar :/

Hi @DGA45, how is the progress so far? I'm also trying to hack my Y4 camera with FH8632v2 SoC. Thanks.

Yes, dispatch is started with LD_PRELOAD:
https://github.com/roleoroleo/yi-hack-Allwinner-v2/blob/2880d36b8fa0e078679e3b046a0345048422bce0/sysroot/y21ga/lower_half_init.sh#L132
And, if you want, I have the source code of a sniffer.

Hi,
I got initial access using serial connexion on the internal PCB. Then I was able to read the init.sh and lower_half_init.sh scripts.
I found that the script /tmp/sd/debug.sh is executed at the end of the init.sh.
I did not want to recreate a complete customized image as the YiHack, since I only wanted RTSP, PTZ and motion events.
 The command part is working fine, but not the status/reading part since it requires to be able to share IPC with the dispatch executable. I am not able yet to inject the IPC_multiplex.so library since with my "trick" dispatch is already started before debug.sh is executed. I can kill it and restarting it, but this is not working yet when I try to inject the IPC_multiplex.so library using LD_PRELOAD.
Httpd from BuildRoot to enable the WebServer from YiHack 2. Not everything is working since I just recompile a few binaries from the whole YiHack. My intention was just to be able to use PTZ and have cam snapshots.

It's about one month I did not continue working on it since RTSP was working and I wanted to use this stream on my Raspberry Pi3 to make some human detection with OpenCV (security system), but struggling with low memory (again) :(

@DGA45 correct me if I'm wrong, but I think you could load your own lower_half_init.sh file on SD card by modifying the last line in /backup/init.sh. You can see roleo did the same in Factory/config.sh, but it didn't work for this camera because the last line didn't match.
So the process should be:

Use debug.sh to patch /backup/init.sh, then remove it + reboot.
From now on it will load the lower_half_init.sh file on your SD card instead. You should able to fix your problem with IPC injection.

What do you think?
I only want to be able to take screenshot with this camera and use it for creating timelapse in OctoPrint.

Yes, but I did not want to change the original firmware, that's why I did everything from the debug.sh.
Regarding your goal to take screenshot, I also recompiled the imggrabber binary and it is working fine.
So with a basic httpd/cgi-bin + imggrabber, that could do the job

Here is my current project: SDCard.tar.gz
Just unzip the content in your SDCard and reboot your cam.
If this is working, you should be able to log on it using telnet or FTP with user "root" and no password, and to connect to the Httpd server (port 8080) with cgi-bin and imggrabber.
If not working, you can have a look on the SD Card (with your computer) if you have a debug_log.txt file on it.
If so, it means that the debug.sh is starting, if not this means that my "hack" is not working on your cam.

@DGA45 thanks so much!

@DGA45 Thanks for sharing your work.
On mine the rtsp works but not the PTZ commands.
I tried handling @redphx to patch the init.sh but bad idea, the camera is KO now. No more boot, no more sounds.
I continue in standalone mode on the second.

Yes, this was my fear to kill my only cam :(, hence the trick thru the debug.sh.
Regarding the PTZ not working, do you mean by using the WWW interface (cgi-bin) ?
Actually, the binary ipc_cmd binary is working on mine, but I did not updated all the WWW pages/scripts to have it working thru the web server (typically the paths are not the same between the www server and my SD card).
You can try if the ipc_cmd is working on yours, and then I can have a look to update the www server

Hi @DGA45 and @roleoroleo,
Thank you for your contribution. I have extracted the SDcard.tar.gz file onto the SD card and inserted it into my camera. The telnet connection works fine. However, I'm encountering an issue with the RTSP debug log, which outputs the following error:
RTSP doGetNextFrame() error - wrong frame header

I'm unsure how to resolve this problem. Any tips or suggestions would be greatly appreciated.
While I'm not certain if we have the same camera model, it seems we share the same chipset - FH8632.
Processor       : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 479.23
Features        : swp half thumb fastmult vfp edsp java
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

Hardware        : FH8632
Revision        : 0000
Serial          :<PHONE_NUMBER>000000

Thank you,
Dingisoul


Create a style for code

Code samples is part of the content for Partners. Could we extend code formatting styles beyond markdown for styling code in Dashboard?

Can you give an example of where/how this might play out on the dashboard? Is this just a matter of configuring syntax highlighters for code we showcase on the dashboard site?

Several instances occur on the Create New App form on the Partner dashboard site. If it's a configuration setup, what are the components involved?

migrated LG-2644


Shacl

Coverage decreased (-8.3%) to 55.043% when pulling ee474edacad7dd773cf7a0869718536d2aa09487 on shacl into bb4099559b33def84eb3c3be3634a26ce71735f9 on master.


Sets up and Adds Selenium Tests

This PR closes #48. This PR sets up selenium testing and adds tests to check navigation to different pages/routes.

Thanks for working on this!


parquet: updated parquet-go dependency to v1.6.2 for not needing CGO_…

…ENABLED=1 anymore;

@selm0 since you are the parquet master, it would be great if you could revisit if there are any problematic changes in the library update.

I tried it out with a minimal example (using https://gitlab.justdice-ops.io/paulicks/spend-event-to-parquet) to write a simple parquet file in local S3. The S3 writing process returns with the following error:
error during the execution of stage 2048: panic during running of module converter: failed to create schema from tag map: type UTF8: not a valid Type string  application

The used schema looks like this:
{"Tag":"name=parquet-go-root, repetitionType=REQUIRED","Fields":[{"Tag":"repetitionType=REQUIRED, name=id, type=UTF8"},{"Tag":"type=UTF8, repetitionType=REQUIRED, name=user_uuid"},{"Tag":"name=user_install_id, type=UTF8, repetitionType=REQUIRED"},{"Tag":"repetitionType=REQUIRED, name=campaign_id, type=UINT_32"},{"Tag":"type=UINT_32, repetitionType=REQUIRED, name=network_id"},{"Tag":"type=UINT_32, repetitionType=REQUIRED, name=channel_id"},{"Tag":"type=UINT_32, repetitionType=REQUIRED, name=country_id"},{"Tag":"name=source_id, type=UTF8, repetitionType=REQUIRED"},{"Tag":"name=source_bundle_id, type=UTF8, repetitionType=REQUIRED"},{"Tag":"name=adset_name, type=UTF8, repetitionType=REQUIRED"},{"Tag":"name=external_ad_set_id, type=UTF8, repetitionType=REQUIRED"},{"Tag":"name=spend_value, type=FLOAT, repetitionType=REQUIRED"},{"Tag":"repetitionType=REQUIRED, name=spend_value_eur, type=FLOAT"},{"Tag":"type=FLOAT, repetitionType=REQUIRED, name=spend_value_usd"},{"Tag":"type=UTF8, repetitionType=REQUIRED, name=spend_currency"},{"Tag":"type=UTF8, repetitionType=REQUIRED, name=source_name"},{"Tag":"name=exchange_id, type=UTF8, repetitionType=REQUIRED"},{"Tag":"name=exchange_name, type=UTF8, repetitionType=REQUIRED"},{"Tag":"name=created_at, type=INT96, repetitionType=REQUIRED"},{"Tag":"name=happened_at, type=INT96, repetitionType=REQUIRED"}]}

I think this is due to some change in parquet-go since which one has to use the primitive type in the type tag and add the converted type in the convertedType type. See https://github.com/xitongsys/parquet-go/blob/master/README.md for details. When I used the "raw" parquet-go on the latest version I also had to do it in the way that is described in the readme in order to get it working. In the parquet package we currently only use the type tag.

I will check and fix that. Let me document that here.
With the old implementation i get this schema:
{
  "Tag": "name=parquet-go-root, repetitionType=REQUIRED",
  "Fields": [
    {
      "Tag": "name=id, type=UINT_32, repetitionType=REQUIRED"
    },
    {
      "Tag": "repetitionType=REQUIRED, name=uuid, type=UTF8"
    },
    {
      "Tag": "repetitionType=REQUIRED, name=value, type=FLOAT"
    },
    {
      "Tag": "type=INT96, repetitionType=REQUIRED, name=created_at"
    }
  ]
}

With the new implementation i get this schema:
{
  "Tag": "name=parquet-go-root, repetitionType=REQUIRED",
  "Fields": [
    {
      "Tag": "name=id, type=UINT_32, repetitionType=REQUIRED"
    },
    {
      "Tag": "name=uuid, type=UTF8, repetitionType=REQUIRED"
    },
    {
      "Tag": "name=value, type=FLOAT, repetitionType=REQUIRED"
    },
    {
      "Tag": "type=INT96, repetitionType=REQUIRED, name=created_at"
    }
  ]
}

So the schema is still the same, but the behaviour of the library changed.


Filename does not appear in search results

OS: Manjaro
Oni version: Onivim 2 (0.5.1-nightly)
When I use the search in project feature, in the results I do not have the filename displayed, only its icon as you can see on the image.

I tried on many folders and I still had the same behavior.
I also give you a log file if it can help
oni.log
Thanks!

This issue seems to have been fixed by this change
Now I have the filename in the results like we would expect !


chore(Modal*|Popup*): use React.forwardRef()

Similarly to #4234, adds native ref forwarding to subcomponents of Modal* & Popup&.

Codecov Report

Merging #4261 (f5587bf) into next-v3 (b90f8bd) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff            @@
##           next-v3    #4261   +/-   ##
========================================
  Coverage    99.62%   99.63%
========================================
  Files          186      186
  Lines         3504     3516   +12
========================================
+ Hits          3491     3503   +12
  Misses          13       13

Impacted Files
Coverage Δ

src/modules/Modal/ModalActions.js
100.00% <100.00%> (ø)

src/modules/Modal/ModalContent.js
100.00% <100.00%> (ø)

src/modules/Modal/ModalDescription.js
100.00% <100.00%> (ø)

src/modules/Modal/ModalHeader.js
100.00% <100.00%> (ø)

src/modules/Popup/PopupContent.js
100.00% <100.00%> (ø)

src/modules/Popup/PopupHeader.js
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


tf.estimator.SummarySaverHook should support native V2 symbols.

System information

TensorFlow version (you are using): 2.1
Are you willing to contribute it (Yes/No): Yes

Describe the feature and the current behavior/state.
At present when specifying tf.estimator.SummarySaverHook in tf.estimator.EstimatorSpec when writing a custom model_fn, one is bound to use symbols from tf.compat.v1.
This is because, tf.estimator.SummarySaverHook needs  summary_op as an argument which should be a  tensor or list of tensors.
On the other hand the native V2 api in the form of tf.summary... symbols  return a boolean value.
Therefore it is not possible to use tf.summary functions when using tf.estimator.SummarySaverHook.
Will this change the current api? How?
It will change the API as it will require either a basic change in tf.summary or tf.estimator
Who will benefit with this feature?
It will help people in migrating their codes to native V2 symbols.

#36516 is also a related issue I think.

I have also stumbled upon this issue. Is somebody working on a resolution?

@ujjwal-ai ,
Sorry for the delayed response. In the Tensorflow Version 2.x, since we use TF Keras and tf.data predominantly and don't use Estimators much, can you please let us know if this Feature is still relevant?
Thanks!


Implement HMorphism using HList to avoid intermediate boxing

Come to think of it, we should be able to avoid intermediate boxing now. We could keep track of the size of the largest intermediate result as we construct the Morphism. Once we run it, we would just write into some storage allocated to be large enough to fit the result of each iteration (writing back the coerced result). However, it sounds like the compiler might be smart enough to avoid boxing during the loop anyway so this might be unnecessary work. Need to verify.


adds bootstrap cheatsheet

@neelbrahma May be considered redundant.

Hi @jaywcjlove
I have gone through your repository and Bootstrap 5 cheatsheet would help a lot of people as this is widely used by Admin Template developers. You may consider this in https://github.com/jaywcjlove/awesome-uikit#other
We have made an interactive list of Bootstrap 5 classes, variables, and mixins.🎁 It helps you easily find the differences between Bootstrap 4 and Bootstrap 5🎊
🔗 Useful links:
Website: https://bootstrap-cheatsheet.themeselection.com/
GitHub: https://github.com/themeselection/bootstrap-cheatsheet
💡  Features
👉🏻  Search for classes, variables, or mixins
👉🏻  Highlights Difference Between Bootstrap 4 & 5 Classes
👉🏻  Live preview of HTML & code snippet
👉🏻  Update code snippet on the go
👉🏻  Easily copy the code snippet and use it
Stay Safe 🙏


Windows issues

Now that Flow supports Windows (yay!), this probably should too.
2 issues I'm seeing so far:
First, the obvious one here, probably just needs the binary path added.
I tried to fix that locally, but I encountered another bigger issues: the file names. Git for Windows really didn't seem to enjoy paths like flow_>=v0.28.x.
Don't know what a good solution would be.

Looked at this with @gabelevi and it appears that > and < are reserved characters on windows paths.
@jeffmo We should find another way to communicate the version ranges

It's not possible to escape < and >?

What happens when you check out this repo on a windows machine? Does it just mangle the directory names?

It just ignores them and give an error that checkout failed (but everything else gets checked out fine), so git status then shows those directories as deleted.

Nope, no way to escape as far as I can tell. And yeah, I think git has the blob with the info for the file, it just cannot create the file on the filesystem.

whoa, that's pretty disappointing :(
So having a clear and structured naming format is pretty important for automated tooling here. Any objects to just switching >= and <= to gte and lte?
flow_>=v0.30 -> flow_gte0.30
flow_<=v0.30 -> flow_lte0.30
flow_v0.30 -> flow_0.30
flow_>=0.30_<=0.35 -> "flow_gte0.30_lte0.35"

What about
flow_>=v0.30 -> flow_v0.30-
flow_<=v0.30 -> flow_-v0.30
flow_v0.30 -> flow_v0.30
flow_>=v0.30_<=v0.35 -> flow_v0.30-v0.35.0
or
flow_>=v0.30 -> flow_v0.30...
flow_<=v0.30 -> flow_...v0.30
flow_v0.30 -> flow_v0.30
flow_>=v0.30_<=v0.35 -> flow_v0.30...v0.35.0
If all we need is to specify a potentially open ended range, then we can get away from the >= <= mindset

That is way better than my suggestion

(I like your first suggestion best)

I need to finish up the libdef generator I've been sitting on for the past week tomorrow, then I'll try to hop on this this week.

flow_v0.30...

Ending a filename with a dot may summon zalgo on windows machines.
https://blogs.msdn.microsoft.com/oldnewthing/20071217-00/?p=24143

I could not find anything on the official Windows Developer page, so I am not sure, would it makes sense to use flow_v0.30+ instead of flow_v0.30...? Would also fit better to the flow_-v0.30 as well?
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx

@ryyppy from that page: "Do not end a file or directory name with a space or a period. Although the underlying file system may support such names, the Windows shell and user interface does not."

Hmm, not sure what you are trying to say... I wanted to introduce a + instead of a .?
Ah and for the case flow_>=v0.30_<=v0.35 -> flow_v0.30+-v0.35.0 ... heh

Oh, I misunderstood you saying you could not find anything about the dots.
+ should work, but it might be nicer to use _ or some other character that is URL-safe. Doesn't matter too much as long as it is doesn't match /[\/<>:"\\|?*]|[. ]$, I think.

I have chosen flow over ts now that it supports windows. I would love to have flow-types as well!

Ok, so to add some closure here I think we should go with:
flow_>=v0.30 -> flow_v0.30-
flow_<=v0.30 -> flow_-v0.30
flow_v0.30 -> flow_v0.30
flow_>=v0.30_<=v0.35 -> flow_v0.30-v0.35.0
Since we already use _ to separate "name" from "version", I think it's best to have something clearly different. - also makes sense for indicating a range.
So I think the work that's needed here goes as follows:

Codemod all the existing names in the repo to this new format
Update validation code (validate-defs/run-tests and friends)
Bump the beta-version in package.json
Bump the compatibleCLIRange in the cli-metadata config (to force everyone to upgrade their CLI to understand the new format)

@samwgoldman would you mind taking a crack at this?

Yup! Thanks for the details :)

This problem can be circumvented by using Docker.

Install docker on windows
Copy this this gist and add it to your PATH
Use flow-typed

@samwgoldman any updates here?

Wrapping this up now.


Bug on starting the game with two unique Armatures

I've tested the animations on the Unity workspace while the game is not playing, they're fine. But when I start the game, the other armature creates a cloned armature of the other.
GIF: (My play tint is light green)

Found a fix for this, but it requires another script where you can serialize a string. This will allow you to have more than 1 unique armatures in the game.

Thanks @toadietechnika for the fix, today I encountered the same issue handling multiple armatures.
I tried your approach and works well but I also tried just passing the armatureName as the 2nd and 3rd parameter too and seems to work as well. This way is not necessary to have an extra script:
UnityFactory.factory.BuildArmatureComponent (armatureName, armatureName, armatureName, this.gameObject)
Hope it works

I've thought of that before but still mess up sometimes. If we didn't name the Armature on DragonBones Pro (something with the "Armature" default name, it's the one at the top most then next is the Root) then it would cause that error. It's weird that the bug may occur or not, so I've used another script to avoid taking that risk :D

Hi,
The rename bug has been fixed.

Gotcha, thank you very much for that fix on the rename bug. Although I haven't checked in Unity if that bugfix also fixed the bug in this post, I'll show it if it's fixed that bug as well.

I'll close this because it's already fix on the updated API. Thank you very much :D


Stricter linting for React/JSX

What does this PR do? (please provide any background)
I ran across an issue with our eslint setup where it forced us to remove our
var React = require('react');

from our component templates as it was defined but never used:
src/components/flag/code/templates/flagTemplate.jsx
  1:4  error  React is defined but never used  no-unused-vars

src/components/icon-list/code/templates/IconListComponentTemplate.jsx
  1:4  error  React is defined but never used  no-unused-vars

src/components/icon-list-item/code/templates/IconListItemComponentTemplate.jsx
  1:4  error  React is defined but never used  no-unused-vars

src/components/image/code/templates/imageTemplate.jsx
  1:4  error  React is defined but never used  no-unused-vars

src/components/tile/code/templates/tileTemplate.jsx
  1:4  error  React is defined but never used  no-unused-vars

Whereas it does need to be there when using JSX as once it compiles to JS, the JSX tags convert to React.createElement.
I've also added some extra rules, taken from this gist, that will help to make our JSX & React more robust.
What tests does this PR have?
Linting, no unit tests required
How can be this tested?
npm run lint

Screenshots / Screencast
N/A
What gif best describes how you feel about this work?

Developer Definition of Done/Quality Checklist (for PR author to complete BEFORE code review):

[x] I have checked the contributing document and I'm happy for this to be reviewed.

Software Engineer or Developer review:

[ ] I’ve witnessed the work behaving as expected (this could be on the authors machine or screencast).
[ ] I’ve checked for coding anti-patterns.
[ ] I’ve checked for appropriate test coverage.
[ ] I’ve run all the tests locally and they pass.

Software Engineer or project guru review:

[x] I’ve witnessed the work behaving as expected (this could be on the authors machine or screencast).
[x] I’ve checked for coding anti-patterns.
[x] I’ve checked for appropriate test coverage.
[x] I’ve run all the tests locally and they pass.

cc @joestump

:+1: from me

@jackdcrawford .eslintrc is supposed to be a JSON config file. It is currently malformed because of the existing comments and comma after the last variable.  While it's not technically breaking anything, I would hate for this to become an issue in future versions because of an invalid JSON format.
Other than that, everything is perfect :)

:+1:  from me

@manifestinteractive & @jackdcrawford It is common across JS tooling to allow comments in JSON configuration files. eslint specifically allows this as does NPM in package.json files. There's a JSON5 standard that some people use that also allows it.
Long story short, it's an established pattern in the JS community.

Good to know @joestump.  I've always been concerned about this as even the developers on the projects that created the JSON config files use comments in them. To me that's not true JSON ( which they say we should use ), and I was always concerned that one day that was going to backfire horribly if they ever forced valid JSON markup in future versions.  But if you don't thing we need to care about it, I will let it go for future project / commits.


explain to users what's happening when google presents a captcha while proxying

I'm having trouble reproducing right now but the general issue that has come up through user testing is that some websites, Google included, will throw a captcha at the user when they notice their IP has jumped due to using uProxy.
We might want to explain to users what's happening here.
@jab, perhaps one for you...any thoughts?

Do you only see this with cloud?

I've only seen it with cloud. Currently, I'm assuming it's because I don't routinely test with real uProxy users in other countries -- seems unlikely Google, for example, would be singling out the IPs of cloud providers.

My expectation is the reverse: it seems likely to me that Google might flag client access from a cloud IP range as suspicious.

it seems likely to me that Google might flag client access from a cloud IP range as suspicious.

I've seen that before too, but I think it can also be triggered by per-IP rate limiting; i.e. even if it's a home IP address, if it's proxying for enough users all hitting Google (or YouTube, etc.) at the same time, it triggers the CAPTCHA for future requests from that IP until the rate limit clears. Not sure if that's what likely happened when @trevj saw this in the past though.

(btw CloudFlare does the same thing for uproxy.org now too as a DDoS protection; configurable, of course)

Re UX, I think it'd be great if uProxy could detect this and explain what's happening to the user. Even better would be if the upstream CAPTCHA pages themselves had clearer explanations, if they don't currently. ("We're seeing a lot of traffic from your address and need to make sure you're not an evil robot. This can happen when too many people are all trying to access Google at the same time from the same place (or through the same proxy).")
Even doubly better would be if rate limiting servers and distributed proxies wishing to respect rate limiting could coordinate to intelligently avoid this when possible. Does uProxy currently do anything with 429 responses, assuming that could help? (@trevj do you happen to know such details of the responses you saw? If they were 429s, would be interesting to know if there were Retry-After headers too.)


Issue with Current Country

Failed to get current location details and while searching current country showing twice in a list

This is due to following code present more than once.
let countries = self.getCountry(countryCode)

if countries.count == 1 {
   //something
}
else {
   return nil
}

When you're selecting the country also presented on the default section, then, countries.count is 2, and always will return nil.

Sent pull request: https://github.com/AmilaDiman/ADCountryPicker/pull/12

I have the same issue, any solution for it/

I also facing this issue, it show nil for default country.

same here thank you for the code


Upgrade angular-pdf

In #3590 we locked angular-pdf to v1.3.0 which fixed the reported bug #3552 with firefox:
"angular-pdf 1.3.1 does not work in Firefox with PDF documents >127kb."
Note for upgrading of angular-pdf (and pdf.js): Test large (>127kb) example pdfs in Firefox carefully.

test_130534.pdf
test_131702.pdf

Those are the testing PDFs. test_130534.pdf works with newer versions, but * test_131702.pdf doesn't.

This (hopefully) shouldn't be an issue anymore with client version 3.0. We will reopen if it appears again.


Nested Objects feature documentation

Hello and thanks for the high quality Grafana plugins you're providing.
I've downloaded Business Table latest version but I can't find anywhere documentation or tutorials on how to use Nested Objects. Not even how the look and feel of feature is supposed to look. Looking into the relevant PR, I can find an example dashboard but nothing I've tried to adapt the queries work. I'm trying to use it with a BigQuery datasource so maybe the problem comes from there. Any pointers to documentation or help would be welcome.
Thanks in advance

@AbelThorne Thank you for following our latest releases.
We just finished a release blog with details: https://volkovlabs.io/blog/business-table-1.5.0/
@daria-vl will update documentation later today and she is working on a YouTube tutorial for Editable data and Nested objects targeted for next week.
Nested objects is experimental feature and we are looking forward for the feedback from the community.


Write an integration test for HTTP caching

Added with #17687

Closing since more tests were added with PR #18114


Docs: Single Time Series Forecasting Code Sample Step 2

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

[ ] Make sure to open an issue as a bug/issue before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
[ ] Ensure the tests and linter pass
[ ] Code coverage does not decrease (if any source code was changed)
[ ] Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕

Looks like the e2e tests passed! 🎉  But there was a flake in the Kokoro presubmit tests that is unrelated to this change. Re-running the tests should hopefully let us merge.


Guys! Server survive?

Suppose.
Example:

Open 10000000+ threads with open clients.
Further increase the load severalfold. For example: simple sampling operations from chats, etc.
Well. Output standard attack.

Are you blocking by headers?
But! What if it goes with many nodes.
Against this there is what?

Most likely there will be a message with multiple authorization under the same number. It's not clear how the system will behave if the numbers are different, but it's already harder. Authorization requests are not clear how to track. There can be a lot of them.
N clients will be connected to tdlib without an authorization request.
But! There is a request td_execute({'@type': 'getTextEntities', 'text': '@telegram /test_command https://telegram.org telegram.me', '@extra': ['5', 7.0]})

Perhaps this is solved by the parameters api_id and api_hash


Spriter's Shape Transform Method Only Running First Transformation in shape.transform Array. Again

Latest npm available version (2.0.3) has mentioned bug.
This bug described and fixed in details here https://github.com/svg-sprite/svg-sprite/issues/762.
But branch 2.x doesn't contain the fixes and hence npm 2.x versions still have this bug.

You need to use v3 for this fix. It was only applied to main branch thus only in v3.
Also see the release notes. I don't want having to keep maintaining two branches so at some point soon I'll just publish the current main branch as v3.0.0 stable.

@Divergense actually this was easier to cherry pick so I just released 2.0.4.
I really hope this will be the last 2.x release and the next one will be 3.0.0. I also released 3.0.0-rc2 which is the same as rc1 but with Node.js < 18 dropped.


Adding Twitter

Add Twitter's Account Activity API to the directory

Made these changes @sudobinbash, let me know if there is anything more you need

Hi @JessicaGarson   👋
Thanks for contributing to webhooks.fyi.
We're launching our site on Product Hunt tomorrow and I'd love to include our contributors as makers (to spread the love and street creds).
Please sign up to producthunt.com and send me your profile url here if you would like to be included and I'll take care of the rest.
ty,
Fred


Use multiple CNAMEs to simplify failover

Added

Add intermediate CNAMEs and clarify resource names accordingly

Changed (non-breaking)

Rename some internal modules to better align with their purpose:

fail-over-cname --> fail-over-cnames
custom_domains --> api_gateway_domains_and_certs

Rename some other resources to differentiate between public (main) CNAME, intermediate CNAME, and AWS API Gateway domain names.

Note: This will probably be easier to review by looking at each commit one-at-a-time.

WARNING:
This takes a minimalist approach by only setting up the intermediate CNAME records as DNS records. It does not add those intermediate domain names as valid domains for either the certificates or the API Gateway endpoints.
Any HTTPS requests made using the "public" domain name (e.g. api.example.com) will work. However, HTTPS requests made using an intermediate domain name (e.g. api-region.example.com) probably won't work.
QUESTION: Does that seem acceptable?
The other option is to go ahead and try to set up the certificates to include those alternate domain names (feasible) and try to set up API Gateway custom domains for them as well (might work... unsure).


Common phonon flow: static_job does not return forces

Details about the quacc environment

quacc version: 0.6.4
Python version: 3.11.7

What is the issue?
When sending a static job into the common phonon_flow it will not necessarily compute the forces, which will lead you right into: forces = [output["results"]["forces"] for output in force_job_results]
This is because inside static_jobs, only .get_potential_energy() is called.
How can we easily reproduce the issue?
mace_force_job = partial(
    static_job,
    method="mace",
    model="large",
    default_dtype="float32",
    device="cpu",
    dispersion=True,
)

atoms = molecule("H2O", vacuum=10)

results = phonon_flow(
    atoms,
    force_job=mace_force_job,
    min_length=None,
    phonopy_kwargs={"supercell_matrix": [1, 1, 1]},
)

Something else unrelated: I had to change the flow a little bit to allow passing phonopy_kwargs={"supercell_matrix": [1, 1, 1]} min_length is nice but often full control over q-points is needed. min_length is problematic in case of a slab for example.

I will add the supercell_matrix kwarg back in. It used to be present, but I replaced it in favor of min_length. I will include both options in an update. That said, I don't think it is problematic for a slab. If you want the min_length to be 10 A, then the c dimension with vacuum would not be expanded to a supercell (assuming the slab + total vacuum space is at least 10 A). Could you explain a bit why it would be problematic for a slab?
As for the force issue, by design, a @job that computes forces is meant to be passed. That said, the behavior you receive is odd. I have small but existent tests for the MLP phonon recipe, and it passes. I wonder if it's that the MACE model is not parsing/computing forces or a non-PBC structure? I will have to investigate later.

For the slab, say c is ~ 15 Å and a, b are ~ 6 Å, now you want the supercell to be [3, 3, 1], in this case you should pass min_length = 18, which will results in [3, 3, 2] ? I am possibly completely mistaken as well
Also, I didn't explicitly say it: I am using the common.phonon flow not the mlp one but it should not matter I think
Changing pbc does not seems to have any impact, replacing atoms.get_potential_energy() to get_forces() in the runner fix the issue

For the slab, say c is ~ 15 Å and a, b are ~ 6 Å, now you want the supercell to be [3, 3, 1], in this case you should pass min_length = 18, which will results in [3, 3, 2] ? I am possibly completely mistaken as well

That is fair. I'll update it to be min_lengths: float | tuple[float, float, float] | None to allow for more flexibility.
Will report back on the forces issue when I get to that later today.

As for the MLP issue, that is due to an upstream issue in MACE: https://github.com/ACEsuit/mace/issues/315. I'd prefer it to get solved there.

Thanks for taking care of that!

Did not mean to close.


adapt ssl_handshakd_time for stream module

adapt ssl_handshakd_time for stream module

should add test case for stream ssl hanshake  time:)

ACK for source

Test result:
tests/nginx-tests/tengine-tests/stream_ssl_handshakd_time.t ..
1..4
depth=0 CN = localhost
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = localhost
verify return:1
ok 1 - acccess ok
ok 2 - time ok
ok 3 - no alerts
ok 4 - no sanitizer errors
ok
All tests successful.
Files=1, Tests=4,  1 wallclock secs ( 0.04 usr  0.00 sys +  0.34 cusr  0.05 csys =  0.43 CPU)
Result: PASS

1..4
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100     2  100     2    0     0     14      0 --:--:-- --:--:-- --:--:--    14
ok 1 - acccess ok
ok 2 - time ok
ok 3 - no alerts
ok 4 - no sanitizer errors
ok
All tests successful.
Files=1, Tests=4,  1 wallclock secs ( 0.04 usr  0.01 sys +  0.43 cusr  0.15 csys =  0.63 CPU)
Result: PASS

ACK


beta.2

.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
Can we remove this newly added file/folder???
And also probably add an entry to the .gitignore file to ignore this in future?????
The way I see it, if it is not required in-order for publisher app to integrate our SDK via SPM then it should not be here.

looks good. Approving.


"there are only 2 changes" ?

There's more than 2 changes that might be worth a mention... (a 'whats new' doc would be nice by the way)
Polygon.points is no longer an array of points, but an array of numbers...
Font rendering has changed, so your font positioning might be off (I had to move all my text down a few pixels)
there might be more, haven't encountered em yet.

README will be rewritten in v3


Set proper default NIC of network_check_list

Default NIC of network_check_list is eth0 which is barely used and
always caused maas checks to fail. Now We only need to worry the
state of bond interface. This change covers most of practical
customer cases.
Connects #742

Ceph and Swift Log:
23:19:18 ERROR: Step ‘Publish JUnit test result report’ failed: No test report files were found. Configuration error?
recheck_ceph
recheck_swift

Update:
Same issue - 16:33:27 ERROR: Step ‘Publish JUnit test result report’ failed: No test report files were found. Configuration error?

@hughsaunders Hi, Hugh. I kept getting same issue with JUnit test and no idea what happened on gate testing. Could you take a look at it? Thanks. I heard there maybe is a fix on the way for this.

@Frank-ZhangXin there is a legitimate failure here even though the end of the logs implies otherwise:
01:34:07.912 failed: [jrpcaioiad-cd3] => (item={'tx_pct_crit': u'60', 'rx_pct_warn': u'40', 'max_speed': u'1000', 'group': 'hosts', 'name': 'bond1', 'tx_pct_warn': u'40', 'rx_pct_crit': u'60'}) => {"failed": true, "item": {"group": "hosts", "max_speed": "1000", "name": "bond1", "rx_pct_crit": "60", "rx_pct_warn": "40", "tx_pct_crit": "60", "tx_pct_warn": "40"}}
01:34:07.927 msg: The specified network interfaces bond1 doesn't exist, consider setting the 'network_checks_list' variable to override these interfaces

I think we need to be overriding this for an AIO.

@git-harry Thanks Harry, I'll fix it

:-1: not a proper fix, if you want to monitor all bond interfaces, you can generate a list of bond interfaces to monitor via registering the output of this command.
for interface in $(find /sys/class/net/ -maxdepth 1 -type l | rev | cut -d '/' -f 1 | rev); do if [[ $(cat /sys/class/net/"${interface}"/type) -eq 1 ]]; then if [[ $(grep DEVTYPE=bond /sys/class/net/"${interface}"/uevent) ]]; then echo "${interface}"; fi; fi; done

Your content preview is now ready. :bow:

:mag_right: Preview

22:40:01 failed: [jrpcaioiad-aa4] => {"changed": true, "cmd": ["ip", "-4", "r", "|", "grep", "^default", "|", "awk", "{print $5}"], "delta": "0:00:00.003009", "end": "2016-09-13 22:40:01.452154", "rc": 255, "start": "2016-09-13 22:40:01.449145", "warnings": []}
@prometheanfire Hey, man. I try to resolute the NIC used in network task, but it seems not working. Can you point out where I was wrong? Thanks

the return code seems wrong, something went wrong. I'd imagine the ip command is able to be run maybe you need the full path /sbin/ip on ubuntu I think

If you want to double-check your formatting, check the preview.

recheck_all

recheck_all

Unknown error:
12:10:41 TASK: [Verify Check & Alarm Status] *******************************************
12:40:41 Build timed out (after 30 minutes). Marking the build as aborted.
12:40:41 Build was aborted

recheck_all

[Ceph gate] Unexpected galera errors:
15:39:10 TASK: [galera_client | Install pip packages] **********************************
...
15:40:21 failed: [jrpcaioiad-c76_nova_cert_container-4681ff06] => (item=pycrypto) => {"attempts": 5, "cmd": "/usr/local/bin/pip install -U pycrypto", "failed": true, "item": "pycrypto"}
15:40:21 msg: Task failed as maximum retries was encountered
15:40:24 failed: [jrpcaioiad-c76_nova_conductor_container-1c2bd69f] => (item=python-memcached) => {"attempts": 5, "cmd": "/usr/local/bin/pip install -U python-memcached", "failed": true, "item": "python-memcached"}
15:40:24 msg: Task failed as maximum retries was encountered
15:40:31 failed: [jrpcaioiad-c76_nova_api_metadata_container-0151b6b8] => (item=python-memcached) => {"attempts": 5, "cmd": "/usr/local/bin/pip install -U python-memcached", "failed": true, "item": "python-memcached"}
15:40:31 msg: Task failed as maximum retries was encountered
...

[Swift gate] old verify-maas time out issue
16:26:20 TASK: [Verify Check & Alarm Status] *******************************************
16:56:20 Build timed out (after 30 minutes). Marking the build as aborted.
16:56:20 Build was aborted

recheck_all

[Ceph gate] Verify Checks and Alarm errors:06:28:33 failed: [jrpcaioiad-902] => {"attempts": 8, "changed": false, "cmd": ". /openstack/venvs/maas-r13.0.0rc1/bin/activate\n /opt/rpc-openstack/scripts/rpc-maas-tool.py verify-status --entity jrpcaioiad-902", "delta": "0:05:00.960478", "end": "2016-09-19 06:28:32.000508", "failed": true, "failed_when_result": true, "rc": 1, "start": "2016-09-19 06:23:31.040030", "stdout_lines": [], "warnings": []}
06:28:33 stderr: Traceback (most recent call last):
06:28:33   File "/opt/rpc-openstack/scripts/rpc-maas-tool.py", line 618, in
06:28:33     cli = RpcMassCli()
06:28:33   File "/opt/rpc-openstack/scripts/rpc-maas-tool.py", line 214, in init
06:28:33     self.args.raxrcpath)
06:28:33   File "/opt/rpc-openstack/scripts/rpc-maas-tool.py", line 54, in init
06:28:33     self._add_links()
06:28:33   File "/opt/rpc-openstack/scripts/rpc-maas-tool.py", line 96, in _add_links
06:28:33     for entry in self.overview:
06:28:33   File "/openstack/venvs/maas-r13.0.0rc1/local/lib/python2.7/site-packages/libcloud/common/types.py", line 115, in iter
06:28:33     self._load_all()
06:28:33   File "/openstack/venvs/maas-r13.0.0rc1/local/lib/python2.7/site-packages/libcloud/common/types.py", line 141, in _load_all
06:28:33     value_dict=self._value_dict)
06:28:33   File "/openstack/venvs/maas-r13.0.0rc1/local/lib/python2.7/site-packages/rackspace_monitoring/drivers/rackspace.py", line 233, in _get_more
06:28:33     response = self.connection.request(value_dict['url'], params)
06:28:33   File "/openstack/venvs/maas-r13.0.0rc1/local/lib/python2.7/site-packages/rackspace_monitoring/drivers/rackspace.py", line 152, in request
06:28:33     raw=raw
06:28:33   File "/openstack/venvs/maas-r13.0.0rc1/local/lib/python2.7/site-packages/libcloud/common/openstack.py", line 227, in request
06:28:33     raw=raw)
06:28:33   File "/openstack/venvs/maas-r13.0.0rc1/local/lib/python2.7/site-packages/libcloud/common/base.py", line 859, in request
06:28:33     'response': self.connection.getresponse()}
06:28:33   File "/usr/lib/python2.7/httplib.py", line 1051, in getresponse
06:28:33     response.begin()
06:28:33   File "/usr/lib/python2.7/httplib.py", line 415, in begin
06:28:33     version, status, reason = self._read_status()
06:28:33   File "/usr/lib/python2.7/httplib.py", line 371, in _read_status
06:28:33     line = self.fp.readline(_MAXLINE + 1)
06:28:33   File "/usr/lib/python2.7/socket.py", line 476, in readline
06:28:33     data = self._sock.recv(self._rbufsize)
06:28:33   File "/usr/lib/python2.7/ssl.py", line 341, in recv
06:28:33     return self.read(buflen)
06:28:33   File "/usr/lib/python2.7/ssl.py", line 260, in read
06:28:33     return self._sslobj.read(len)
06:28:33 socket.error: [Errno 104] Connection reset by peer
06:28:33 msg: Task failed as maximum retries was encountered
06:28:33
06:28:33 FATAL: all hosts have already failed -- aborting
06:28:33
06:28:33 PLAY RECAP ********************************************************************
06:28:33 Verify Check & Alarm Status ------------------------------------------ 2755.41s
06:28:33 Verify Checks & Alarms are registered --------------------------------- 482.83s
06:28:33 Allow MAAS time to run checks before verifying their status ----------- 120.11s
06:28:33 copy script to all hosts ------------------------------------------------ 0.36s
06:28:33 Discover rpc-openstack version ------------------------------------------ 0.12s
06:28:33 ensure remote directory ------------------------------------------------- 0.08s
06:28:33 Display rpc_release variable -------------------------------------------- 0.01s
06:28:33            to retry, use: --limit @/jenkins/verify-maas.retry
06:28:33
06:28:33 jrpcaioiad-902             : ok=7    changed=0    unreachable=0    failed=1

[Swift gate] old verify-maas time out issue
05:34:25 TASK: [Verify Check & Alarm Status] *******************************************
06:04:25 Build timed out (after 30 minutes). Marking the build as aborted.
06:04:25 Build was aborted

recheck_all

Your content preview is now ready. :bow:

Reviewer remind:
Temporary fix passed and prove my theory, and I'm working on one kind of permanent solution.

Your content preview is now ready. :bow:

Your content preview is now ready. :bow:

:eyes: Preview

HULK PREVIEW

For the sake of asking. I see we moved to ansible_default_ipv4.interface.  Maybe we've already confirmed, but if we haven't, can we confirm on a lab (or with the original reporter) on a machine with bond0 setup, it's bond0 that is returned?

I spun up an on-metal 14.04 machine, apt-get install'd the default ansible package (1.5.4) and this succeeded as expected.
Here's the output of ip a:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: p9p1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether a0:36:9f:32:49:71 brd ff:ff:ff:ff:ff:ff
3: p9p2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether a0:36:9f:32:49:71 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether a0:36:9f:32:49:71 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a236:9fff:fe32:4971/64 scope link
       valid_lft forever preferred_lft forever
5: bond0.101@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether a0:36:9f:32:49:71 brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/24 brd <IP_ADDRESS> scope global bond0.101
       valid_lft forever preferred_lft forever
    inet6 fe80::a236:9fff:fe32:4971/64 scope link
       valid_lft forever preferred_lft forever
6: bond0.401@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether a0:36:9f:32:49:70 brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/20 brd <IP_ADDRESS> scope global bond0.401
       valid_lft forever preferred_lft forever
    inet6 fe80::a236:9fff:fe32:4970/64 scope link
       valid_lft forever preferred_lft forever

So we've got a bond and two slave interfaces with persistent interface naming.
Looking at ip r we can see the default route is out bond0.101:
default via <IP_ADDRESS> dev bond0.101
<IP_ADDRESS>/12 via <IP_ADDRESS> dev bond0.401
<IP_ADDRESS>/20 dev bond0.401  proto kernel  scope link  src <IP_ADDRESS>
<IP_ADDRESS>/12 via <IP_ADDRESS> dev bond0.401
<IP_ADDRESS>/24 dev bond0.101  proto kernel  scope link  src <IP_ADDRESS>

So then I ran ansible localhost -m setup, which provided this output for the ansible_default_ipv4 fact:
 "ansible_default_ipv4": {
     "address": "<IP_ADDRESS>",
     "alias": "bond0.101",
     "gateway": "<IP_ADDRESS>",
     "interface": "bond0.101",
     "macaddress": "a0:36:9f:32:49:71",
     "mtu": 1500,
     "netmask": "<IP_ADDRESS>",
     "network": "<IP_ADDRESS>",
     "type": "ether"
},

So as expected, the setup module can correctly identify the interface (among other information) which has an IP in the same CIDR as the nexthop of the default gateway.

Cool. Thanks @Apsu / @Frank-ZhangXin !

I think the original ask was to monitor bond0 and bond1 by default as that is what is on most of the boxes that support deploy - not just the nic associated with the default gateway.

If that's the original ask then we will need more than route checking or ansible stuff.
@mancdaz bond0 and bond1 could be named anything, what attributes of the interface should we look for to determine if it should be monitored?  Should it have an ipv4 address associated with it? should only bond interfaces be considered?

@prometheanfire you're right they could be named anything, but as confirmed by @bjoernt most of their deployments use those.
The original intention of these vars was that support would have to alter them for each deployment to actually match what is there, which is why we initially defaulted to just eth0. They are ok with that approach, but knowing that the bill of their deployments use bond0 and bond1, changing the default to that means they have to manually alter it less often.
Perhaps trying to auto discover all the things is over complicating what was originally a fairly basic ask, is what I'm trying to say.

I don't think we should half solve this is all.  We should decide if we are alright with that (half solving it) or not before we continue.

@mancdaz @prometheanfire After re-reading all of the thread, the core of the request was to not drop in a default that then immediately kicks off MaaS error state: aka, eth0 when the default should be bond0:  https://github.com/rcbops/rpc-openstack/issues/742#issuecomment-172481300 and https://github.com/rcbops/rpc-openstack/issues/742#issuecomment-203466482
I think this fix accomplishes that goal minimally. Agreed, it doesn't monitor all the things, and they need to update vars/config. At the vary least, we've stopped hardcoding and set a default based on facts that copes with interface naming changes in udev, and for a few other reasons.

@claco @mancdaz I've already testify it's working with simply replacing eth0 with bond0. How to solve this problem depends offering demands from supporting's tuning purpose or eliminate this potential bug which will be triggered in unmanned situation. I some kind of agree @prometheanfire 's thought, because quote line of bug description from @BjoernT is "All new checks will practically fail due to missing network interfaces and we need to either empty this parameter or ADD A Ansible Facts Discovery around the INTERFACES or setup limits for the bonding interfaces only". So apparently this patch goes one of suggested direction.
@BjoernT We want to figure out if the interface name is necessary to tune/alter manually each time by support. What do you think we make it automatically find right one with Ansible?

@Frank-ZhangXin The ask here was primarily to configure a sane default value like bond0 and perhaps bond1 (but that may generate too many false alerts based on instance traffic). Using auto detection, all bondX devices sound OK but we have to be careful not to run into the known issues we have like the block devices. Because bond1.X devices for example are dynamically by neutron, depending where instances are running and to which network they are attached. That even leaves VXLAN out of the picture. Then there are all the tap interfaces which do show up inside the ansible inventory too which we would have to exclude etc etc. I think auto detecting is quite more complex than anticipated so I'm OK with just pre configuring bond0 and bond1, which are always there. At bond1 I'm even on the edge, knowing this is instance traffic and we may not be able to prevent alarms from hitting us because the customer has only impact on network traffic.

If we just change it to static values (bond0/1) we can back it off if necessary.

OK so having reviewed all the discussion, I'm at a point where I think what we have now is kind of what is being asked for, with the bonus of being automated should the primary nic end up not being bond0 for whatever reason. There's not much point in spinning any more on this, so I'm going to be the second 👍 .
Of course, if this turns out to not be quite what we want then we just raise issue and fix it.

@mancdaz don't forget to delete the branch


Update to swf-tree 0.7

This commit updates the SWF parser and type definitions to version 0.7. The swf-tree and swf-parser versions should match from now on.
This update includes minor fixes to font tags. It does not seem impact the code of flashback but it's good to keep the dependencies up-to-date. Most of the work has gone into the testing infrastructure: the libraries now share about a hundred test samples defined in the open-flash-db repositories.
Also, there are changelogs now 🎉

https://github.com/open-flash/swf-tree/blob/master/CHANGELOG.md#070-2019-05-21
https://github.com/open-flash/swf-parser/blob/master/CHANGELOG.md#070-2019-05-21

@demurgos So @anyska was trying out various random SWFs with flashback and she found this PR regressed something (we haven't investigated yet what exactly, but thought you might want to know), e.g.:

http://www.free-flash-animations.com/resources/downloads.php?file=24clock-500x200.swf
http://www.free-flash-animations.com/resources/downloads.php?file=kissme-400x400.swf
http://www.free-flash-animations.com/resources/downloads.php?file=angel-450x550.swf
http://www.free-flash-animations.com/resources/downloads.php?file=helloween-500x500.swf
http://www.free-flash-animations.com/resources/downloads.php?file=locator-400x250.swf
http://www.free-flash-animations.com/resources/downloads.php?file=monsterrock-360x460.swf
http://www.free-flash-animations.com/resources/downloads.php?file=ratblues-500x280.swf

They still work in the web interface in gh-pages because it never got updated to include this PR, e.g.:
https://lykensol.github.io/flashback/#www.free-flash-animations.com/resources/downloads.php?file=helloween-500x500.swf

Oops, took us a while to realize this was coming from https://github.com/open-flash/swf-parser/issues/50 /facepalm

Sorry for the panics on not-implemented cases. I replied in https://github.com/open-flash/swf-parser/issues/50#issuecomment-541334889 that now that Open Flash advanced enough, completing the parser is becoming a priority. I also forgot to mention the reason for the introduction of the not_implemented macros: I was hoping it would help discover files using these non-unimplemented tags and open PRs. Now that there's a list of files, I'll be able to implement the missing parsers and check that they work.


Wiki page for running the CLI Application

The following wiki page has been created for the steps to run the CLI application:
Running the Twindle CLI Application
The wiki assumes that NodeJS is already installed and the end user is familiar with running NodeJS applications. If anyone wants to update the wiki for how to do that, please feel free to do that.
@johnjacobkenny can you add documentation label to this issue?

Very good @Mira-Alf
npm install dotenv
No need to install one by one
npm install
Will install everything

@proful oops, I didnt know npm install will install everything.. Thanks, will edit the wiki

@Mira-Alf you can use backticks to indicate code blocks. It makes it much more readable. e.g. npm install

@johnjacobkenny I guess you edited the wiki. I know I am being a pain with this markdown format. Sorry.

@Mira-Alf I can see that you like perfection (trust me, I used to be like that) but in my personal experience perfection as a goal has only pulled me down. Now the metric I try to optimize for is progress.
All I mean is that you can improve, and we are all here to improve, and we improve by making mistakes. :smiley:  You don't have to apologize :sweat_smile:

Wiki looks good!


Failed to compile with jammy stemcell

I tried to use this release on jammy stemcell, did not compile.
manifest:
# db on vsphere
# bosh deploy -d db db.yml
---
name: db

releases:
  - name: "backup-and-restore-sdk"
    version: "1.18.36"
    url: "https://bosh.io/d/github.com/cloudfoundry-incubator/backup-and-restore-sdk-release?v=1.18.36"
    sha1: "7af40256f493476bce1463654bf655d2214b0d53"

stemcells:
  - alias: "default"
    os: "ubuntu-jammy"
    version: "0.0.7"

update:
  canaries: 2
  max_in_flight: 1
  canary_watch_time: 5000-60000
  update_watch_time: 5000-60000

instance_groups:
  - name: db
    instances: 1
    jobs:
      - consumes: {}
        name: database-backup-restorer
        provides: {}
        release: backup-and-restore-sdk
    vm_type: medium.disk
    stemcell: default
    persistent_disk_type: "10240"
    azs:
      - az-0
    networks:
      - default:
          - dns
          - gateway
        name: deployment-network

features:
  use_dns_addresses: true

Logs:
Task 345

Task 345 | 06:53:36 | Preparing deployment: Preparing deployment (00:00:04)
Task 345 | 06:53:40 | Preparing deployment: Rendering templates (00:00:01)
Task 345 | 06:53:41 | Preparing package compilation: Finding packages to compile (00:00:00)
Task 345 | 06:53:41 | Compiling packages: golang-1-linux/1a6489b2b33f55547b95cc524b932a0cfffb11a8f6c24479fe102d3494a4f030
Task 345 | 06:53:41 | Compiling packages: golang-1-linux/ad6aaba3771663154e241ba072646296fb4fa4edc2b7c55702f3fc67c1576378
Task 345 | 06:53:41 | Compiling packages: database-backup-restorer-mysql-5.6/01bf18f19277261bcccac9736d7634b49eb184a93cd6549b78f4e1d75eabe35a
Task 345 | 06:53:41 | Compiling packages: database-backup-restorer-mysql-5.7/782d833de90f48f0867dae4145696c77de2b7acf6bc9ce60cd7ec249a75cefac
Task 345 | 06:58:17 | Compiling packages: golang-1-linux/1a6489b2b33f55547b95cc524b932a0cfffb11a8f6c24479fe102d3494a4f030 (00:04:36)
Task 345 | 06:58:17 | Compiling packages: libpcre2/0d89cc293293ba02edb6389db603b1ac6e15d52d9f6fbc22e8c34b3100762587
Task 345 | 06:58:20 | Compiling packages: golang-1-linux/ad6aaba3771663154e241ba072646296fb4fa4edc2b7c55702f3fc67c1576378 (00:04:39)
Task 345 | 06:58:20 | Compiling packages: database-backup-restorer-postgres-13/c3effde85ab71ee41f368c5fa74ad663a04df7414a73c7d87d2be649dc1c223e
Task 345 | 06:58:47 | Compiling packages: database-backup-restorer-mysql-5.7/782d833de90f48f0867dae4145696c77de2b7acf6bc9ce60cd7ec249a75cefac (00:05:06)
                    L Error: Action Failed get_task: Task 364711f6-56f6-4875-532b-016de4568c66 result: Compiling package database-backup-restorer-mysql-5.7: Running packaging script: Running packaging script: Command exited with 1; Truncated stdout: -- Looking for include file strings.h - found
-- Looking for include file sys/ioctl.h
-- Looking for include file sys/ioctl.h - found
-- Looking for include file sys/mman.h
-- Looking for include file sys/mman.h - found
-- Looking for include file sys/resource.h
-- Looking for include file sys/resource.h - found
-- Looking for include file sys/select.h
-- Looking for include file sys/select.h - found
-- Looking for include file sys/socket.h
-- Looking for include file sys/socket.h - found
-- Looking for include files curses.h, term.h
-- Looking for include files curses.h, term.h - found
-- Looking for include file termios.h
-- Looking for include file termios.h - found
-- Looking for include file termio.h
-- Looking for include file termio.h - found
-- Looking for include file unistd.h
-- Looking for include file unistd.h - found
-- Looking for include file sys/wait.h
-- Looking for include file sys/wait.h - found
-- Looking for include file sys/param.h
-- Looking for include file sys/param.h - found
-- Looking for include file fnmatch.h
-- Looking for include file fnmatch.h - found
-- Looking for include file sys/un.h
-- Looking for include file sys/un.h - found
-- Looking for include file sys/devpoll.h
-- Looking for include file sys/devpoll.h - not found
-- Looking for include file sys/epoll.h
-- Looking for include file sys/epoll.h - found
-- Looking for TAILQ_FOREACH
-- Looking for TAILQ_FOREACH - found
-- Looking for _aligned_malloc
-- Looking for _aligned_malloc - not found
-- Looking for backtrace
-- Looking for backtrace - found
-- Looking for printstack
-- Looking for printstack - not found
-- Looking for index
-- Looking for index - found
-- Looking for clock_gettime
-- Looking for clock_gettime - found
-- Looking for cuserid
-- Looking for cuserid - found
-- Looking for directio
-- Looking for directio - not found
-- Looking for ftruncate
-- Looking for ftruncate - found
-- Looking for compress
-- Looking for compress - not found
-- Looking for crypt
-- Looking for crypt - found
-- Looking for dlopen
-- Looking for dlopen - found
-- Looking for fchmod
-- Looking for fchmod - found
-- Looking for fcntl
-- Looking for fcntl - found
-- Looking for fdatasync
-- Looking for fdatasync - found
-- Looking for fdatasync
-- Looking for fdatasync - found
-- Looking for fedisableexcept
-- Looking for fedisableexcept - found
-- Looking for fseeko
-- Looking for fseeko - found
-- Looking for fsync
-- Looking for fsync - found
-- Looking for gethostbyaddr_r
-- Looking for gethostbyaddr_r - found
-- Looking for gethrtime
-- Looking for gethrtime - not found
-- Looking for getnameinfo
-- Looking for getnameinfo - found
-- Looking for getpass
-- Looking for getpass - found
-- Looking for getpassphrase
-- Looking for getpassphrase - not found
-- Looking for getpwnam
-- Looking for getpwnam - found
-- Looking for getpwuid
-- Looking for getpwuid - found
-- Looking for getrlimit
-- Looking for getrlimit - found
-- Looking for getrusage
-- Looking for getrusage - found
-- Looking for initgroups
-- Looking for initgroups - found
-- Looking for issetugid
-- Looking for issetugid - not found
-- Looking for getuid
-- Looking for getuid - found
-- Looking for geteuid
-- Looking for geteuid - found
-- Looking for getgid
-- Looking for getgid - found
-- Looking for getegid
-- Looking for getegid - found
-- Looking for lstat
-- Looking for lstat - found
-- Looking for madvise
-- Looking for madvise - found
-- Looking for malloc_info
-- Looking for malloc_info - found
-- Looking for memrchr
-- Looking for memrchr - found
-- Looking for mlock
-- Looking for mlock - found
-- Looking for mlockall
-- Looking for mlockall - found
-- Looking for mmap64
-- Looking for mmap64 - found
-- Looking for poll
-- Looking for poll - found
-- Looking for posix_fallocate
-- Looking for posix_fallocate - found
-- Looking for posix_memalign
-- Looking for posix_memalign - found
-- Looking for pread
-- Looking for pread - found
-- Looking for pthread_condattr_setclock
-- Looking for pthread_condattr_setclock - found
-- Looking for pthread_sigmask
-- Looking for pthread_sigmask - found
-- Looking for readlink
-- Looking for readlink - found
-- Looking for realpath
-- Looking for realpath - found
-- Looking for setfd
-- Looking for setfd - not found
-- Looking for sigaction
-- Looking for sigaction - found
-- Looking for sleep
-- Looking for sleep - found
-- Looking for stpcpy
-- Looking for stpcpy - found
-- Looking for stpncpy
-- Looking for stpncpy - found
-- Looking for strlcpy
-- Looking for strlcpy - not found
-- Looking for strndup
-- Looking for strndup - found
-- Looking for strnlen
-- Looking for strnlen - found
-- Looking for strlcat
-- Looking for strlcat - not found
-- Looking for strsignal
-- Looking for strsignal - found
-- Looking for fgetln
-- Looking for fgetln - not found
-- Looking for strsep
-- Looking for strsep - found
-- Looking for tell
-- Looking for tell - not found
-- Looking for vasprintf
-- Looking for vasprintf - found
-- Looking for memalign
-- Looking for memalign - found
-- Looking for nl_langinfo
-- Looking for nl_langinfo - found
-- Looking for ntohll
-- Looking for ntohll - not found
-- Looking for clock_gettime
-- Looking for clock_gettime - found
-- Looking for epoll_create
-- Looking for epoll_create - found
-- Looking for inet_ntop
-- Looking for inet_ntop - found
-- Looking for kqueue
-- Looking for kqueue - not found
-- Looking for timeradd
-- Looking for timeradd - found
-- Looking for timerclear
-- Looking for timerclear - found
-- Looking for timercmp
-- Looking for timercmp - found
-- Looking for timerisset
-- Looking for timerisset - found
-- Looking for include file sys/time.h
-- Looking for include file sys/time.h - found
-- Looking for include file sys/times.h
-- Looking for include file sys/times.h - found
-- Looking for times
-- Looking for times - found
-- Looking for gettimeofday
-- Looking for gettimeofday - found
-- Looking for lrand48
-- Looking for lrand48 - found
-- Looking for TIOCGWINSZ
-- Looking for TIOCGWINSZ - found
-- Looking for FIONREAD
-- Looking for FIONREAD - found
-- Looking for FIONREAD
-- Looking for FIONREAD - not found
-- Looking for SIGEV_THREAD_ID
-- Looking for SIGEV_THREAD_ID - found
-- Looking for SIGEV_PORT
-- Looking for SIGEV_PORT - not found
-- Looking for log2
-- Looking for log2 - found
-- Looking for isinf
-- Looking for isinf - found
-- Performing Test HAVE_CXX_ISINF
-- Performing Test HAVE_CXX_ISINF - Success
-- Looking for timer_create
-- Looking for timer_create - found
-- Looking for timer_settime
-- Looking for timer_settime - found
-- Looking for kqueue
-- Looking for kqueue - not found
-- Looking for EVFILT_TIMER
-- Looking for EVFILT_TIMER - not found
-- Check size of char *
-- Check size of char * - done
-- Check size of long
-- Check size of long - done
-- Check size of short
-- Check size of short - done
-- Check size of int
-- Check size of int - done
-- Check size of long long
-- Check size of long long - done
-- Check size of off_t
-- Check size of off_t - done
-- Check size of time_t
-- Check size of time_t - done
-- Check size of struct timespec
-- Check size of struct timespec - done
-- Check size of uint
-- Check size of uint - done
-- Check size of ulong
-- Check size of ulong - done
-- Check size of u_int32_t
-- Check size of u_int32_t - done
-- Performing Test HAVE_VISIBILITY_HIDDEN
-- Performing Test HAVE_VISIBILITY_HIDDEN - Success
-- Checking stack direction : -1
-- Looking for include files time.h, sys/time.h
-- Looking for include files time.h, sys/time.h - found
-- Looking for O_NONBLOCK
-- Looking for O_NONBLOCK - found
-- Performing Test HAVE_PAUSE_INSTRUCTION
-- Performing Test HAVE_PAUSE_INSTRUCTION - Success
-- Performing Test HAVE_BUILTIN_UNREACHABLE
-- Performing Test HAVE_BUILTIN_UNREACHABLE - Success
-- Performing Test HAVE_BUILTIN_EXPECT
-- Performing Test HAVE_BUILTIN_EXPECT - Success
-- Performing Test HAVE_BUILTIN_STPCPY
-- Performing Test HAVE_BUILTIN_STPCPY - Success
-- Performing Test HAVE_GCC_ATOMIC_BUILTINS
-- Performing Test HAVE_GCC_ATOMIC_BUILTINS - Success
-- Performing Test HAVE_GCC_SYNC_BUILTINS
-- Performing Test HAVE_GCC_SYNC_BUILTINS - Success
-- Looking for netinet/in6.h
-- Looking for netinet/in6.h - not found
-- Check size of struct sockaddr_in6
-- Check size of struct sockaddr_in6 - done
-- Check size of struct in6_addr
-- Check size of struct in6_addr - done
-- Performing Test HAVE_SOCKADDR_STORAGE_SS_FAMILY
-- Performing Test HAVE_SOCKADDR_STORAGE_SS_FAMILY - Success
-- Performing Test HAVE_SOCKADDR_IN_SIN_LEN
-- Performing Test HAVE_SOCKADDR_IN_SIN_LEN - Failed
-- Performing Test HAVE_SOCKADDR_IN6_SIN6_LEN
-- Performing Test HAVE_SOCKADDR_IN6_SIN6_LEN - Failed
-- Performing Test HAVE_PTHREAD_THREADID_NP
-- Performing Test HAVE_PTHREAD_THREADID_NP - Failed
-- Performing Test HAVE_IMPLICIT_DEPENDENT_NAME_TYPING
-- Performing Test HAVE_IMPLICIT_DEPENDENT_NAME_TYPING - Failed
-- Looking for chown
-- Looking for chown - found
-- Looking for include file numa.h
-- Looking for include file numa.h - not found
-- Looking for include file numaif.h
-- Looking for include file numaif.h - not found
-- NUMA library missing or required version not available
-- Check size of socklen_t
-- Check size of socklen_t - failed
-- Check size of off64_t
-- Check size of off64_t - done
-- Looking for unistd.h
-- Looking for unistd.h - found
-- OPENSSL_INCLUDE_DIR = /usr/include
-- OPENSSL_LIBRARY = /usr/lib/x86_64-linux-gnu/libssl.so
-- CRYPTO_LIBRARY = /usr/lib/x86_64-linux-gnu/libcrypto.so
-- OPENSSL_MAJOR_VERSION =
-- OPENSSL_MINOR_VERSION =
-- OPENSSL_FIX_VERSION =
-- Looking for SHA512_DIGEST_LENGTH
-- Looking for SHA512_DIGEST_LENGTH - found
--
Cannot find appropriate system libraries for WITH_SSL=system.
Make sure you have specified a supported SSL version.
Valid options are :
system (use the OS openssl library),
yes (synonym for system),
</path/to/custom/openssl/installation>

-- Configuring incomplete, errors occurred!
See also "/var/vcap/data/compile/database-backup-restorer-mysql-5.7/mysql-5.7.36/bld/CMakeFiles/CMakeOutput.log".
See also "/var/vcap/data/compile/database-backup-restorer-mysql-5.7/mysql-5.7.36/bld/CMakeFiles/CMakeError.log".
, Stderr: + MYSQL_VERSION=5.7.36
++ pwd
+ MY_DIR=/var/vcap/data/compile/database-backup-restorer-mysql-5.7
++ mktemp
+ patch_file=/var/vcap/data/tmp/tmp.x5jQemIMyf
+ echo '--- mysys/mf_iocache2.c 2019-08-05 09:42:13.000000000 +0000
+++ mysys/mf_iocache2.c.patched 2019-08-05 09:41:53.000000000 +0000
@@ -17,6 +17,7 @@
   More functions to be used with IO_CACHE files
 */

+#include "mysql/psi/mysql_file.h"
 #include "mysys_priv.h"
 #include "my_sys.h"
 #include <m_string.h>
'
+ tar xzf mysql/mysql-5.7.36.tar.gz
+ set -e
+ cd mysql-5.7.36
+ patch mysys/mf_iocache2.c /var/vcap/data/tmp/tmp.x5jQemIMyf
+ mkdir bld
+ cd bld
+ cmake .. -DCMAKE_INSTALL_PREFIX=/var/vcap/packages/database-backup-restorer-mysql-5.7 -DWITHOUT_SERVER=ON -DWITH_SSL=system -DWITH_WSREP=ON -DWITH_INNODB_DISALLOW_WRITES=1 -DWITH_PCRE=bundled -DWITH_BOOST=/var/vcap/packages/database-backup-restorer-boost/boost_1_59_0
CMake Deprecation Warning at CMakeLists.txt:30 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

CMake Deprecation Warning at CMakeLists.txt:35 (CMAKE_POLICY):
  The OLD behavior for policy CMP0018 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.

CMake Deprecation Warning at CMakeLists.txt:41 (CMAKE_POLICY):
  The OLD behavior for policy CMP0022 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.

CMake Deprecation Warning at CMakeLists.txt:48 (CMAKE_POLICY):
  The OLD behavior for policy CMP0045 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.

CMake Deprecation Warning at CMakeLists.txt:49 (CMAKE_POLICY):
  The OLD behavior for policy CMP0042 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.

CMake Deprecation Warning at CMakeLists.txt:62 (CMAKE_POLICY):
  The OLD behavior for policy CMP0075 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.

CMake Deprecation Warning at zlib/CMakeLists.txt:24 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

CMake Error at cmake/ssl.cmake:63 (MESSAGE):
  Please install the appropriate openssl developer package.

Call Stack (most recent call first):
  cmake/ssl.cmake:280 (FATAL_SSL_NOT_FOUND_ERROR)
  CMakeLists.txt:568 (MYSQL_CHECK_SSL)

Hello @adam-jian-zhang
Thanks for reporting this.
My team and I are some of the maintainers of this project.
Could you contribute a PR to make supporting jammy stemcell possible?
We would be very keen to review any PR implementing this functionality.
In any case, we have already added this to our backlog, however
adding support for jammy is not among the highest priorities of my team at the moment.

openssl 3 is not supported by msql yet
see https://bugs.mysql.com/bug.php?id=102405

Hello @adam-jian-zhang
PR #662 should have fixed this issue.
These changes are included in latest release v1.18.46
Thanks @jpalermo, @totherme and @lnguyen for fixing this.


Sort the list of devices that are presented in the ConfigFlow when adding a new modification

It would make it much easier to find the device if the list of sorted by device name when adding a new modification.

Fixed in PR #18


Fix Spock's TestLifecycleAware integration

This was released in https://github.com/testcontainers/testcontainers-java/releases/tag/1.14.0 🎉
Thanks for the contribution!


feat(text-align-panel): 新增文字对齐配置组件

👀 PR includes

✨ Feature

[x] New feature

📝 Description

  <TextAlignPanel
    title="文字对齐"
    defaultCollapsed={false}
    onChange={(options, theme) => {
      console.log('onChange:', options, theme);
    }}
    onReset={(options, prevOptions, theme) => {
      console.log('onReset:', options, prevOptions, theme);
    }}
  />

🖼 Screenshot

Before
After

❌
✅

🔗 Related issue link

🔍 Self-Check before the merge

[ ] Add or update relevant docs.
[ ] Add or update relevant demos.
[ ] Add or update test case.
[ ] Add or update relevant TypeScript definitions.

Codecov Report
Attention: Patch coverage is 80.00000% with 1 line in your changes missing coverage. Please review.

Project coverage is 80.15%. Comparing base (ecdc9c8) to head (6dea040).
Report is 385 commits behind head on next.

Files
Patch %
Lines

...ts/src/components/config/text-align-panel/utils.ts
80.00%
0 Missing and 1 partial :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             next    #2779      +/-   ##
==========================================
+ Coverage   75.77%   80.15%   +4.38%
==========================================
  Files         257      180      -77
  Lines       11994    10331    -1663
  Branches     2464     2332     -132
==========================================
- Hits         9088     8281     -807
+ Misses       1398      606     -792
+ Partials     1508     1444      -64

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

:tada: This PR is included in version @antv/s2-react-components-v1.0.0-next.1 :tada:
The release is available on:

npm package (@next dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


KafkaClusterTest reports "Broker configuration 'ssl.client.auth' is applied only to SSL listeners".

These tests cause the following warning.
kafkaClusterZookeeperModeSASL_SSL_ClientUsesSSLClientAuth
kafkaClusterKraftModeSASL_SSL_ClientUsesSSLClientAuth

2023-02-20 15:15:41 WARN  org.apache.kafka.common.network.ChannelBuilders:158 - Broker configuration 'ssl.client.auth' is applied only to SSL listeners. Listener-prefixed configuration can be used to enable SSL client authentication for SASL_SSL listeners. In future releases, broker-wide option without listener prefix may be applied to SASL_SSL listeners as well. All configuration options intended for specific listeners should be listener-prefixed.

as per KIP-664, we should switch to using the listener prefixed of the ssl.client.auth configuration.

@franvila to see the kafka warnings, update log4j2-test.properties like this:
logger.Kafka = warn, STDOUT
logger.Kafka.name = org.apache.kafka
logger.Kafka.additivity = false


[libpopt] add version 1.16

@Mixaill,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by Microsoft. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

Thanks for the port!
I think applying the Debian patches in this case is problematic for two reasons:

The patch 0001-debian-318833-leftovers.patch is making non-trivial code changes (allocating and reallocating memory) which I don't think we're capable of verifying as correct. The other two patches make changes that don't look needed for us (presumably to support some arcane architectures that Debian ships on?).
The debian patches are licensed under the GPLv2 which is a different license than the main body of libpopt. At the very least we would need to ship both licenses (I see you've at least included the debian license inside the ports directory, but not in the package), however it's especially concerning in this case because it adds additional restrictions upon users -- it makes the resulting software GPL instead of the permissive BSD/MIT-like that the main codebase is.

As such, I've rebased out the debian patches and merged the PR in fee9e6150. Thanks again!


chore: shim fvm_shared::bigint

Summary of changes

Changes introduced in this pull request:

[x] Avoid using fvm_shared::bigint when possible.
[x] Move bigint_ser and biguint_ser to forest_shim. It can use the modules from fvm_shared_v3.

Reference issue to close (if applicable)

Closes
Other information and links

Change checklist

[x] I have performed a self-review of my own code,
[x] I have made corresponding changes to the documentation,
[x] I have added tests that prove my fix is effective or that my feature works (if possible),
[x] I have made sure the CHANGELOG is up-to-date. All user-facing changes should be reflected in this document.

@elmattic Feel like taking this PR?

Some questions:

Should weight: BigInt in BlockHeader use BigInt from forest_shim?
I didn't touch to BigInt in vm_actor/interface

Some questions:

Should weight: BigInt in BlockHeader use BigInt from forest_shim?
I believe so.

I didn't touch to BigInt in vm_actor/interface
Why?

Some questions:

Should weight: BigInt in BlockHeader use BigInt from forest_shim?

I believe so.

It's a bit hard because forest_shim::bigint::BigInt lacks of FromStr. In doubt I will keep the code like this.

I didn't touch to BigInt in vm_actor/interface

Why?

No reason. Done.

@elmattic How about adding a rule that would disallow using FVM bigint directly? This can be done via clippy configuration file here.

Won't there be issues with existing legit fvm_shared imports?

@elmattic How about adding a rule that would disallow using FVM bigint directly? This can be done via clippy configuration file here.

Won't there be issues with existing legit fvm_shared imports?

You can add #[allow(clippy::disallowed_types)] to the shim unit. To my understanding, that is the only place where fvm_shared BigInt should be directly used.


Address storage conda failures

Example Build
Explore and resolve this.

Label prediction was below confidence level 0.6 for Model:ServiceLabels: 'Azure.Core:0.3575701,Storage:0.27771208,Docs:0.018013472'

Going to be following up with #27575.
We are going to stop explicitly running tests against these conda packages. It's just duplicated work. Going to close this item when I have disabled these in code.


DataspaceConnector version 6.5.1 not compatible with 6.1.3 (Users do not update to avoid headache)

Describe the bug
DataspaceConnector version 6.5.1 cannot communicate with connectors version 6.1.3 which are being used n DRM Broker
Please users do not update to avoid headache
To Reproduce
Run Connector version 6.5.1  and try to list resources in a connector 6.1.3 using messages/description API.
Expected behavior
Be compatible.
Screenshots & Logs
2021-11-19T13:35:34,785 [http-nio-8080-exec-3] INFO - Sending request to https://ids.dwd-connector.test.mobilitydataspace.io/api/ids/data ... 2021-11-19T13:35:35,217 [http-nio-8080-exec-3] WARN - Received response but response-code not in 200-299. [code=(IMSMEW0046), response-code=(400)] 2021-11-19T13:35:35,255 [http-nio-8080-exec-3] INFO - Successfully passed SHACL-Validation. 2021-11-19T13:35:35,387 [http-nio-8080-exec-3] WARN - Received unexpected response message. [response=({reason=https://w3id.org/idsa/code/VERSION_NOT_SUPPORTED, payload=Infomodel Version of incoming Message n ot supported!, type=class de.fraunhofer.iais.eis.RejectionMessageImpl})]

Hi,
version 7.5.1?

Hi,
version 7.5.1?

sorry, you were faster than I, hope people find my ticket as fast as you and follow my suggestion.

Newer versions of the Dataspace Connector support the application.properties setting infomodel.compatibility.validation=true/false which is true by default if not set. Disables infomodel-compatibility validation of incoming messages.

same error:
021-11-19T13:58:12,685 [http-nio-8080-exec-6] DEBUG - Built request message. [body=(okhttp3.MultipartBody@63ae289b)] 2021-11-19T13:58:12,687 [http-nio-8080-exec-6] INFO - Sending request to https://ids.dwd-connector.test.mobilitydataspace.io/api/ids/data ... 2021-11-19T13:58:12,930 [http-nio-8080-exec-6] WARN - Received response but response-code not in 200-299. [code=(IMSMEW0046), response-code=(400)] 2021-11-19T13:58:12,982 [http-nio-8080-exec-6] INFO - Successfully passed SHACL-Validation. 2021-11-19T13:58:13,178 [http-nio-8080-exec-6] WARN - Received unexpected response message. [response=({reason=https://w3id.org/idsa/code/VERSION_NOT_SUPPORTED, payload=Infomodel Version of incoming Message n ot supported!, type=class de.fraunhofer.iais.eis.RejectionMessageImpl})]

same error:
021-11-19T13:58:12,685 [http-nio-8080-exec-6] DEBUG - Built request message. [body=(okhttp3.MultipartBody@63ae289b)] 2021-11-19T13:58:12,687 [http-nio-8080-exec-6] INFO - Sending request to https://ids.dwd-connector.test.mobilitydataspace.io/api/ids/data ... 2021-11-19T13:58:12,930 [http-nio-8080-exec-6] WARN - Received response but response-code not in 200-299. [code=(IMSMEW0046), response-code=(400)] 2021-11-19T13:58:12,982 [http-nio-8080-exec-6] INFO - Successfully passed SHACL-Validation. 2021-11-19T13:58:13,178 [http-nio-8080-exec-6] WARN - Received unexpected response message. [response=({reason=https://w3id.org/idsa/code/VERSION_NOT_SUPPORTED, payload=Infomodel Version of incoming Message n ot supported!, type=class de.fraunhofer.iais.eis.RejectionMessageImpl})]

same error:
021-11-19T13:58:12,685 [http-nio-8080-exec-6] DEBUG - Built request message. [body=(okhttp3.MultipartBody@63ae289b)] 2021-11-19T13:58:12,687 [http-nio-8080-exec-6] INFO - Sending request to https://ids.dwd-connector.test.mobilitydataspace.io/api/ids/data ... 2021-11-19T13:58:12,930 [http-nio-8080-exec-6] WARN - Received response but response-code not in 200-299. [code=(IMSMEW0046), response-code=(400)] 2021-11-19T13:58:12,982 [http-nio-8080-exec-6] INFO - Successfully passed SHACL-Validation. 2021-11-19T13:58:13,178 [http-nio-8080-exec-6] WARN - Received unexpected response message. [response=({reason=https://w3id.org/idsa/code/VERSION_NOT_SUPPORTED, payload=Infomodel Version of incoming Message n ot supported!, type=class de.fraunhofer.iais.eis.RejectionMessageImpl})]

Newer versions of the Dataspace Connector support the application.properties setting infomodel.compatibility.validation=true/false which is true by default if not set. Disables infomodel-compatibility validation of incoming messages. Could be set to false here.

Just checked, the app.props settings is (here unfortunately) supported as of Dataspace Connector version 6.3.0. Would need to be set on both sides to not validate incoming requests and responses for infomodel compatibility.
You could use the older solution of wildcards in the connector configuration for the inbound modelversion of the v6.1.3 connector, which indicates which infomodel versions are supported for incoming messages. E.g. setting it to 4.*.*

The inbound model versions of both DSCs should support the outbound model versions of the other one. Just change the config.json accordingly and it will work again.

sorry, you were faster than I, hope people find my ticket as fast as you and follow my suggestion.

It's nice to see that people appreciate our support by creating cheeky issues. Drinking enough water is supposed to help against a headache :)


How to import that ?

how could I import that ?
I didn't understand this -
import textMask, {conformToMask} from 'where-you-import-text-mask-from'

could you specify to me ?
thanks

Depends on the version of text-mask you want?
e.g.
import { TextMaskModule } from 'angular2-text-mask';
or
import { MaskedInput } from 'react-text-mask';

I'm gonna close this issue now.. I'm assuming you managed to import it ok.. if not feel free to re-open this issue


Can't write above current viewport

observatory can't edit lines that are outside the viewport. it uses  require('ansi-escapes').cursorUp(20), which doesn't go above whatever's currently visible. instead, consider using process.stdout.moveCursor(0, -20).
Notice in this screencast below that the first line keeps on changing. Also, when I scroll up after its done, the items that should be green are left not-green.

aw damn, .moveCursor suffers the same problem. Unless there's another workaround, I don't think this can be fixed.

I believe this is a limitation of the terminal technology, which I feel like was once printed right to paper before it was common for computers to have screens.
Alternate solution:
I've thought about having npm-check a browser window for better feedback and interactions and interactions not possible in the terminal, such as hovering over a node module's name to learn more about it. The client would use something like koa or express and there's a node module for opening a page in the default browser. The idea is inspired by this project: https://github.com/shurcooL/Go-Package-Store


[StarWars FFG] Need update for new specializations

Hello I use the character sheet "Star Wars FFG API-Compatible" on roll20 but it lacks a lot of specializations.
It will be really great if you can make a update.
Thanks

It appears that this was fixed by #5882. If there are any residual issues, please consider creating another issue.


Put each OAI schedules into menu

JIRA issue created by: pkiraly
Originally opened: 2012-03-23 10:03 AM
Issue body:
(nt)
This issue has an attachment associated with it (external link): 1093-schedules-in-menu.png

JIRA Comment by user: pkiraly
JIRA Timestamp: 2012-03-23 01:04 PM
Comment body:
see 1092

Issue resolved: 2012-03-23 01:06 PM


Side bar options are limited

When trying to update a pinned svn folder I cannot do it from the sidebar. Please add the same options to sidebar folders.

@jacobc94 Are you looking to add an option to rename folders from the sidebar?

I think he's asking to show the full context menu for sidebar items

Merging with #1895.