text:
Starting and stopping playback takes very long time to start

Describe the bug
After selecting the SONOS Play 1 box in Apple Music and starting the playback it takes between 15-20 seconds until the music starts or stops.
To Reproduce

Select SONOS player in the Apple Music App
Play music

Expected behavior
The playback should start or stop at least 2-5 seconds later
Hardware
Device on which you are running AirConnect-Synology):

Synology NAS or Router model name: DS716+II
DSM Version: DSM 7.1.1-42962 Update 6

Package
Which package from the releases page have you downloaded):

package name: AirConnect-dsm7-x86_64-1.1.7-20230815.spk

Thank you for the good work!

Hi @tariktokic
Thanks for filling out the issue template.
I could replicate your problem with your given information in the latest version playing any song from Apple Music to my Sonos Play:1.
This could be related to a problem with the latency config for airupnp. This could be tested using the command line arguments or the config file: https://github.com/eizedev/AirConnect-Synology#configuration
I will also check this in the next days.

Hi @tariktokic I have release the latest version of AirConnect in the Release. On my synology models, the problem still exists in the latest version.
I still have 2-3 ideas that I want to test (f.e. Change from flac to mp3), otherwise I'll open an issue with the AirConnect developer about it.
The problem can also be related to a Sonos Update, which Sonos Version are you running? 15.8?

Same issue here. The Sonos Version is 15.9.

Hi @eizedev
I've got the same (or related) issue for years actually.
Playback delay is ~10 sec, but stopping and volume control are immediate!
DS218+ with DSM 7.1.1-42962 Update 6
AirConnect version 1.1.7-20230815
Sonos iOS App v. 15.9
Sonos OS S2 v. 15.9 (Build 75146030)
I already touched the AIRUPNP_LATENCY="250:500" in the *conf with no effect -- I think it's not even being read, see log file below. Btw /volume1/airconnect/airconnect.conf exists but /volume1/airconnect/config.xml does not! The last time I got this line
2023-09-20T06:31:36+02:00 weg18 [10:59:55] Setting AIRUPNP_LATENCY="1000:2000" n "/volume1/@appstore/AirConnect/airconnect.conf"

was one month ago. Perhaps as a consequence of editing the *conf file?
In any case, the symptoms (~10 sec playback delay) are the same for years.
I will reinstall and reset the folders soon. Btw it's ok that the 1-year-old .log file is size 11G?
Log text since airconnect starts:
2023-10-30T13:43:01+01:00 weg18 [13:43:01] Starting AirConnect ...
2023-10-30T13:43:01+01:00 weg18 [13:43:01] Linking airconnect configuration to "/volume1/airconnect/airconnect.conf".
2023-10-30T13:43:01+01:00 weg18 [13:43:01] Linking airupnp configuration to "/volume1/airconnect/config.xml".
2023-10-30T13:43:01+01:00 weg18 [13:43:01] Starting airupnp on 192.168.178.100:49154
2023-10-30T13:43:01+01:00 weg18 [13:43:01.298205] main:1367 Starting airupnp version: v1.1.7 (May 20 2023 @ 06:12:02)
2023-10-30T13:43:01+01:00 weg18 [13:43:01.298311] main:1374 no config file, using defaults
2023-10-30T13:43:01+01:00 weg18 [13:43:01.300472] Start:1086 Binding to iface eth0@192.168.178.100:49154
2023-10-30T13:43:01+01:00 weg18 [13:43:01.303340] bind_socket:636 socket binding 7 on port 32811
2023-10-30T13:43:01+01:00 weg18 [13:43:01.303434] Start:1125 Starting pico HTTP server on port 32811
2023-10-30T13:43:01+01:00 weg18 [13:43:01] AirConnect successfully started on ip "192.168.178.100"!
2023-10-30T13:43:02+01:00 weg18 [13:43:01.654697] AddMRDevice:1012 [0x7f04a0dd5010]: adding renderer (Esszimmer) with mac BBBB38355637
2023-10-30T13:43:02+01:00 weg18 [13:43:01.654862] bind_socket:636 socket binding 12 on port 59489
2023-10-30T13:43:02+01:00 weg18 [13:43:01.685180] MasterHandler:643 [0x7f04a0dd5010]: subscribe success
2023-10-30T13:43:02+01:00 weg18 [13:43:01.738348] ProcessEvent:448 [0x7f04a0dd5010]: UPnP Volume local change 34:34 (master)
2023-10-30T13:43:14+01:00 weg18 [13:43:13.557269] rtsp_thread:338 got RTSP connection 13
2023-10-30T13:43:14+01:00 weg18 [13:43:13.623229] handle_rtsp:385 [0x7f048800bae0]: challenge sM847wRrISh1l+VW/8jIdQ==
2023-10-30T13:43:14+01:00 weg18 [13:43:13.633093] handle_rtsp:379 [0x7f048800bae0]: received ANNOUNCE
2023-10-30T13:43:14+01:00 weg18 [13:43:13.639056] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:14+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:14+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:14+01:00 weg18 CSeq: 4
2023-10-30T13:43:14+01:00 weg18 [13:43:13.644046] handle_rtsp:379 [0x7f048800bae0]: received SETUP
2023-10-30T13:43:14+01:00 weg18 [13:43:13.645435] bind_socket:636 socket binding 15 on port 57494
2023-10-30T13:43:14+01:00 weg18 [13:43:13.645512] raopst_init:378 [0x7f0474006d60]: UDP port-0 57494
2023-10-30T13:43:14+01:00 weg18 [13:43:13.645537] bind_socket:636 socket binding 16 on port 40928
2023-10-30T13:43:14+01:00 weg18 [13:43:13.645554] raopst_init:378 [0x7f0474006d60]: UDP port-1 40928
2023-10-30T13:43:14+01:00 weg18 [13:43:13.645575] bind_socket:636 socket binding 17 on port 51728
2023-10-30T13:43:14+01:00 weg18 [13:43:13.645591] raopst_init:378 [0x7f0474006d60]: UDP port-2 51728
2023-10-30T13:43:14+01:00 weg18 [13:43:13.645617] bind_socket:636 socket binding 18 on port 59244
2023-10-30T13:43:14+01:00 weg18 [13:43:13.645639] raopst_init:396 [0x7f0474006d60]: HTTP listening port 59244
2023-10-30T13:43:14+01:00 weg18 [13:43:13.645819] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:14+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:14+01:00 weg18 Transport: RTP/AVP/UDP;unicast;mode=record;control_port=40928;timing_port=51728;server_port=57494
2023-10-30T13:43:14+01:00 weg18 Session: DEADBEEF
2023-10-30T13:43:14+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:14+01:00 weg18 CSeq: 5
2023-10-30T13:43:14+01:00 weg18 [13:43:13.653370] handle_rtsp:379 [0x7f048800bae0]: received RECORD
2023-10-30T13:43:14+01:00 weg18 [13:43:13.653410] raopst_record:502 [0x7f0474006d60]: record 0 0
2023-10-30T13:43:14+01:00 weg18 [13:43:13.653427] HandleRAOP:291 [0x7f04a0dd5010]: Stream
2023-10-30T13:43:14+01:00 weg18 [13:43:13.653462] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:14+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:14+01:00 weg18 Audio-Latency: 11025
2023-10-30T13:43:14+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:14+01:00 weg18 CSeq: 6
2023-10-30T13:43:14+01:00 weg18 [13:43:13.658258] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:14+01:00 weg18 [13:43:13.658286] handle_rtsp:546 [0x7f048800bae0]: SET PARAMETER volume -20.000000
2023-10-30T13:43:14+01:00 weg18 [13:43:13.658311] CtrlSetVolume:232 [0x7f04a0dd5010]: uPNP volume 33 (cookie (nil))
2023-10-30T13:43:14+01:00 weg18 [13:43:13.658515] HandleRAOP:368 [0x7f04a0dd5010]: Volume[0..100] 33:34
2023-10-30T13:43:14+01:00 weg18 [13:43:13.658549] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:14+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:14+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:14+01:00 weg18 CSeq: 7
2023-10-30T13:43:14+01:00 weg18 [13:43:13.665759] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:14+01:00 weg18 [13:43:13.665783] handle_rtsp:546 [0x7f048800bae0]: SET PARAMETER volume -20.000000
2023-10-30T13:43:14+01:00 weg18 [13:43:13.665803] CtrlSetVolume:232 [0x7f04a0dd5010]: uPNP volume 34 (cookie 0x1)
2023-10-30T13:43:14+01:00 weg18 [13:43:13.666007] HandleRAOP:368 [0x7f04a0dd5010]: Volume[0..100] 33:33
2023-10-30T13:43:14+01:00 weg18 [13:43:13.666045] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:14+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:14+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:14+01:00 weg18 CSeq: 8
2023-10-30T13:43:14+01:00 weg18 [13:43:13.690219] flac_init:195 [0x7f0474006d60]: Using FLAC-0 (0x7f0468000b20)
2023-10-30T13:43:14+01:00 weg18 [13:43:13.690344] buffer_put_packet:620 [0x7f0474006d60]: fill [level:1] [W:12164 R:12164]
2023-10-30T13:43:14+01:00 weg18 [13:43:13.691344] handle_rtsp:379 [0x7f048800bae0]: received FLUSH
2023-10-30T13:43:14+01:00 weg18 [13:43:13.691408] raopst_flush:470 [0x7f0474006d60]: FLUSH ignored as same as RECORD (12164 - 1995369444)
2023-10-30T13:43:14+01:00 weg18 [13:43:13.691424] raopst_flush:486 [0x7f0474006d60]: flush 12164 1995369444
2023-10-30T13:43:14+01:00 weg18 [13:43:13.691459] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:14+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:14+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:14+01:00 weg18 CSeq: 9
2023-10-30T13:43:15+01:00 weg18 [13:43:14.466980] search_remote_cb:636 [0x7f048800bae0]: found ActiveRemote for B4916A78DA32BC30 at 192.168.178.163:62504
2023-10-30T13:43:16+01:00 weg18 [13:43:15.701657] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:16+01:00 weg18 [13:43:15.701824] http_pico_add_source:747 source /0.jpg added
2023-10-30T13:43:16+01:00 weg18 [13:43:15.701843] handle_rtsp:573 [0x7f048800bae0]: received JPEG image of 96926 bytes
2023-10-30T13:43:16+01:00 weg18 [13:43:15.701881] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:16+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:16+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:16+01:00 weg18 CSeq: 10
2023-10-30T13:43:16+01:00 weg18 [13:43:15.712441] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:16+01:00 weg18 [13:43:15.712478] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:16+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:16+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:16+01:00 weg18 CSeq: 12
2023-10-30T13:43:16+01:00 weg18 [13:43:15.717042] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:16+01:00 weg18 [13:43:15.717077] handle_rtsp:564 [0x7f048800bae0]: received metadata
2023-10-30T13:43:16+01:00 weg18 	artist: DJ Snake & J Balvin
2023-10-30T13:43:16+01:00 weg18 	album:  Loco Contigo (feat. Tyga) - Single
2023-10-30T13:43:16+01:00 weg18 	title:  Loco Contigo (feat. Tyga)
2023-10-30T13:43:16+01:00 weg18 [13:43:15.717103] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:16+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:16+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:16+01:00 weg18 CSeq: 13
2023-10-30T13:43:17+01:00 weg18 [13:43:16.500913] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:17+01:00 weg18 [13:43:16.500983] handle_rtsp:564 [0x7f048800bae0]: received metadata
2023-10-30T13:43:17+01:00 weg18 	artist: DJ Snake & J Balvin
2023-10-30T13:43:17+01:00 weg18 	album:  Loco Contigo (feat. Tyga) - Single
2023-10-30T13:43:17+01:00 weg18 	title:  Loco Contigo (feat. Tyga)
2023-10-30T13:43:17+01:00 weg18 [13:43:16.501027] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:17+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:17+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:17+01:00 weg18 CSeq: 14
2023-10-30T13:43:17+01:00 weg18 [13:43:16.507146] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:17+01:00 weg18 [13:43:16.507179] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:17+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:17+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:17+01:00 weg18 CSeq: 15
2023-10-30T13:43:17+01:00 weg18 [13:43:16.596238] AVTSetURI:78 [0x7f04a0dd5010]: uPNP setURI http://192.168.178.100:59244/stream-0.flc (cookie 0x2)
2023-10-30T13:43:17+01:00 weg18 [13:43:16.596483] AVTPlay:138 [0x7f04a0dd5010]: uPNP play (cookie 0x3)
2023-10-30T13:43:17+01:00 weg18 [13:43:16.678119] http_thread_func:1060 [0x7f0474006d60]: got HTTP connection 19 (silent frames 0)
2023-10-30T13:43:17+01:00 weg18 [13:43:16.688549] handle_http:1236 [0x7f0474006d60]: received GET HTTP/1.1
2023-10-30T13:43:17+01:00 weg18 CONNECTION: close
2023-10-30T13:43:17+01:00 weg18 Host: 192.168.178.100:59244
2023-10-30T13:43:17+01:00 weg18 ACCEPT: */*
2023-10-30T13:43:17+01:00 weg18 USER-AGENT: Linux UPnP/1.0 Sonos/75.1-46030 (ZPS1)
2023-10-30T13:43:17+01:00 weg18 X-Sonos-SWGen: 2
2023-10-30T13:43:17+01:00 weg18 X-Sonos-Firmware: 75.1-46030
2023-10-30T13:43:17+01:00 weg18 X-Sonos-Muse-Api: 1.36.0
2023-10-30T13:43:17+01:00 weg18 X-Sonos-Id-Hash: FFBkYHzoAAAufz3EUU8owJt7QtS8GtrnVLkDPzbaA1I=
2023-10-30T13:43:17+01:00 weg18 [13:43:16.688584] handle_http:1281 [0x7f0474006d60]: responding: HTTP/1.0 200 OK
2023-10-30T13:43:17+01:00 weg18 Server: HairTunes
2023-10-30T13:43:17+01:00 weg18 Content-Type: audio/flac
2023-10-30T13:43:17+01:00 weg18 Connection: close
2023-10-30T13:43:17+01:00 weg18 [13:43:16.688603] _buffer_get_frame:959 [0x7f0474006d60]: drain [level:374 gap:-2731] [W:12538 R:12164] [R:0 S:0 F:0]
2023-10-30T13:43:18+01:00 weg18 [13:43:17.591531] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:18+01:00 weg18 [13:43:17.591713] handle_rtsp:564 [0x7f048800bae0]: received metadata
2023-10-30T13:43:18+01:00 weg18 	artist: DJ Snake & J Balvin
2023-10-30T13:43:18+01:00 weg18 	album:  Loco Contigo (feat. Tyga) - Single
2023-10-30T13:43:18+01:00 weg18 	title:  Loco Contigo (feat. Tyga)
2023-10-30T13:43:18+01:00 weg18 [13:43:17.591752] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:18+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:18+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:18+01:00 weg18 CSeq: 16
2023-10-30T13:43:18+01:00 weg18 [13:43:17.598289] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:18+01:00 weg18 [13:43:17.598324] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:18+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:18+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:18+01:00 weg18 CSeq: 17
2023-10-30T13:43:18+01:00 weg18 [13:43:17.776929] buffer_put_packet:620 [0x7f0474006d60]: fill [level:1] [W:12676 R:12676]
2023-10-30T13:43:18+01:00 weg18 [13:43:17.786148] _buffer_get_frame:959 [0x7f0474006d60]: drain [level:1 gap:257] [W:12677 R:12676] [R:0 S:0 F:0]
2023-10-30T13:43:22+01:00 weg18 [13:43:21.682664] ActionHandler:511 [0x7f04a0dd5010]: uPNP transition
2023-10-30T13:43:22+01:00 weg18 [13:43:21.863858] buffer_put_packet:620 [0x7f0474006d60]: fill [level:1] [W:13188 R:13188]
2023-10-30T13:43:22+01:00 weg18 [13:43:21.868398] _buffer_get_frame:959 [0x7f0474006d60]: drain [level:1 gap:261] [W:13189 R:13188] [R:0 S:0 F:0]
2023-10-30T13:43:26+01:00 weg18 [13:43:25.951630] buffer_put_packet:620 [0x7f0474006d60]: fill [level:1] [W:13700 R:13700]
2023-10-30T13:43:26+01:00 weg18 [13:43:25.965871] _buffer_get_frame:959 [0x7f0474006d60]: drain [level:1 gap:253] [W:13701 R:13700] [R:0 S:0 F:0]
2023-10-30T13:43:29+01:00 weg18 [13:43:28.430197] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:29+01:00 weg18 [13:43:28.430264] handle_rtsp:564 [0x7f048800bae0]: received metadata
2023-10-30T13:43:29+01:00 weg18 	artist: DJ Snake & J Balvin
2023-10-30T13:43:29+01:00 weg18 	album:  Loco Contigo (feat. Tyga) - Single
2023-10-30T13:43:29+01:00 weg18 	title:  Loco Contigo (feat. Tyga)
2023-10-30T13:43:29+01:00 weg18 [13:43:28.430314] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:29+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:29+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:29+01:00 weg18 CSeq: 24
2023-10-30T13:43:29+01:00 weg18 [13:43:28.440266] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:29+01:00 weg18 [13:43:28.440299] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:29+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:29+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:29+01:00 weg18 CSeq: 25
2023-10-30T13:43:29+01:00 weg18 [13:43:28.578605] http_thread_func:1196 [0x7f0474006d60]: spent 2081 ms in send for 2677 bytes (sent 2677)!
2023-10-30T13:43:29+01:00 weg18 [13:43:28.694858] http_thread_func:1196 [0x7f0474006d60]: spent 113 ms in send for 2472 bytes (sent 2472)!
2023-10-30T13:43:29+01:00 weg18 [13:43:28.743557] ActionHandler:520 [0x7f04a0dd5010]: uPNP playing
2023-10-30T13:43:30+01:00 weg18 [13:43:30.037521] buffer_put_packet:620 [0x7f0474006d60]: fill [level:1] [W:14212 R:14212]
2023-10-30T13:43:30+01:00 weg18 [13:43:30.047794] _buffer_get_frame:959 [0x7f0474006d60]: drain [level:1 gap:256] [W:14213 R:14212] [R:0 S:0 F:0]
2023-10-30T13:43:34+01:00 weg18 [13:43:34.124296] buffer_put_packet:620 [0x7f0474006d60]: fill [level:1] [W:14724 R:14724]
2023-10-30T13:43:34+01:00 weg18 [13:43:34.132217] _buffer_get_frame:959 [0x7f0474006d60]: drain [level:1 gap:258] [W:14725 R:14724] [R:0 S:0 F:0]
2023-10-30T13:43:38+01:00 weg18 [13:43:38.210970] buffer_put_packet:620 [0x7f0474006d60]: fill [level:1] [W:15236 R:15236]
2023-10-30T13:43:38+01:00 weg18 [13:43:38.214029] _buffer_get_frame:959 [0x7f0474006d60]: drain [level:1 gap:243] [W:15237 R:15236] [R:0 S:0 F:0]
2023-10-30T13:43:39+01:00 weg18 [13:43:39.010712] handle_rtsp:379 [0x7f048800bae0]: received FLUSH
2023-10-30T13:43:39+01:00 weg18 [13:43:39.010815] raopst_flush:486 [0x7f0474006d60]: flush 15334 1996491116
2023-10-30T13:43:39+01:00 weg18 [13:43:39.010834] HandleRAOP:305 [0x7f04a0dd5010]: Flush
2023-10-30T13:43:39+01:00 weg18 [13:43:39.010851] AVTStop:204 [0x7f04a0dd5010]: uPNP stop (cookie 0x22)
2023-10-30T13:43:39+01:00 weg18 [13:43:39.010956] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:39+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:39+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:39+01:00 weg18 CSeq: 31
2023-10-30T13:43:39+01:00 weg18 [13:43:39.011085] rtp_thread_func:738 [0x7f0474006d60]: 1st sync packet received
2023-10-30T13:43:39+01:00 weg18 [13:43:39.024643] flac_init:195 [0x7f0474006d60]: Using FLAC-0 (0x7f0468004fa0)
2023-10-30T13:43:39+01:00 weg18 [13:43:39.026660] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:39+01:00 weg18 [13:43:39.026780] http_pico_add_source:747 source /d7445e5a.jpg added
2023-10-30T13:43:39+01:00 weg18 [13:43:39.026799] handle_rtsp:573 [0x7f048800bae0]: received JPEG image of 96926 bytes
2023-10-30T13:43:39+01:00 weg18 [13:43:39.026832] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:39+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:39+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:39+01:00 weg18 CSeq: 32
2023-10-30T13:43:39+01:00 weg18 [13:43:39.032090] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:39+01:00 weg18 [13:43:39.032131] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:39+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:39+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:39+01:00 weg18 CSeq: 33
2023-10-30T13:43:39+01:00 weg18 [13:43:39.036641] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:39+01:00 weg18 [13:43:39.036668] handle_rtsp:564 [0x7f048800bae0]: received metadata
2023-10-30T13:43:39+01:00 weg18 	artist: DJ Snake & J Balvin
2023-10-30T13:43:39+01:00 weg18 	album:  Loco Contigo (feat. Tyga) - Single
2023-10-30T13:43:39+01:00 weg18 	title:  Loco Contigo (feat. Tyga)
2023-10-30T13:43:39+01:00 weg18 [13:43:39.036707] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:39+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:39+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:39+01:00 weg18 CSeq: 34
2023-10-30T13:43:39+01:00 weg18 [13:43:39.038516] http_read_line:1027 fd: 19 read error: Connection reset by peer
2023-10-30T13:43:39+01:00 weg18 [13:43:39.038535] http_parse_simple:950 cannot read method
2023-10-30T13:43:39+01:00 weg18 [13:43:39.038567] http_thread_func:1079 HTTP close 19
2023-10-30T13:43:39+01:00 weg18 [13:43:39.038599] http_thread_func:1060 [0x7f0474006d60]: got HTTP connection 19 (silent frames 59)
2023-10-30T13:43:39+01:00 weg18 [13:43:39.039302] handle_http:1236 [0x7f0474006d60]: received HEAD HTTP/1.1
2023-10-30T13:43:39+01:00 weg18 CONNECTION: close
2023-10-30T13:43:39+01:00 weg18 Host: 192.168.178.100:59244
2023-10-30T13:43:39+01:00 weg18 USER-AGENT: Linux UPnP/1.0 Sonos/75.1-46030 (ZPS1)
2023-10-30T13:43:39+01:00 weg18 X-Sonos-SWGen: 2
2023-10-30T13:43:39+01:00 weg18 X-Sonos-Firmware: 75.1-46030
2023-10-30T13:43:39+01:00 weg18 X-Sonos-Muse-Api: 1.36.0
2023-10-30T13:43:39+01:00 weg18 X-Sonos-Id-Hash: FFBkYHzoAAAufz3EUU8owJt7QtS8GtrnVLkDPzbaA1I=
2023-10-30T13:43:39+01:00 weg18 [13:43:39.039334] handle_http:1281 [0x7f0474006d60]: responding: HTTP/1.0 200 OK
2023-10-30T13:43:39+01:00 weg18 Server: HairTunes
2023-10-30T13:43:39+01:00 weg18 Content-Type: audio/flac
2023-10-30T13:43:39+01:00 weg18 Connection: close
2023-10-30T13:43:39+01:00 weg18 [13:43:39.039361] http_thread_func:1079 HTTP close 19
2023-10-30T13:43:39+01:00 weg18 [13:43:39.046996] handle_rtsp:379 [0x7f048800bae0]: received SET_PARAMETER
2023-10-30T13:43:39+01:00 weg18 [13:43:39.047020] handle_rtsp:564 [0x7f048800bae0]: received metadata
2023-10-30T13:43:39+01:00 weg18 	artist: DJ Snake & J Balvin
2023-10-30T13:43:39+01:00 weg18 	album:  Loco Contigo (feat. Tyga) - Single
2023-10-30T13:43:39+01:00 weg18 	title:  Loco Contigo (feat. Tyga)
2023-10-30T13:43:39+01:00 weg18 [13:43:39.047046] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:39+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:39+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:39+01:00 weg18 CSeq: 35
2023-10-30T13:43:39+01:00 weg18 [13:43:39.196235] ActionHandler:516 [0x7f04a0dd5010]: uPNP stopped
2023-10-30T13:43:42+01:00 weg18 [13:43:42.297233] buffer_put_packet:620 [0x7f0474006d60]: fill [level:413] [W:15748 R:15336]
2023-10-30T13:43:46+01:00 weg18 [13:43:46.142405] handle_rtsp:379 [0x7f048800bae0]: received TEARDOWN
2023-10-30T13:43:46+01:00 weg18 [13:43:46.142475] HandleRAOP:296 [0x7f04a0dd5010]: Stop
2023-10-30T13:43:46+01:00 weg18 [13:43:46.148895] http_thread_func:1217 [0x7f0474006d60]: terminating
2023-10-30T13:43:46+01:00 weg18 [13:43:46.191418] rtp_thread_func:827 [0x7f0474006d60]: terminating
2023-10-30T13:43:46+01:00 weg18 [13:43:46.192143] handle_rtsp:592 [0x7f048800bae0]: responding:
2023-10-30T13:43:46+01:00 weg18 RTSP/1.0 200 OK
2023-10-30T13:43:46+01:00 weg18 Audio-Jack-Status: connected; type=analog
2023-10-30T13:43:46+01:00 weg18 CSeq: 40
2023-10-30T13:43:46+01:00 weg18 [13:43:46.205513] http_read_line:1032 disconnected on the other end 13
2023-10-30T13:43:46+01:00 weg18 [13:43:46.205545] rtsp_thread:353 RTSP close 13

Thank you!!

Thank you for your feedback. Next weekend I'll find some time to take a closer look, at the moment I'm quite busy in my spare time.

same issue

We are expecting our child in the next 2-3 weeks, so unfortunately I don't have the time at the moment, even if I had planned to :-).
Sorry it's taking so long.
Maybe it will work for me in the next few days.
I'm pretty sure it's not the Synology package, we'll have to ask philippe44 if he has any ideas.

We are expecting our child in the next 2-3 weeks

Congratulations and our best wishes!

i have released a new version (PRE-release) with latest AirConnect binaries and a lot of fixes for airupnp. Could someone please test it? https://github.com/eizedev/AirConnect-Synology/releases/tag/1.6.3-20240114
Thanks!
@5trobl
Thank you for your feedback. I'll have a look at the log file size issue. The log file should actually be deleted when updating to a new package if it has more than 50MB. This is probably a logic error in my code . I will also look into the problem with the config file not being recognized. If you have time, please check whether uninstalling the package and then reinstalling it might solve the problem. All directories and files should be deleted and overwritten with the latest ones from the newest package that you install.

Hi!
Welcome back and happy new year! Thank you for this new beta. I just tested it on my DS220+: the start still takes ~15s, the stop is instantaneous.

Thanks! I wish you a happy new year too!
Thanks for the feedback. Another try, could you please test the new pre-release 1.7.0? There is a fix applied for starting airupnp: https://github.com/eizedev/AirConnect-Synology/releases/tag/1.7.0-20240115
I cannot test it at the moment, could you please upload the log during playback if it is still not working?
Then there's not much left for us to test and I open an issue for us together in the AirConnect repository.
Thanks!

hello René.
i tested the new version but it is the same.
please find attached the log file.
Laurent
airconnect.log

Hi all, Hi @Gandulf78
We are a few steps further and the developer has released a new version for testing (not yet official) which I have packaged for you here. Can you please test it and give me some feedback? Or even better, post it directly in this issue (with logs if you can). It should work better, but I can't reproduce it on my end.
Thanks!
(Not all packages can be found in this zip, get back to me if you miss the right version)
AirConnect-Synology-1.8.1.zip

Hi all, Hi @Gandulf78
We are a few steps further and the developer has released a new version for testing (not yet official) which I have packaged for you here. Can you please test it and give me some feedback? Or even better, post it directly in this issue (with logs if you can). It should work better, but I can't reproduce it on my end.
Thanks!
(Not all packages can be found in this zip, get back to me if you miss the right version)
AirConnect-Synology-1.8.1.zip

Hi~
I just tested the version 1.8.1 on DS218+, but sorry it's same behavior, starting about takes 15s, stoping is immediate.
Uploading airconnect (2).log…

ok, thanks! that is exactly the same behavior than on my NAS

I've done some verification with my own system
2024-01-19T23:09:44+08:00 xanadu [23:09:44.391] rtp_thread_func:746 [0x7f4604006c70]: 1st NTP packet received
2024-01-19T23:09:44+08:00 xanadu [23:09:44.393] handle_rtsp:374 [0x7f4618003770]: received RECORD
2024-01-19T23:09:44+08:00 xanadu [23:09:44.393] raopst_record:371 [0x7f4604006c70]: record 0 - 0
... request to play received
2024-01-19T23:09:44+08:00 xanadu [23:09:44.428] handle_rtsp:374 [0x7f4618003770]: received FLUSH
2024-01-19T23:09:44+08:00 xanadu [23:09:44.428] raopst_flush:356 [0x7f4604006c70]: FLUSH packets below 53813 - 1236848519
... cleanup order received
2024-01-19T23:09:44+08:00 xanadu [23:09:44.431] buffer_put_packet:446 [0x7f4604006c70]: 1st accepted packet:53813, now playing
2024-01-19T23:09:44+08:00 xanadu [23:09:44.750] AVTSetURI:69 [0x7f463141d010]: uPNP setURI http://10.8.8.8:37487/stream-0.flac (cookie 0x2)
2024-01-19T23:09:44+08:00 xanadu [23:09:44.750] AVTPlay:123 [0x7f463141d010]: uPNP play (cookie 0x3)
... play order given
2024-01-19T23:09:45+08:00 xanadu [23:09:44.785] handle_http:1097 [0x7f4604006c70]: received GET HTTP/1.1
... Sonos requests the audio file
2024-01-19T23:09:45+08:00 xanadu [23:09:44.785] handle_http:1142 [0x7f4604006c70]: responding: HTTP/1.0 200 OK
2024-01-19T23:09:45+08:00 xanadu [23:09:44.785] http_thread_func:979 [0x7f4604006c70]: sending 242 silence frames
2024-01-19T23:09:45+08:00 xanadu [23:09:44.913] buffer_put_packet:531 [0x7f4604006c70]: fill [level:26] [W:53876 R:53851]
...
2024-01-19T23:09:46+08:00 xanadu [23:09:46.354] rtp_thread_func:652 [0x7f4604006c70]: 1st RTP packet received
... now fully operational 2s after AirPlay request, here data is sent over HTTP to SOnos
2024-01-19T23:09:46+08:00 xanadu [23:09:46.362] _buffer_get_frame:908 [0x7f4604006c70]: drain [level:205 gap:-615] [W:54056 R:53851] [R:0 S:0 F:0]
2024-01-19T23:09:46+08:00 xanadu [23:09:46.365] _buffer_get_frame:908 [0x7f4604006c70]: drain [level:142 gap:-115] [W:54056 R:53914] [R:0 S:0 F:0]
2024-01-19T23:09:46+08:00 xanadu [23:09:46.367] _buffer_get_frame:908 [0x7f4604006c70]: drain [level:78 gap:393] [W:54056 R:53978] [R:0 S:0 F:0]
2024-01-19T23:09:49+08:00 xanadu [23:09:49.173] ActionHandler:505 [0x7f463141d010]: uPNP transition
... finally the Sonos is showing sign of life (3s after receiving 1st data packet)
2024-01-19T23:09:57+08:00 xanadu [23:09:56.933] ActionHandler:514 [0x7f463141d010]: uPNP playing
... and it waits 7.5s to start to actually play, so a total of 12s

==> Here is what happens on my system with a PLAY:3 that is still on S1 (never moved to S2) and using iTunes

[22:40:15.897] rtp_thread_func:746 [04F3B998]: 1st NTP packet received
[22:40:15.898] handle_rtsp:374 [015396E0]: received RECORD
[22:40:15.898] raopst_record:371 [04F3B998]: record 42456 - 703906597
[22:40:15.899] rtp_thread_func:652 [04F3B998]: 1st RTP packet received
[22:40:15.899] rtp_thread_func:658 [04F3B998]: 1st sync packet received
[22:40:15.899] rtp_thread_func:628 [04F3B998]: 1st audio packet received 42456
[22:40:15.899] buffer_put_packet:446 [04F3B998]: 1st accepted packet:42456, now playing
[22:40:15.900] buffer_put_packet:531 [04F3B998]: fill [level:1] [W:42456 R:42456]
[22:40:15.900] HandleRAOP:320 [015718C8]: uPNP setURI http://192.168.2.10:64146/stream-0.flac (cookie 00000001)
[22:40:15.900] AVTSetURI:69 [015718C8]: uPNP setURI http://192.168.2.10:64146/stream-0.flac (cookie 00000001)
[22:40:15.900] AVTPlay:123 [015718C8]: uPNP play (cookie 00000002)
[22:40:16.276] http_thread_func:956 [04F3B998]: got HTTP connection 1404
[22:40:16.291] handle_http:1097 [04F3B998]: received GET HTTP/1.1
[22:40:16.291] handle_http:1142 [04F3B998]: responding: HTTP/1.0 200 OK
[22:40:16.291] http_thread_func:979 [04F3B998]: sending 200 silence frames
[22:40:16.294] _buffer_get_frame:910 [04F3B998]: drain [level:50 gap:604] [W:42506 R:42456] [R:0 S:0 F:0]
[22:40:19.021] ActionHandler:514 [015718C8]: uPNP playing

In total 4s between beginning and playing

==> And same with iPhone iOS 17.x

[22:47:25.640] rtp_thread_func:746 [01FF8050]: 1st NTP packet received
[22:47:25.640] handle_rtsp:374 [01469968]: received RECORD
[22:47:25.640] raopst_record:371 [01FF8050]: record 0 - 0
[22:47:25.645] rtp_thread_func:652 [01FF8050]: 1st RTP packet received
[22:47:25.645] rtp_thread_func:658 [01FF8050]: 1st sync packet received
[22:47:25.672] buffer_put_packet:449 [01FF8050]: 1st accepted packet:40956, waiting for FLUSH
[22:47:25.672] buffer_put_packet:531 [01FF8050]: fill [level:1] [W:40956 R:40956]
[22:47:25.674] handle_rtsp:374 [01469968]: received FLUSH
[22:47:25.674] raopst_flush:356 [01FF8050]: FLUSH packets below 40956 - 2814806524
[22:47:25.713] buffer_put_packet:461 [01FF8050]: done waiting for FLUSH with packet:40958, now playing starting:40956
[22:47:25.907] HandleRAOP:320 [014A5788]: uPNP setURI http://192.168.2.10:58222/stream-0.flac (cookie 00000000)
[22:47:25.907] AVTSetURI:69 [014A5788]: uPNP setURI http://192.168.2.10:58222/stream-0.flac (cookie 00000000)
[22:47:25.907] AVTPlay:123 [014A5788]: uPNP play (cookie 00000001)
[22:47:26.182] buffer_put_packet:531 [01FF8050]: fill [level:52] [W:41019 R:40968]
[22:47:26.518] http_thread_func:956 [01FF8050]: got HTTP connection 1368
[22:47:26.519] handle_http:1097 [01FF8050]: received GET HTTP/1.1
[22:47:26.519] handle_http:1142 [01FF8050]: responding: HTTP/1.0 200 OK
[22:47:26.519] http_thread_func:979 [01FF8050]: sending 155 silence frames
[22:47:26.520] _buffer_get_frame:910 [01FF8050]: drain [level:94 gap:254] [W:41062 R:40968] [R:0 S:0 F:0]
[22:47:26.521] _buffer_get_frame:910 [01FF8050]: drain [level:31 gap:755] [W:41062 R:41031] [R:0 S:0 F:0]
[22:47:28.684] ActionHandler:514 [014A5788]: uPNP playing

You can see there is 3 sec before command and playing

It seems to me that the issue is your version of Sonos buffering much more than mine

I just tested it on my DS220+. It is much better on start-up : 1-2 s to start!

Is -g 0 ot is -c wav what is making the difference?

will test it tomorrow

yes! It's work in my case, starting takes about 2s.

will test it tomorrow

Had Not much the last two days. Will test it in the next days

BTW, I don't recommend much using wav as they have a hard limit in term of playback duration which is not really compatible with AirPlay. It's 4GB (that I might have limited to 2GB, I'll have to verify that), so about 3 hours (or 6) of playback.

@philippe44 i've tested it today with all different parameters and settings. The best results I get with following parameters and settings:
./airupnp-linux-x86_64 -b 192.168.1.10:49159 -o "<NULL>,S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,ZP120,1.0,LibreWireless,Fitzwilliam,2.2.6,AllShare1.0" -d all=debug -g 0 -l 50:100
So -g 0 and -l 50:100 or 50:100:0 did the trick for me. Playback in my local network is now nearly instant to old Sonos Play:1 speakers.
Codec selection is not necessary, mp3 is ok. Flac will not work and there is no significant difference between wav and mp3. I did not test bitrate for mp3 or pcm.
i will build a new package for testing in the next minutes.

What do you mean by flax did not work? Did it work before? And this is the default codec if you don't specify any option

What do you mean by flax did not work? Did it work before? And this is the default codec if you don't specify any option

Hmmm, than i missed something. I only added -c flac. But without adding any codec and using default settings it works as described above

I will check but flac is the default for sure c, now I might have not allowed flc or flac on the command line

I corrected my README regarding flc vs flac as it was incorrect ("flac" should be used, not "flc"). But it does not change much in a sense that flac is the default codec and if the -c  is not recognized, the default value is used. The only difference is that the name of the file sent to the player still still be ".flc" if you set "-c flc".
So none of this seems to make sense (not what you are saying, of course I trust you see what you see, it's just I cannot make sense of it)

During the test, I briefly appended -c mp3 and -c flac to determine the differences. With -c mp3 I could not detect any difference compared to not specifying the parameter at all. With -c flac, it didn't play any sound for the next 30 seconds, but i also did not checked the log, and then didn't follow it any further.
Finally, I omitted the parameter again as usual and only added -g 0, which makes a significant difference. With -l 50:100 it got a little more better (in my environment)

Would you mind trying again with just -c flac to be sure? The 2nd latency parameter reduce lag for sure but at the expense of potential buffering issue in case of network hiccup

Would you mind trying again with just -c flac to be sure? The 2nd latency parameter reduce lag for sure but at the expense of potential buffering issue in case of network hiccup

ok -c flac is working as it should, I think I had mistyped anything yesterday during tests.
./airupnp-linux-x86_64 -b 192.168.1.10:49159 -o "<NULL>,S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,ZP120,1.0,LibreWireless,Fitzwilliam,2.2.6,AllShare1.0" -d all=debug -g 0 -l 50:500 -c flac
i have increased the http latency to 500 and playback now takes about 1 second, maximum 2 seconds to start. I think this is okay. @philippe44 Do you think 50:500 could be a good default setting? So the middle between fast start + stability? Instead of 1000:2000?

@5trobl In new testing version (below) the log file should be deleted if it exceeds a size of 50MB (a one shot backup until the next start will created airconnect.1.log if someone needs the old log for debugging).
I have also changed the way the config file will be generated/updated. During upgrade, if any parameter for airupnp/aircast is missing in the airconnect.conf it will be added. So the upgrade process should now be consistent if I add new parameters to the config file.
For Installation (Uninstall + New Install) the default config file with default settings will be used and must be changed later on, if needed.
so in general, your config file settings should be used in any way (I hope 👍🏼 ).
All others:
I have tuned the default parameters in this version to -l 50:500 and -g 0, that should reduce the playback time to 1-3 seconds. Please give me feedback :-).
if you get any errors during upgrade process (not uninstall and reinstall) please let me know. That is related to my change in the upgrade process. It works on my devices, at least ;-)
AirConnect-Synology-1.8.1.zip

Would you mind trying again with just -c flac to be sure? The 2nd latency parameter reduce lag for sure but at the expense of potential buffering issue in case of network hiccup

ok -c flac is working as it should, I think I had mistyped anything yesterday during tests.
./airupnp-linux-x86_64 -b 192.168.1.10:49159 -o "<NULL>,S1,S3,S5,S9,S12,ZP80,ZP90,S15,ZP100,ZP120,1.0,LibreWireless,Fitzwilliam,2.2.6,AllShare1.0" -d all=debug -g 0 -l 50:500 -c flac
i have increased the http latency to 500 and playback now takes about 1 second, maximum 2 seconds to start. I think this is okay. @philippe44 Do you think 50:500 could be a good default setting for delivering inside the Synology package for airupnp? So the middle between fast start + stability? Instead of 1000:2000? Users of a Synology device could also change the latency through the gui in a separate config file that I added. (should be easy to use for most users without the need for using ssh to their NAS)

There is no perfect solutio, it's just one to deal with network issues from the AirPlay to the bridge and the other is from the bridge to the UPnP device. So UPnP device do their own buffering and wait a lot to play, in which case :HTTP can be zero, some like Sonos don't so you have to add some because otherwise they'll miss data very frequently.

Hi.
I just tested it on my DS220+. Around 6s to start, 2s to stop.

Hi
I also just tested the new version on my DS220+ with a Sonos Play:1 and a Sonos Playbar.
For me it takes 5s to start playing and pausing is instant.

I have uploaded a new release for 1.8.3. https://github.com/eizedev/AirConnect-Synology/releases/tag/1.8.3-20240327
For me if i change config to (-l 50:500 -g 0)
"AIRUPNP_CONTENTLENGTH_MODE=0"
"AIRUPNP_LATENCY=50:500"

it is nearly instant, max. 2 seconds delay on playback.

Unfortunately the new package won’t start on my DS224+. Installation works flawless, but after running airconnect it immediately stops…
Thanks for your help!

Hi - So happy reading this. I'm using Sonos speaks and was having the 10-15 second delay when starting and resuming.
It's now working well for me using. Airconnect 1.8.3
airupnp.exe -l :50:500 -g 0

repo: eizedev/AirConnect-Synology


text:
关于sprite.ldraw中srt参数

缩放场景的时候，希望pinch的中点在缩放前后所处的屏幕位置不变(就像手机中看图片，或者coc里面缩放场景的感受)，所以先把pinch的中点平移到原点，缩放之后再移回来。但是由此得到的变换矩阵无法用srt描述，请指教。
http://stackoverflow.com/questions/25859069/using-pinchgesture-how-can-i-zoom-in-to-where-a-users-fingers-actually-pinch

做一点简单的运算就可以了. 你是想把一个 TST 变成一个 ST (这个里没有R)
就是把 (a+b)c+d 变成  (ac)+D. 用一点简单的代数知识就能搞定. (不就是 ac + bc + d 吗?)

3Q

source: gharchive/issue

authors: cloudwu czlc

license: mit

license_type: permissive

license_source: bigquery


text:
Please add AMP support

As indicated in this link: https://developers.google.com/search/docs/guides/create-URLs
We have to add entries for both canonical and AMP URLs.
It's a little similar to  androidLink support.
Just make those changes to sitemap.js:
...
+ this.ampLink = conf['ampLink'] || null;
...
-  var xml = '<url> {loc} {img} {lastmod} {changefreq} {priority} {links} {androidLink} {mobile} {news}</url>'
-    , props = ['loc', 'img', 'lastmod', 'changefreq', 'priority', 'links', 'androidLink', 'mobile', 'news']
+  var xml = '<url> {loc} {img} {lastmod} {changefreq} {priority} {links} {androidLink} {ampLink}  {mobile} {news}</url>'
+    , props = ['loc', 'img', 'lastmod', 'changefreq', 'priority', 'links', 'androidLink', 'ampLink', 'mobile', 'news']
...
+    } else if (this[p] && p == 'ampLink') {
+      xml = xml.replace('{' + p + '}', '<xhtml:link rel="amphtml" href="' + this[p] + '" />');
...

Thank you.

+1

Sweet! Thanks! Is there a schedule for when this will be in the NPM package or should I just ref the git repo in my package.json?

Is there a schedule for when this will be in the NPM package

Just published it — 1.9.0

Sweet! Thanks for publishing!

authors: ekalinin nuclearspike ram-you


text:
Wrong number of arguments for evaluate_interpolated_expression

When compute_interpolated_potential is called as shown in the workflow file, eveluate_interpolated_expression will throw an error since varargin is passed as a {1x2 cell}:

Error using comsolkit.ComsolModel/evaluate_interpolated_expression (line 392)
Wrong number of arguments
Error in comsolkit.GateLayoutModel/compute_interpolated_potential (line 127)
potential = evaluate_interpolated_expression(obj, ...
Error in dot_pot.OptGateLayout/get_model_potential (line 200)
potential = self.comsolModel.compute_interpolated_potential(xyz, length(y0), length(x0));

Fixed

repo: ekammerloher/comsolkit


text:
genotype quality with FreeBayes

Hi all, this is the first time that I am using FreeBayes. I have faced with a question, I would appreciate any help.
I have got a vcf file made by FreeBayes, genotype quality is missing. I want to filter out those below the cutoff value. Therefore I want to know how can I get (calculate) genotype quality from genotype likelihood?

You need to add a flag to the run. --genotype-qualities I believe.
On Thu, Mar 16, 2017, 8:49 PM Ana1335 notifications@github.com wrote:

Hi all, this is the first time that I am using FreeBayes. I have faced
with a question, I would appreciate any help.
I have got a vcf file made by FreeBayes, genotype quality is missing. I
want to filter out those below the cutoff value. Therefore I want to know
how can I get (calculate) genotype quality from genotype likelihood?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ekg/freebayes/issues/370, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAI4EaHDbwTrI8WiflJpimSy8JiHFTH_ks5rmZJfgaJpZM4Mfy4v
.

repo: ekg/freebayes


text:
1.14 compatibility

What's the status of 1.14 release compatibility?  The spigot page was last updated Jun 11, and doesn't say anything about 1.14, but several closed issues claim partial 1.14 compatibility.  Is there a tracking issue?

1.14 works fine. Spigot page updated.

authors: NathanWolf alexchandel

repo: elBukkit/MagicPlugin

license: MIT

license_source: github-api


text:
Doesn't work with NextJS 13

Versions
next-with-less: 2.0.5
less-loader: 11.1.0
less: 4.1.3 (dev dependency)
next: 13.0.0
antd: 4.23.6
next.config.js
const withLess = require('next-with-less');

module.exports = withLess({
  reactStrictMode: true,
  swcMinify: true,
  experimental: {
    appDir: true,
  }
});

Error Message

I'm importing the antd.less in my app/layout.tsx file

You can switch to this implementation: https://github.com/SolidZORO/next-plugin-antd-less.
For me Less is working for /app dir :)

Versions
next-with-less: 2.0.5 less-loader: 11.1.0 less: 4.1.3 (dev dependency) next: 13.0.0 antd: 4.23.6
next.config.js
const withLess = require('next-with-less');

module.exports = withLess({
  reactStrictMode: true,
  swcMinify: true,
  experimental: {
    appDir: true,
  }
});

Error Message

I'm importing the antd.less in my app/layout.tsx file

You can switch to this repo. Is working for me for /app dir :)
https://github.com/SolidZORO/next-plugin-antd-less

You can switch to this repo. Is working for me for /app dir :)
https://github.com/SolidZORO/next-plugin-antd-less

I kinda struggle on setting up the plugin with typescript:

Does anyone happen to have a working nextjs 13 (with app dir), typescript project on GitHub where I can take a look?

You can switch to this repo. Is working for me for /app dir :)
https://github.com/SolidZORO/next-plugin-antd-less

Unfortunately this one doesn't work with SWC, so again not really working for me with Next 13...

I don't know which commit fixed the issue but next-with-less is working in 13.1.1 now.

I don't know which commit fixed the issue but next-with-less is working in 13.1.1 now.

Although it is configured to use less in 13.1.1, the configuration of nextjs itself does not take effect.
Is there any recommended way to deal with it?

You can switch to this repo. Is working for me for /app dir :)
https://github.com/SolidZORO/next-plugin-antd-less

Unfortunately this one doesn't work with SWC, so again not really working for me with Next 13...

Do you find the solution for nextjs 13 with app fold and SWC?

Not working with app folder

I had trouble getting this plugin to work with the app folder as well, and ended up extending the webpack config in next.config.js to get LESS support:
  webpack: (config) => {
    config.module.rules.push({
      test: /\.module\.less$/,
      use: [
        {
          loader: require.resolve('style-loader'),
        },
        {
          loader: require.resolve('css-loader'),
          options: {
            sourceMap: true,
            modules: true,
          },
        },
        {
          loader: require.resolve('postcss-loader'),
          options: {
            postcssOptions: {
              sourceMap: true,
            },
          },
        },
        {
          loader: require.resolve('less-loader'),
          },
        },
      ],
    });

    return config;
  },

I edited the code to this and now it works for me. The code:
/**
 * @function withLess
 * @param {import('next').NextConfig} nextConfig
 * @returns {import('next').NextConfig}
 * */
function withLess(nextConfig) {
    return Object.assign({}, nextConfig, {
        /**
         * @function webpack
         * @type {import('next').NextConfig["webpack"]}
         * @param {import('webpack').Configuration} config
         * @returns {import('webpack').Configuration}
        * */
        webpack(config, opts) {
            // there are 2 relevant sass rules in next.js - css modules and global css
            let sassModuleRules = [];
            // global sass rule (does not exist in server builds)
            let sassGlobalRules = [];

            const cssRule = config.module.rules.find(({ oneOf }) => !!oneOf).oneOf

            const addLessToRuleTest = (test) => {
                if (Array.isArray(test)) {
                    return test.map((rx) => addLessToRegExp(rx));
                } else {
                    return addLessToRegExp(test);
                }
            };

            cssRule.forEach((rule, i) => {
                if (rule.use?.loader === 'error-loader') {
                    rule.test = addLessToRuleTest(rule.test);
                } else if (rule.use?.loader?.includes('file-loader')) {
                    rule.issuer = addLessToRuleTest(rule.issuer);
                } else if (rule.use?.includes?.('ignore-loader')) {
                    rule.test = addLessToRuleTest(rule.test);
                } else if (rule.test?.source === '\\.module\\.(scss|sass)$') {
                    sassModuleRules.push(rule);
                } else if (rule.test?.source === '(?<!\\.module)\\.(scss|sass)$') {
                    sassGlobalRules.push(rule);
                } else if (rule.issuer?.source === "\\.(css|scss|sass)$" && rule.type === 'asset/resource') {
                    rule.issuer = addLessToRuleTest(rule.issuer);
                } else if (rule.use?.loader?.includes('next-flight-css-loader')) {
                    rule.test = addLessToRuleTest(rule.test);
                }
            });

            const lessLoader = {
                loader: 'less-loader',
                options: {
                    lessOptions: {
                        javascriptEnabled: true,
                    },
                },
            };

            let lessModuleRules = cloneDeep(sassModuleRules);

            const configureLessRule = (rule) => {
                rule.test = new RegExp(rule.test.source.replace('(scss|sass)', 'less'));
                // replace sass-loader (last entry) with less-loader
                rule.use.splice(-1, 1, lessLoader);
            };

            lessModuleRules.forEach((lessModuleRule, index) => {
                configureLessRule(lessModuleRule);
                cssRule.splice(cssRule.indexOf(sassModuleRules[index]) + 1, 0, lessModuleRule);
            });

            if (sassGlobalRules) {
                let lessGlobalRules = cloneDeep(sassGlobalRules);
                lessGlobalRules.forEach((lessGlobalRule, index) => {
                    configureLessRule(lessGlobalRule);
                    cssRule.splice(cssRule.indexOf(sassGlobalRules[index]) + 1, 0, lessGlobalRule);
                });
            }

            if (typeof nextConfig.webpack === 'function') {
                return nextConfig.webpack(config, opts);
            }

            return config;
        },
    });
}

authors: BossBele Charismara Jeysef ateix17 hqwlkj mayrsascha nmiddendorff pdanysz sknightq

repo: elado/next-with-less


text:
Fix i18next warning on "new page" page

Nothing broke, but we got a warning in the console.

For the record: The warning was this:
react_devtools_backend.js:4026 react-i18next:: react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional. {illegalChars: '<>"[\\]^`{|}#%/?', reservedChars: "-+~@_!$&;:.,=*'()"}

source: gharchive/pull-request

authors: JulianKniephoff LukasKalbertodt

repo: elan-ev/tobira


text:
Conflicting Documentation/Recommendations for Writing Parquet

Hello, I've been using this library to read in and parse existing Parquet files we generate via AWS Glue for a processing engine API. I've been very satisfied with the quality of the library! Now, I'm working on the export engine aspect, which more or less is pushing csv, json and parquet formatted results. Some of my generated models are large (over 1 million rows and 8-14 columns) and I want to create the most efficient parquet files I can (regarding the performance of the generation process and external systems reading it).
Looking at the documentation for writing files, I believe there is a typo somewhere. Initially, the documentation says:
"When required, repeat from step (2) to create more row groups. It's not recommended to have more than 5'000 rows in a single row group for performance reasons."
So, this says it is NOT recommended to have more than 5,000 rows in a single row group. This seems odd to me, and I'm further confused when further down, it's contradicted (where it discusses appending):
"Please keep in mind that row groups are designed to hold a large amount of data (5'0000 rows on average) therefore try to find a large enough batch to append to the file. Do not treat parquet file as a row stream by creating a row group and placing 1-2 rows in it, because this will both increase file size massively and cause a huge performance degradation for a client reading such a file."
So this says row groups are designed to hold 50,000 row on average, and use larger batches...
What is the real best practice here for generating a parquet file which will have over 500,000 rows and normally never more than 1.3 million?
Thanks

I was about to raise the same issue ! I am using systme consuming parquet files that expect rowgroups to be around 64MB as a minimum , which would point to a rowgroup  size of 50k records rather than 5k .... but in fact  100k or greater would be appropriate in many cases

I think the original documentation is taking into account HDFS, so storing on different systems can have completely different recommendations.

authors: aloneguid martinkoslof telferm57

repo: elastacloud/parquet-dotnet


text:
Improve process instrumentation for Java 9

Problem description
This is an improvement on elastic/apm-agent-java#903 (external process execution instrumentation).
Starting from Java 9, there is a new API available for process execution ProcessHandle, which is not covered by #903.
As a result, any usage of this API will not result in spans be created.
Proposed solution
Instrument Process.toHandle() to wrap returned ProcessHandle instance.
Wrapped ProcessHandle should end current process span on those methods

ProcessHandle.destroy()
ProcessHandle.destroyForcibly()
ProcessHandle.onExit() > returns a CompletableFuture which should be wrapped and terminate span

This would also allow to use ProcessHandle.Info and capture program arguments, PID or other attributes.
Alternatively, we could also use CompletableFuture.thenApply(...) to chain a task that will terminate the process span.

As part of #1613 adding support for Java 9 API here would probably allow to detect proper termination of process, hence being able to set the span outcome properly.

As part of #1613 adding support for Java 9 API here would probably allow to detect proper termination of process, hence being able to set the span outcome properly.

repo: elastic/apm-agent-java


text:
ESS is not really the default option when using ecctl init

When using the ecctl init wizard to config the client the first step is to decide which product you want to use between ESS, ECE, and EESP. ESS is meant to be the default option but when hitting return the same step reappears.
This is super minor :)

@zanbel I'm aware of this one, at the time @karencfv mentioned it would be a bit of a headache to make the library used to create those menu selections to act differently, so we kept the current behavior due to a high effort-to-problem ratio

Can we close this?

authors: Kushmaro marclop zanbel

repo: elastic/ecctl


text:
Upgrade gopkg.in/yaml.v3 to v3.0.1.

Upgrading the YAML dependency to v3.0.1 to address dependabot alerts.

:broken_heart: Build Failed

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Start Time: 2022-05-30T19:55:05.107+0000

Duration: 2 min 8 sec

Steps errors
Expand to view the steps failures

Mage check

Took 0 min 5 sec . View more details here
Description: mage -v check

:robot: GitHub comments
To re-run your PR in the CI, just comment with:

/test : Re-trigger the build.

authors: cmacknz elasticmachine

repo: elastic/elastic-agent-libs


text:
milestone for elasticsearch v5 compat

Is there a current milestone for es v5 compat?

Yes. I have struggled to get the 2.x build to work, but the 5.x build is a big change and I should be able to finish it soon.
Stay tuned on this issue.

@pickypg thats great news! will do

This is awaiting https://github.com/elastic/elasticsearch/pull/21773

I see changes in elastic/elasticsearch#21773 which can fix this issue. Is it possible to prepare 5.x build (maybe with some issues) in any case simple to try to 5.x via groovy script?

I have master building against Elasticsearch's master again. I need to get the tests in the same state, and then I can backport/update through 5.0.0. Once done, the release cadence should return to what it was before the security manager blocked it from running.

@pickypg have you been able to make progress with the tests?  Can my team members or I assist with the update in any way?  We are currently using the Groovy API for Elasticsearch and are trying to decide whether we should switch to using the Java API for Elasticsearch 5 (i.e. since the Java API is currently available in Maven).

@pickypg any news on this? Does it make sense to have the security manager enabled for when testing the client?
I've been trying to use this client but I get the same errors that I get when trying to run the tests:
groovy.lang.MissingMethodException: No signature of method: org.elasticsearch.action.search.SearchRequest.source() is applicable for argument types: ([B) values: [[123, 34, 113, 117, 101, 114, 121, 34, 58, 123, 34, 109, 97, ...]]

Possible solutions: source(), source(org.elasticsearch.search.builder.SearchSourceBuilder), source(groovy.lang.Closure), collect(), use([Ljava.lang.Object;)

As if the extension methods were not being "wired"

authors: enp erichmx jamesbeedy oyiadom pickypg

repo: elastic/elasticsearch-groovy


text:
installation instruction does not work

Hey,
I tried this command and did not work:
bin/plugin -i elasticsearch/elasticsearch-repository-hdfs/2.2.0-beta2
Then I tried another one:
sudo /usr/share/elasticsearch/bin/plugin install elasticsearch/elasticsearch-repository-hdfs/2.2.0-beta2
-> Installing elasticsearch/elasticsearch-repository-hdfs/2.2.0-beta2...
Trying https://download.elastic.co/elasticsearch/elasticsearch-repository-hdfs/elasticsearch-repository-hdfs-2.2.0-beta2.zip ...
Trying https://search.maven.org/remotecontent?filepath=elasticsearch/elasticsearch-repository-hdfs/2.2.0-beta2/elasticsearch-repository-hdfs-2.2.0-beta2.zip ...
Trying https://oss.sonatype.org/service/local/repositories/releases/content/elasticsearch/elasticsearch-repository-hdfs/2.2.0-beta2/elasticsearch-repository-hdfs-2.2.0-beta2.zip ...
Trying https://github.com/elasticsearch/elasticsearch-repository-hdfs/archive/2.2.0-beta2.zip ...
Trying https://github.com/elasticsearch/elasticsearch-repository-hdfs/archive/master.zip ...
Thanks
Leo

Thanks. Updated the README accordingly

authors: costin leojli

repo: elastic/elasticsearch-hadoop


text:
Support for data_path on index settings

https://github.com/elastic/elasticsearch/pull/9033

Closing this for now, as part of 2.0 we'll strongly type more index settings (also upon index creation) but its nicer to do that using our new literate testing setup in 2.0.
cc @robertlyson

authors: Mpdreamz gmarz

repo: elastic/elasticsearch-net


text:
Client Concepts Debug Mode Test Flaky Test

The following test is flaky in CI and needs review - tests/Tests/ClientConcepts/Troubleshooting/DebugMode.doc.cs

Resolved by extending timeout in tests.


text:
System.MissingMethodException: Method not found: 'Void Elasticsearch.Net.Utf8Json.IJsonFormatter`1.IRegexpQuery

NEST/Elasticsearch.Net version:
7.15.2
Elasticsearch version:
7.17.0 in cluster (3 master, 5 data)
.NET runtime version:
5.0
Operating system version:
alpine (in Docker)
Description of the problem including expected versus actual behavior:
in short:
We have a search method with aggregations.
Today we got exception in this search method that was working fine with the same parameters few weeks (sounds not convincing
:) )
Some details:
We have 2 API nodes behind load balancer
One of the node suddenly started to raise exceptions (look below).
Second node was serving the same requests without any issues.
After docker container restart in the failure node the same method started to work as usual.
Not sure what part of the api shall i check for the issue.
Will appreciate any help!
Steps to reproduce:

Have no idea, actually

Expected behavior
well, to search without exceptions
Provide ConnectionSettings (if relevant):
Provide DebugInformation (if relevant):
Exception
**FailureReason**: Unrecoverable/Unexpected BadRequest while attempting POST on http://10.0.0.5:9200/5catalog_flat_products/_search?typed_keys=true  [1] BadRequest: Node: http://10.0.0.5:9200/ Exception: MissingMethodException Took: 00:00:00.0103978  **Audit exception in step 1** BadRequest: System.MissingMethodException: Method not found: 'Void Elasticsearch.Net.Utf8Json.IJsonFormatter1.IRegexpQuery(Elasticsearch.Net.Utf8Json.JsonWriter ByRef, !0, Elasticsearch.Net.Utf8Json.IJsonFormatterResolver)'.
at Elasticsearch.Net.Nest_IAggregationContainerFormatter3.Serialize(JsonWriter& , IAggregationContainer , IJsonFormatterResolver )
at Nest.VerbatimDictionaryKeysBaseFormatter3.Serialize(JsonWriter& writer, TDictionary value, IJsonFormatterResolver formatterResolver)    at Elasticsearch.Net.Nest_ISearchRequestFormatter1.Serialize(JsonWriter& , ISearchRequest , IJsonFormatterResolver )    at Elasticsearch.Net.Utf8Json.JsonSerializer.SerializeAsync[T](Stream stream, T value, IJsonFormatterResolver resolver)    at Elasticsearch.Net.SerializableData1.WriteAsync(Stream writableStream, IConnectionConfigurationValues settings, CancellationToken cancellationToken)
at Elasticsearch.Net.HttpConnection.SetContentAsync(HttpRequestMessage message, RequestData requestData, CancellationToken cancellationToken)
at Elasticsearch.Net.HttpConnection.RequestAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)
at Elasticsearch.Net.RequestPipeline.CallElasticsearchAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)
at Elasticsearch.Net.Transport1.RequestAsync[TResponse](HttpMethod method, String path, CancellationToken cancellationToken, PostData data, IRequestParameters requestParameters) **Inner Exception**: Method not found: 'Void Elasticsearch.Net.Utf8Json.IJsonFormatter1.IRegexpQuery(Elasticsearch.Net.Utf8Json.JsonWriter ByRef, !0, Elasticsearch.Net.Utf8Json.IJsonFormatterResolver)'.
System.MissingMethodException: Method not found: 'Void Elasticsearch.Net.Utf8Json.IJsonFormatter1.IRegexpQuery(Elasticsearch.Net.Utf8Json.JsonWriter ByRef, !0, Elasticsearch.Net.Utf8Json.IJsonFormatterResolver)'.    at Elasticsearch.Net.Nest_IAggregationContainerFormatter3.Serialize(JsonWriter& , IAggregationContainer , IJsonFormatterResolver )    at Nest.VerbatimDictionaryKeysBaseFormatter3.Serialize(JsonWriter& writer, TDictionary value, IJsonFormatterResolver formatterResolver)
at Elasticsearch.Net.Nest_ISearchRequestFormatter1.Serialize(JsonWriter& , ISearchRequest , IJsonFormatterResolver )
at Elasticsearch.Net.Utf8Json.JsonSerializer.SerializeAsync[T](Stream stream, T value, IJsonFormatterResolver resolver)
at Elasticsearch.Net.SerializableData1.WriteAsync(Stream writableStream, IConnectionConfigurationValues settings, CancellationToken cancellationToken)    at Elasticsearch.Net.HttpConnection.SetContentAsync(HttpRequestMessage message, RequestData requestData, CancellationToken cancellationToken)    at Elasticsearch.Net.HttpConnection.RequestAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)    at Elasticsearch.Net.RequestPipeline.CallElasticsearchAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)    at Elasticsearch.Net.Transport1.RequestAsync[TResponse](HttpMethod method, String path, CancellationToken cancellationToken, PostData data, IRequestParameters requestParameters)
Exception:
Elasticsearch.Net.UnexpectedElasticsearchClientException: Method not found: 'Void Elasticsearch.Net.Utf8Json.IJsonFormatter1.IRegexpQuery(Elasticsearch.Net.Utf8Json.JsonWriter ByRef, !0, Elasticsearch.Net.Utf8Json.IJsonFormatterResolver)'.  ---> System.MissingMethodException: Method not found: 'Void Elasticsearch.Net.Utf8Json.IJsonFormatter1.IRegexpQuery(Elasticsearch.Net.Utf8Json.JsonWriter ByRef, !0, Elasticsearch.Net.Utf8Json.IJsonFormatterResolver)'.
at Elasticsearch.Net.Nest_IAggregationContainerFormatter3.Serialize(JsonWriter& , IAggregationContainer , IJsonFormatterResolver )
at Nest.VerbatimDictionaryKeysBaseFormatter3.Serialize(JsonWriter& writer, TDictionary value, IJsonFormatterResolver formatterResolver)    at Elasticsearch.Net.Nest_ISearchRequestFormatter1.Serialize(JsonWriter& , ISearchRequest , IJsonFormatterResolver )    at Elasticsearch.Net.Utf8Json.JsonSerializer.SerializeAsync[T](Stream stream, T value, IJsonFormatterResolver resolver)    at Elasticsearch.Net.SerializableData1.WriteAsync(Stream writableStream, IConnectionConfigurationValues settings, CancellationToken cancellationToken)
at Elasticsearch.Net.HttpConnection.SetContentAsync(HttpRequestMessage message, RequestData requestData, CancellationToken cancellationToken)
at Elasticsearch.Net.HttpConnection.RequestAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)
at Elasticsearch.Net.RequestPipeline.CallElasticsearchAsync[TResponse](RequestData requestData, CancellationToken cancellationToken)
at Elasticsearch.Net.Transport1.RequestAsync[TResponse](HttpMethod method, String path, CancellationToken cancellationToken, PostData data, IRequestParameters requestParameters)    --- End of inner exception stack trace ---    at Elasticsearch.Net.Transport1.RequestAsync[TResponse](HttpMethod method, String path, CancellationToken cancellationToken, PostData data, IRequestParameters requestParameters)
at Nest.ElasticClient.SearchAsync[TDocument](ISearchRequest request, CancellationToken ct)
at api.search.Services.SearchServiceMultiConnectionsBase.SearchAsync[TDocument](ISearchRequest request, CancellationToken ct) in /src/api.search/Services/SearchServiceMultiConnectionsBase.cs:line 31
at api.search.Services.SearchCatalogService.SearchFlatAsync(SearchCatalogPagingDto dto, Boolean useHq, CancellationToken ct) in /src/api.search/Services/SearchCatalogService.cs:line 136
at api.logic.Managers.CatalogManager.SearchAsync(SearchCatalogPagingRequestDto request, CancellationToken ct) in /src/api.logic/Managers/CatalogManager.cs:line 69
at lambda_method1013(Closure , Object )
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask)    at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

Hi, @vadim-zakharyan.
Without reproduction steps, I don't think there's much we can do to investigate this or identify the cause.
Based on the call stack this looks to be thrown within a Regexp query used in an aggregation.
The MissingMethodException is unusual. The most likely cause would be that an incorrect DLL had been loaded which is incompatible with the compiled application. It's possible the restart resolved that somehow. Had the container recently been redeployed before the exception occurred? It's worth reviewing your build process and source of NuGet packages to ensure that the built image contains the expected assembly DLLs and versions match.
Has this re-occurred since?

@vadim-zakharyan Checking in to see if this still requires attention?

NEST/Elasticsearch.Net version:
7.14.0
Elasticsearch version:
7.14.0 in cluster (3 master)
.NET runtime version:
6.0
Operating system version:
Windows Server 2016
Description of the problem including expected versus actual behavior:
in short:
I also encountered the same problem. We have two api node.  They have normal work for a month from 2023.3.3 to 2023.4.15.
No updates were made during this period.
One of the node suddenly started to raise exceptions (look below).
Second node was serving the same requests without any issues.
System.MissingMethodException: Method not found: 'Nest.Serialize Nest.IQueryContainer.get_Boosting()'.    at Elasticsearch.Net.Nest_IQueryContainerFormatter3.Serialize(JsonWriter& , IQueryContainer , IJsonFormatterResolver )    at Elasticsearch.Net.Nest_ICountRequestFormatter1.Serialize(JsonWriter& , ICountRequest , IJsonFormatterResolver )    at Elasticsearch.Net.Utf8Json.JsonSerializer.SerializeUnsafe[T](T value, IJsonFormatterResolver resolver)    at Elasticsearch.Net.Utf8Json.JsonSerializer.Serialize[T](Stream stream, T value, IJsonFormatterResolver resolver)    at Elasticsearch.Net.DiagnosticsSerializerProxy.Serialize[T](T data, Stream stream, SerializationFormatting formatting)    at Elasticsearch.Net.SerializableData1.Write(Stream writableStream, IConnectionConfigurationValues settings)
at Elasticsearch.Net.HttpConnection.SetContent(HttpRequestMessage message, RequestData requestData)
at Elasticsearch.Net.HttpConnection.Request[TResponse](RequestData requestData)
at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TResponse](RequestData requestData)
at Elasticsearch.Net.Transport1.Request[TResponse](HttpMethod method, String path, PostData data, IRequestParameters requestParameters

authors: SkyChenSky stevejgordon vadim-zakharyan


text:
Implement shape queries.

Depends on PR: https://github.com/elastic/elasticsearch-net/pull/4154
Implements: https://github.com/elastic/elasticsearch/pull/45108

Ported to master


text:
Move away from shared project

This is an alternative approach to share code between the two clients. This is a tad more inline with the dotnet CLI as we no longer depend on legacy projects.
The impetus for this change was to improve cold compilation times.
My local jetBrains Rider kept locking up trying to do the initial compile.

Moves us over to <ArtifactsPath> (set to $root\.artifacts like other .NET projects)
Removes a leftover <OutputPath> for certain projects (this was tripping up deps.json resolving HARD).
No longer use nuget package locking

nuget resolves to lowest anyway and we never float dependencies
no other .NET repository at Elastic does this.

This looks great ❤ Thanks a lot for creating this PR.
I will need some time to review in detail, but already have one comment regarding the locked restore:
Would keeping the package lock have any other noticable drawback? I usually like that approach as it e.g. allows for easy package caching in CI (based on a hash of all package.lock.json files). This speeds up build times on the slow GitHub workers quite a bit.
To mitigate some of the "developer experience issues" like having to use --force-evaluate, my usual approach is to guard the condition like this:
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
<RestoreLockedMode Condition="'$(ContinuousIntegrationBuild)' == 'true'" />

The CI passes that argument whenever the project must be built or packaged:
https://github.com/elastic/elasticsearch-net/blob/5cde9691b5a4613068ae1c97e8c6268575f77d57/.github/workflows/release.yml#L86
What do you think?

We simply cache by [cf]proj files. Slightly higher cache busting rate but in practice not a big issue :)
https://github.com/elastic/apm-agent-dotnet/blob/3ffe9b4f24f2e3cfdc5e82c1a42e346d64d36fb9/.github/workflows/bootstrap/action.yml#L39

No super strong opinion here, but given that the package.lock.json approach has no real drawbacks (AFAIK), I think it's the more robust approach. These files always represent the final package graph.
Hashing just [cf]proj won't capture changes in includes for these files as well as Directory.Packages.props, Directory.Build.props, Directory.Build.targets, etc.
Directory.Build.props for example is currently used to include the DotNet.ReproducibleBuilds package.

authors: Mpdreamz flobernd


text:
Add the option to import data concurrently (using the rake task)

Added a PARTITION option to the import rake task
`rake environment elasticsearch:import:model CLASS='Article' PARTITION=2 BY=id`

this would create 2 processes and split the data set into 2 and run both processes in parallel ( i.e cutting import time by not letting active record be a bottleneck)
You would have to find the right partition number based on elasticsearch network throughput and memory settings) and/or adjust the settings per need.

@karmi can you review? :smile:

repo: elastic/elasticsearch-rails


text:
Add support for operation summary

🚀 Feature Proposal

[ ] Add a way to manually add "summary" info for each operation.
[ ] Update the OAS generator to populate the "summary" property from this data.
[ ] Work with writing team to start populating the summary fields in this repo. Remove content from "description" fields if there's no additional value.

In OpenAPI specifications, each path and operation can have a summary field that provides a short description. Many documentation generators use this field in the full list of paths and in page headers. This field is optional but strongly recommended as the minimum necessary documentation.
Per https://spec.openapis.org/oas/latest#operation-object, the difference between the "summary" and "description" fields is as follows:

summary (string):  A short summary of what the operation does.
description (string): A verbose explanation of the operation behavior. CommonMark syntax MAY be used for rich text representation.

I would like to propose that we add support for it at the operation level at a minimum. The assumption is that though neither "summary" nor "description" are mandatory, for good docs "summary" is strongly recommended.
Per https://elastic.slack.com/archives/C0D8Y4ZJ9/p1696439430833169?thread_ts=1696362518.675159&cid=C0D8Y4ZJ9, there's been work done to add summaries for all Elasticsearch endpoints but since that content is currently just a duplication of the "description" field, it's not useful (and potentially redundant once we start publishing both the summary and the description in docsmobile). It's better to curate the content in the original specifications that try to generate it IMO.
Motivation
There are ongoing discussions about the best place to show the summary in docsmobile (https://github.com/elastic/api-reference-site/issues/61). Since it's likely to have prominent placement, we ought to start planning for this in the Elasticsearch specifications.
Example
Currently in https://github.com/elastic/elasticsearch-specification/blob/main/specification/async_search/delete/AsyncSearchDeleteRequest.ts we have content like this:
/**
 * Deletes an async search by identifier.
 * If the search is still running, the search request will be cancelled.
 * Otherwise, the saved search results are deleted.
 * If the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.
 * @rest_spec_name async_search.delete

... which yields output like this in https://raw.githubusercontent.com/elastic/elasticsearch-specification/openapi-converter/output/openapi/elasticsearch-serverless-openapi.json:
...
"delete": {
        "tags": [
          "async_search.delete"
        ],
        "summary": "Deletes an async search by ID. If the search is still running, the search request will be cancelled. Otherwise, the saved search results are deleted.",
        "description": "Deletes an async search by ID. If the search is still running, the search request will be cancelled. Otherwise, the saved search results are deleted.",
        "externalDocs": {
          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
        },
        "operationId": "async-search-delete",
        "parameters": [
...

It would be preferable to have content like this:
...
"delete": {
        "tags": [
          "async_search.delete"
        ],
        "summary": "Deletes an async search by ID.",
        "description": "If the search is still running, the search request will be cancelled. Otherwise, the saved search results are deleted.",
        "externalDocs": {
          "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/async-search.html"
        },
        "operationId": "async-search-delete",
        "parameters": [
...

Which could ideally be coded something like this:

/**
 * If the search is still running, the search request will be cancelled.
 * Otherwise, the saved search results are deleted.
 * If the Elasticsearch security features are enabled, the deletion of a specific async search is restricted to: the authenticated user that submitted the original search request; users that have the `cancel_task` cluster privilege.
 * @rest_spec_name async_search.delete
 * @rest_spec_summary Deletes an async search by identifier.

NOTE: Ideally writers should be involved in creating the summaries (and just omit them from the OAS if they're not present in the ES spec) since it's likely not as simple as grabbing the first line of the description in all cases.

@swallez If you agree that a new keyword is the right way to start adding these "summary" strings to each operation:

Can I start adding them now and then whenever someone has time to update the OAS generator to do something with them, we're on our way? Or would adding an undefined keyword break things and necessitate more patience on my part :)
Any preferences on the keyword name? "@summary" or "@doc_summary" seem fine to me.

@KOTungseth Noticed something that likely impacts this issue: in the case where multiple endpoints are derived from a single typescript file (e.g. "GET /_cat/ml/data_frame/analytics/{id}" and "GET /_cat/ml/data_frame/analytics" are both generated from https://github.com/elastic/elasticsearch-specification/blob/main/specification/cat/ml_data_frame_analytics/CatDataFrameAnalyticsRequest.ts), the same summary and description will be used for both. I don't think this is necessarily terrible, we just need to consider how to clarify that (in this example, one gets info about a single job whereas the other potentially gets info about many jobs).
I suspect this scenario will apply anywhere there are "optional" path parameters.

Looks like support for operation summaries exist in TypeSpec per https://typespec.io/docs/getting-started/typespec-for-openapi-dev#operation-object

Fixed by https://github.com/elastic/elasticsearch-specification/pull/2608 ?

yes :D

authors: l-trotta lcawl

repo: elastic/elasticsearch-specification


text:
Adds missing doc details for ML get calendar APIs

This PR updates get_calendar_events and get_calendars with info from the documentation (https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-calendar-event.html, https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-calendar.html).
Make contrib currently fails:

Error: ml.get_calendar_events.Request can't have a body, allowed methods: GET

This is blocked on https://github.com/elastic/elasticsearch/issues/79271

authors: lcawl sethmlarson


text:
Detect existence of ss application

If the ss application is not installed, this error occurs:
Error processing system commands
java.io.IOException: Cannot run program "ss": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041) ~[na:1.7.0_25]
at com.elastic.support.diagnostics.commands.SystemCallsCmd.execute(SystemCallsCmd.java:41) ~[support-diagnostics-2.0.7.jar:2.0.7]
at com.elastic.support.diagnostics.commands.AbstractDiagnosticCmd.execute(AbstractDiagnosticCmd.java:15) ~[support-diagnostics-2.0.7.jar:2.0.7]
at com.elastic.support.chain.Chain.execute(Chain.java:33) ~[support-diagnostics-2.0.7.jar:2.0.7]
at com.elastic.support.diagnostics.DiagnosticChainExec.runDiagnostic(DiagnosticChainExec.java:35) ~[support-diagnostics-2.0.7.jar:2.0.7]
at com.elastic.support.diagnostics.DiagnosticApp.main(DiagnosticApp.java:47) ~[support-diagnostics-2.0.7.jar:2.0.7]
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method) ~[na:1.7.0_25]
at java.lang.UNIXProcess.<init>(UNIXProcess.java:135) ~[na:1.7.0_25]
at java.lang.ProcessImpl.start(ProcessImpl.java:130) ~[na:1.7.0_25]
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022) ~[na:1.7.0_25]
... 5 common frames omitted

Cannot reliably detect the presence of these kinds of things.  Just not feasible.  Have fixed the issue however that would cause the rest of the system calls to fail.  It will just log the error that it didn't find and go ahead with the rest of them.

Would it be possible to test if the application (first element of each of these) exists and is executable before executing it?  Typical procedure for many bash scripts...

It's not a bash script though. so it's an extra call for each command, and then trying to parse out each result.  Given that it's not going to cause the program to exit, I don't think that's necessarily worth that much effort unless there's some compelling reason to do so other than that you don't want to see the error.


text:
Changelog for 0.9.0

Add changelog to prepare relase 0.9.0

@jsoriano Can you push a v0.9.0 tag for 119649af2f6cc46c2604fb8bb5bc0fb21ec9f73c?

Sure, done.

authors: andrewkroh jsoriano

repo: elastic/gosigar


text:
Error: Could not find a suitable provider for elasticsearch_role/elasticsearch_user_roles

Module version: 6.3.3
Puppet version: 4.10.8
OS and version: Red Hat Enterprise Linux Server release 7.5 (Maipo)

Bug description
When installing elasticsearch on an all-in-one development box together with many applications (and thus many modules), the following error messages pop up regularly and lead to a failed puppet run:

Error: Could not find a suitable provider for elasticsearch_role
Error: Could not find a suitable provider for elasticsearch_user_roles

This is due to the way, how these users are created, which triggers a bug in puppet when collecting resources.
We worked around this issue by using file resources for "${elasticsearch_home}/config/${instance}/x-pack/users", "${elasticsearch_home}/config/${instance}/x-pack/users_roles" and "${elasticsearch_home}/config/${instance}/x-pack/roles.yml" instead of using the defined types elasticsearch::role and elasticsearch::user for the file based users and defined our own defined types which create roles and users via curl calls to the API.
Attached examples are stripped down/simplified.
auth_snippet.pp.txt
role.pp.txt
roles.yml.epp.txt
user.pp.txt
users.epp.txt
users_roles.epp.txt

Despite not using elasticsearch::user and elasticsearch::role any more, Puppet still shows an error when building a machine from scratch:
27/11/2018 09:30:22     default: Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Virtual Query, Could not autoload puppet/type/elasticsearch_user_file: Could not autoload puppet/provider/elasticsearch_user_file/oss_xpack: no such file to load -- puppet/provider/elastic_parsedfile at /etc/puppetlabs/code/environments/vbox/modules/elasticsearch/manifests/init.pp:555:6 on node box-krn0-vbx-v01.sf-bk.de

Could not autoload  +1

I had a similar Issue:
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Virtual Query, Could not autoload puppet/type/elasticsearch_user: Could not autoload puppet/provider/elasticsearch_user/esusers: no such file to load -- puppet/provider/elastic_user_command at /etc/puppetlabs/code/environments/production/modules/elasticsearch/manifests/init.pp:544:3 on node mynode
wrote about it in the puppet slack: https://puppetcommunity.slack.com/archives/C0W298S9G/p1549546357003900
I used the sugseted work around: I replaced require with require_relative in the file elasticsearch/lib/puppet/provider/elasticsearch_user/elasticsearch_users.rb line 1. This fixed my Problem! I suggest, read the thread from slack I posted above and you see the complete discussion.

+1

FYI, we just facing this exact same problem and we found why. Maybe its not gonna solve the issue for you, but it worked for us.
The problem was coming from the fact that in the "modules" puppet directory, we had the new version of the module in the "elasticsearch" folder, and the older version in the "elasticsearch.ori" folder. And in 99% of puppet run, we get the error because the loaded provider was coming from "elasticsearch.ori".
Since I removed this folder, to get ONLY one elasticsearch module folder, no more error. Every puppet run are ok.
Maybe it can help. Maybe not !

repo: elastic/puppet-elasticsearch


text:
Skip response parsing for raw requests

With this commit we skip response parsing for raw requests. As users might leverage the raw-request operation type for any kind of request, it is possible that it produces arbitrarily large responses, which might introduce client-side bottlenecks. As we don't inspect the response body, we might as well just use the raw response internally and avoid an accidental bottleneck due to response parsing.

Thanks!

repo: elastic/rally


text:
Housekeeping

There should be no functional changes (aside from fixing some tests).  Mostly just cleanup, golfing, and bikeshedding.

Mauve! Fore!
LGTM

Thanks!

authors: leathekd michaelbaamonde

repo: elastic/runbld


text:
ci: release tag based (stage 1)

Summary
Automate the release and publishing steps.
Implementation details

Tag based event (v<major>.<minor>.*)
Notify if something bad happened
Create draft release
Skip all the stages but build and release when a tag release is created, every commit is validated in the CI either coming from a PR or merged to the main branch or release branches, therefore there is no need to validate it again when a tag is created from a validated commit.

Next steps

Package and upload the artifacts as assets to the GitHub release
Sign the artifacts

Requirements

Confirm what slack/email to be used for notifications.

:green_heart: Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Start Time: 2022-03-30T16:27:28.780+0000

Duration: 16 min 13 sec

:robot: GitHub comments
To re-run your PR in the CI, just comment with:

/test : Re-trigger the build.

@v1v Is this linked to an existing GH issue

@v1v Is this linked to an existing GH issue?

Yes, it's linked from the private repo to this one, so it should be reflected in this PR, if you scroll up you will see the one with the text [CI][Request] automate synthetics-recorder releases
I normally link PRs in the GitHub issues from private repositories, to avoid misleading non-elastician users with broken links or references. Unfortunately, it's not easy to find those links :/

authors: apmmachine cachedout v1v

repo: elastic/synthetics-recorder


text:
Remove an unecessary filter

This pull request removes an unecessary filter from the HACS update template in the documentation.

coverage: 99.867%. remained the same
when pulling e4efef2fd7d25a2e38ecfd50701d17be58354b7e on remove_unnecesary_filter
into df79df7fa2e1da558e4eb493a92f5d29b1d1da62 on master.

authors: coveralls elchininet

repo: elchininet/custom-sidebar