[Question]: I am trying to upscale a rtsp stream and convert it back to rtsp stream but getting error

Issue guidelines

[X] I've read the Issue Guidelines and wholeheartedly agree.

Issue Checklist

[X] I have searched open or closed issues for my problem and found nothing related or helpful.
[X] I have read the Documentation and found nothing related to my problem.
[X] I have gone through the Bonus Examples and FAQs and found nothing related or helpful.

Describe your Question
So, i am doing a project in which i am taking in a rtsp stream and upscaling it using my own trained ML model and then converting back the live frames into an rtsp stream but after processing 45 frames, the code throws an error saying "av_interleaved_write_frame(): Broken pipe
frame=   47 fps=2.5 q=23.0 size=N/A time=-00:00:00.07 bitrate=N/A speed=N/A  " and also "WriteGear   ::  ERROR   :: BrokenPipeError caught, Wrong values passed to FFmpeg Pipe, Kindly Refer Docs! ".  Can someone please tell me what am i doing wrong here. I am reading the frames using opencv and then doing the upscaling on the frames and then writing them back to the vidgear.write.
VidGear Version
0.2.6
Python version
3.10.6
Operating System version
Ubuntu
Any other Relevant Information?
No response

@SawantMyelin You need to share code or terminal output with logging=True, so that we will be able to debug the problem.

Thanks for the quick reply, I am pasting my code below .
from vidgear.gears import CamGear
from vidgear.gears import WriteGear
import cv2
import datetime
import time
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
import os
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
height=480
width=640
model = tf.keras.models.load_model('/home/sawant/dashnet_v1/saved_model_2x_e92_dashnet_v1')
class Reconnecting_CamGear:
def init(self, cam_address, reset_attempts=50, reset_delay=5):
self.cam_address = cam_address
self.reset_attempts = reset_attempts
self.reset_delay = reset_delay
self.source = CamGear(source=self.cam_address).start()
self.running = True
def read(self):
    if self.source is None:
        return None
    if self.running and self.reset_attempts > 0:
        frame = self.source.read()
        if frame is None:
            self.source.stop()
            self.reset_attempts -= 1
            print(
                "Re-connection Attempt-{} occured at time:{}".format(
                    str(self.reset_attempts),
                    datetime.datetime.now().strftime("%m-%d-%Y %I:%M:%S%p"),
                )
            )
            time.sleep(self.reset_delay)
            self.source = CamGear(source=self.cam_address).start()
            # return previous frame
            return self.frame
        else:
            self.frame = frame
            return frame
    else:
        return None

def stop(self):
    self.running = False
    self.reset_attempts = 0
    self.frame = None
    if not self.source is None:
        self.source.stop()

output_params = {"-f": "rtsp", "-rtsp_transport": "tcp"}
writer = WriteGear(
output_filename="rtsp://localhost:8554/mystream", logging=True, **output_params
)
if name == "main":
# open any valid video stream
stream = Reconnecting_CamGear(
cam_address="rtsp://<IP_ADDRESS>:5540/ch0",
reset_attempts=20,
reset_delay=5,
)
# loop over
while True:

    # read frames from stream
    frame = stream.read()

    # check for frame if None-type
    if frame is None:
        break

    cv2.imwrite('img.png',frame)

    # Show output window
    cv2.imshow("Output", frame)

    im = cv2.imread('img.png')
    yuv = cv2.cvtColor(im, cv2.COLOR_RGB2YUV)
    y = yuv[:,:,0] / 255.
    uv = yuv[:,:,1:]
    y = y[tf.newaxis,..., tf.newaxis]
    mat = model.predict(y)

    mat = np.reshape(mat, (2*height, 2*width, 1))
    mat = np.clip(mat, 0, 1)
    mat = mat * 255
    mat = mat.astype('uint8')
    uv = cv2.resize(uv,(2 * width, 2 * height))
    hr = np.concatenate((mat,uv),axis=2)
    rgb = cv2.cvtColor(hr,cv2.COLOR_YUV2RGB)

    # {do something with the frame here}
    writer.write(rgb)

    # check for 'q' key if pressed
    key = cv2.waitKey(1) & 0xFF
    if key == ord("q"):
        break

# close output window
cv2.destroyAllWindows()

# safely close video stream
stream.stop()

writer.close()

OUTPUT:
WARNING:tensorflow:No training configuration found in save file, so the model was not compiled. Compile it manually.
16:51:46 ::    Helper     :: WARNING  :: Specified directory /home/sawantkumar/rtsp_to_rtsp/rtsp:/localhost:8554 doesn't exists or valid.
16:51:46 ::   WriteGear   :: WARNING  :: rtsp://localhost:8554/mystream isn't a valid system path or directory.  Open the full output data in a text editor
16:51:49 ::   WriteGear   ::  DEBUG   :: InputFrame => Height:960 Width:1280 Channels:3
16:51:49 ::   WriteGear   ::  DEBUG   :: Executing FFmpeg command: ffmpeg -y -f rawvideo -vcodec rawvideo -s 1280x960 -pix_fmt bgr24 -i - -f rtsp -rtsp_transport tcp -vcodec libx264 -crf 18 -preset fast rtsp://localhost:8554/mystream
ffmpeg version 4.2.7-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil      56. 31.100 / 56. 31.100
libavcodec     58. 54.100 / 58. 54.100
libavformat    58. 29.100 / 58. 29.100
libavdevice    58.  8.100 / 58.  8.100
libavfilter     7. 57.100 /  7. 57.100
libavresample   4.  0.  0 /  4.  0.  0
libswscale      5.  5.100 /  5.  5.100
libswresample   3.  5.100 /  3.  5.100
libpostproc    55.  5.100 / 55.  5.100
Input #0, rawvideo, from 'pipe:':
Duration: N/A, start: 0.000000, bitrate: 737280 kb/s
Stream #0:0: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 1280x960, 737280 kb/s, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
[libx264 @ 0x558bf9d7a300] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512
[libx264 @ 0x558bf9d7a300] profile High 4:4:4 Predictive, level 3.2, 4:4:4 8-bit
[libx264 @ 0x558bf9d7a300] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=crf mbtree=1 crf=18.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, rtsp, to 'rtsp://localhost:8554/mystream':
Metadata:
encoder         : Lavf58.29.100
...
Metadata:
encoder         : Lavc58.54.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1

1/1 [==============================] - 0s 369ms/step
1/1 [==============================] - 0s 357ms/step
1/1 [==============================] - 0s 362ms/step
frame=    4 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 354ms/step
1/1 [==============================] - 0s 348ms/step
frame=    6 fps=3.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 374ms/step
1/1 [==============================] - 0s 340ms/step
frame=    8 fps=3.1 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 346ms/step
1/1 [==============================] - 0s 359ms/step
frame=   10 fps=2.9 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 366ms/step
1/1 [==============================] - 0s 353ms/step
frame=   12 fps=2.8 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 416ms/step
1/1 [==============================] - 0s 362ms/step
frame=   14 fps=2.7 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 415ms/step
1/1 [==============================] - 0s 332ms/step
frame=   16 fps=2.6 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 341ms/step
1/1 [==============================] - 0s 356ms/step
frame=   18 fps=2.6 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 342ms/step
1/1 [==============================] - 0s 341ms/step
frame=   20 fps=2.6 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 342ms/step
1/1 [==============================] - 0s 343ms/step
frame=   22 fps=2.6 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 346ms/step
1/1 [==============================] - 0s 349ms/step
frame=   24 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 351ms/step
1/1 [==============================] - 0s 345ms/step
frame=   26 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 339ms/step
1/1 [==============================] - 0s 333ms/step
frame=   28 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 357ms/step
16:52:01 ::   WriteGear   ::  DEBUG   :: Terminating WriteGear Processes.
av_interleaved_write_frame(): Broken pipe0:00:00.00 bitrate=N/A speed=   0x
frame=   29 fps=2.4 q=23.0 Lsize=N/A time=-00:00:00.07 bitrate=N/A speed=N/A
video:125kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[libx264 @ 0x558bf9d7a300] frame I:1     Avg QP:12.33  size:127140
[libx264 @ 0x558bf9d7a300] frame P:7     Avg QP:14.41  size: 11217
[libx264 @ 0x558bf9d7a300] frame B:21    Avg QP:16.84  size:  1265
[libx264 @ 0x558bf9d7a300] consecutive B-frames:  3.4%  0.0%  0.0% 96.6%
[libx264 @ 0x558bf9d7a300] mb I  I16..4: 16.0%  0.0% 84.0%
[libx264 @ 0x558bf9d7a300] mb P  I16..4:  1.9%  0.0%  1.5%  P16..4: 24.5%  6.4%  5.1%  0.0%  0.0%    skip:60.5%
[libx264 @ 0x558bf9d7a300] mb B  I16..4:  0.4%  0.0%  0.0%  B16..8:  5.8%  1.1%  0.0%  direct: 1.6%  skip:91.2%  L0:49.2% L1:49.3% BI: 1.5%
[libx264 @ 0x558bf9d7a300] coded y,u,v intra: 66.5% 31.0% 24.8% inter: 3.5% 2.4% 1.8%
[libx264 @ 0x558bf9d7a300] i16 v,h,dc,p: 33% 32% 20% 15%
[libx264 @ 0x558bf9d7a300] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 18% 12%  6% 14% 10%  8%  4%  5%
[libx264 @ 0x558bf9d7a300] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x558bf9d7a300] ref P L0: 70.6% 29.4%
[libx264 @ 0x558bf9d7a300] ref B L0: 78.7% 21.3%
[libx264 @ 0x558bf9d7a300] ref B L1: 94.5%  5.5%
[libx264 @ 0x558bf9d7a300] kb/s:1601.59
Conversion failed!

1/1 [==============================] - 0s 355ms/step
1/1 [==============================] - 0s 344ms/step
1/1 [==============================] - 0s 347ms/step
frame=    4 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 356ms/step
1/1 [==============================] - 0s 350ms/step
frame=    6 fps=3.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 349ms/step
1/1 [==============================] - 0s 347ms/step
frame=    8 fps=3.1 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 349ms/step
1/1 [==============================] - 0s 342ms/step
frame=   10 fps=3.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 350ms/step
1/1 [==============================] - 0s 338ms/step
frame=   12 fps=2.8 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 342ms/step
1/1 [==============================] - 0s 341ms/step
frame=   14 fps=2.8 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 347ms/step
1/1 [==============================] - 0s 344ms/step
frame=   16 fps=2.7 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 356ms/step
1/1 [==============================] - 0s 341ms/step
frame=   18 fps=2.7 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 345ms/step
1/1 [==============================] - 0s 346ms/step
frame=   20 fps=2.7 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 353ms/step
1/1 [==============================] - 0s 339ms/step
frame=   22 fps=2.6 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 353ms/step
1/1 [==============================] - 0s 353ms/step
frame=   24 fps=2.6 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 391ms/step
1/1 [==============================] - 0s 320ms/step
frame=   26 fps=2.6 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 369ms/step
1/1 [==============================] - 0s 350ms/step
frame=   28 fps=2.6 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 328ms/step
1/1 [==============================] - 0s 326ms/step
frame=   30 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 313ms/step
1/1 [==============================] - 0s 308ms/step
frame=   32 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 326ms/step
1/1 [==============================] - 0s 321ms/step
frame=   34 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 336ms/step
1/1 [==============================] - 0s 334ms/step
frame=   36 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 351ms/step
1/1 [==============================] - 0s 321ms/step
frame=   38 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 365ms/step
1/1 [==============================] - 0s 374ms/step
frame=   40 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 363ms/step
1/1 [==============================] - 0s 348ms/step
frame=   42 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 357ms/step
1/1 [==============================] - 0s 319ms/step
frame=   44 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 336ms/step
1/1 [==============================] - 0s 363ms/step
frame=   46 fps=2.5 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x
1/1 [==============================] - 0s 343ms/step
av_interleaved_write_frame(): Broken pipe
1/1 [==============================] - 0s 457ms/step
frame=   47 fps=2.3 q=23.0 Lsize=N/A time=-00:00:00.07 bitrate=N/A speed=N/A
video:153kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[libx264 @ 0x55f85748f300] frame I:1     Avg QP:18.34  size:156345
[libx264 @ 0x55f85748f300] frame P:42    Avg QP:18.79  size: 33947
[libx264 @ 0x55f85748f300] frame B:4     Avg QP:23.18  size:  9669
[libx264 @ 0x55f85748f300] consecutive B-frames: 87.2%  4.3%  0.0%  8.5%
[libx264 @ 0x55f85748f300] mb I  I16..4:  6.0%  0.0% 94.0%
[libx264 @ 0x55f85748f300] mb P  I16..4:  0.2%  0.0%  1.8%  P16..4: 36.9% 25.9% 14.0%  0.0%  0.0%    skip:21.2%
[libx264 @ 0x55f85748f300] mb B  I16..4:  0.0%  0.0%  0.1%  B16..8: 30.4%  7.5%  0.7%  direct:11.5%  skip:49.8%  L0:38.8% L1:52.3% BI: 8.9%
[libx264 @ 0x55f85748f300] coded y,u,v intra: 91.6% 31.5% 36.8% inter: 31.1% 3.7% 5.2%
[libx264 @ 0x55f85748f300] i16 v,h,dc,p: 23% 11% 20% 46%
[libx264 @ 0x55f85748f300] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 15% 10%  8% 11% 10%  8%  8% 10%
[libx264 @ 0x55f85748f300] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x55f85748f300] ref P L0: 82.9% 17.1%
[libx264 @ 0x55f85748f300] ref B L0: 95.5%  4.5%
[libx264 @ 0x55f85748f300] ref B L1: 94.7%  5.3%
[libx264 @ 0x55f85748f300] kb/s:6897.03
Conversion failed!
18:41:39 ::   WriteGear   ::  ERROR   :: BrokenPipeError caught, Wrong values passed to FFmpeg Pipe, Kindly Refer Docs!
Output exceeds the size limit. Open the full output data in a text editor
BrokenPipeError                           Traceback (most recent call last)
File ~/anaconda3/envs/myenv3/lib/python3.10/site-packages/vidgear/gears/writegear.py:354, in WriteGear.write(self, frame, rgb_mode)
353 try:
--> 354     self.__process.stdin.write(frame.tobytes())
355 except (OSError, IOError):
356     # log something is wrong!
BrokenPipeError: [Errno 32] Broken pipe
During handling of the above exception, another exception occurred:
ValueError                                Traceback (most recent call last)
/home/sawantkumar/rtsp_to_rtsp/rtsp_to_rtsp_stream.ipynb Cell 4 in <cell line: 68>()
105 rgb = cv2.cvtColor(hr,cv2.COLOR_YUV2RGB)
108 # {do something with the frame here}
--> 109 writer.write(rgb)
111 # check for 'q' key if pressed
112 key = cv2.waitKey(1) & 0xFF
File ~/anaconda3/envs/myenv3/lib/python3.10/site-packages/vidgear/gears/writegear.py:360, in WriteGear.write(self, frame, rgb_mode)
355     except (OSError, IOError):
356         # log something is wrong!
357         logger.error(
358             "BrokenPipeError caught, Wrong values passed to FFmpeg Pipe, Kindly Refer Docs!"
...
362     # otherwise initiate OpenCV's VideoWriter Class
363     if self.__initiate:
364         # start VideoWriter Class process
ValueError:

Error always occurs after frame 46 . I have tried it several times, even using the cv2.videocapture to capture the frames but still, the issue persists

Error always occurs after frame 46 . I have tried it several times, even using the cv2.videocapture to capture the frames but still, the issue persists

@SawantMyelin Do you have RTSP server running at rtsp://localhost:8554/mystream address?

Yes , i do have a rtsp server running at that address, i created it using the simple-rtsp-server.

Then it looks like a corrupted frame. Can you verify testing branch as follows:
 # clone the repository and get inside
  git clone https://github.com/abhiTronix/vidgear.git && cd vidgear

  # checkout the latest testing branch
  git checkout testing

  # install normally
  pip install .[core]

  # OR install with asyncio support
  pip install .[asyncio]

Remember to renamed output_filename string parameter to output in your code.

@SawantMyelin Ok this is the error: https://stackoverflow.com/a/30539963, you need to do this pip install '.[core]'

Thank you , I installed .[core]. What should i do next? Run my code again with this version of vidgear?

Run my code again with this version of vidgear?

@SawantMyelin Yes, see if you get any different error. I think corrupted colorspace frames are getting in.

I did check with the newer version of vidgear that is 0.3.0 and still it crashes exactly after 46 frames.

@SawantMyelin Only way to debug it is to review frames in real time before writing, using cv2.imshow method. Checkout any vidgear examples for it.

@SawantMyelin I'm closing this as I don't see any obvious reason why it is happening other than corrupted source. Try without data manipulation and see if works.


Is there anyway that i can duplicate an existing page twice or more?

is there any way i can modify the page list and show an existing page twice?

No, there's functionality like that in the default viewer (which I'd assume is what you're asking about).
Furthermore, there appears to be no need for doing in the default viewer, so this would also be out-of-scope for the PDF.js project itself.
Closing as answered.

*For future reference: When opening an issue, please provide more information/context than this, since it's quite difficult to understand what's being asked otherwise.


[doc] Fix sw/README.md to indicate the change in build location.

I think #992 beat you to it, though this one includes an additional fix.

Yeah, #992 is unfortunately not quite correct.

This got fixed in  #992, thanks @mcy for the patch and the review in the other PR!


fix(gha/binaries): build on tag push

Tag was not being included on kubectl-binary which causes upgrade to deploy job container using branch rather than the release tag.

I tested this PR with these commands

./scripts/release.sh --image upgrade.job --alias-tag test-tagging-feature
./scripts/release.sh --image "" --alias-tag test-tagging-feature  --build-bins
/nix/store/d54g86ykrfiqxjrgq6ns38fx9kv0mpn4-kubectl-plugin-93126382a97d/bin/kubectl-mayastor upgrade

but the container image is still develop
kubectl get pods mayastor-upgrade-develop-4wbq5  -n mayastor -o yaml | grep image
   image: docker.io/openebs/mayastor-upgrade-job:develop
   imagePullPolicy: IfNotPresent
   image: openebs/mayastor-upgrade-job:develop
   imageID: docker-pullable://openebs/mayastor-upgrade-job@sha256:d593aea1b635d9743ce3cf5dc3ebd353130a4f27454bd1198439d272c0fbab57

I tested this PR with these commands
* ./scripts/release.sh --image upgrade.job --alias-tag test-tagging-feature

* ./scripts/release.sh --image "" --alias-tag test-tagging-feature  --build-bins

* /nix/store/d54g86ykrfiqxjrgq6ns38fx9kv0mpn4-kubectl-plugin-93126382a97d/bin/kubectl-mayastor upgrade

but the container image is still develop
kubectl get pods mayastor-upgrade-develop-4wbq5  -n mayastor -o yaml | grep image
   image: docker.io/openebs/mayastor-upgrade-job:develop
   imagePullPolicy: IfNotPresent
   image: openebs/mayastor-upgrade-job:develop
   imageID: docker-pullable://openebs/mayastor-upgrade-job@sha256:d593aea1b635d9743ce3cf5dc3ebd353130a4f27454bd1198439d272c0fbab57

This PR will not address that, this is just for github actions building the binaries on tag push

bors merge


Create orbital

assignment

assignments

amitmondal1995:patch-1

I have no idea what is going on here.


Tristans/enable concurrent conns

Adding support for multiplexing connections.
There aren't limits, we'll multiplex as much as necessary.
We track the active concurrency on a given connection, and won't prematurely close connections until that concurrency is zero.
Timeout tests are removed for now, as there's no wait and they just fail.
I also made this a module.

Apologies - didnt mean to send this upstream.


Still seeing undeclared UIColor, CGFloat error with latest code

I am trying to add the whole charts directory into my Objective-C project, so the structure is:
ThirdParty
|
ios-charts
|
classes
|
Animation, Charts, Components, Data, Filters, Renderers, Utils
What I changed the project setting:

enable  embedded content contains swift code
Defines Module: YES

I also see the setting shows the $Module_name-Swift.h was set, but I don't see xcode generates it.
After I try build,
It throws lots of errors like undeclared CGFloat, UIColor, etc. I searched the closed issues, but they are not my case. My code is the latest.
What did I miss?

The files having errors:
BubbleChartDataSet.swift, BubbleChartDataEntry.swfit, BubbleChartDataEntry,swift, BubbleChartData.swift, BubbleChartRenderer.swift

Alright, I found that the BubbleChart related swift file is missing something like:
import Foundation
import CoreGraphics.CGBase
import UIKit

Now the question is, I see some files are using import CoreGraphics.CGBase while some are import CoreGraphics, and some are import UIKit, while some are import UIKit.UIColor
I am not if we should follow the small package principle? I am not sure if I use import UIKit.UIColor will better than import UIKit in performance perspective

Same issue here with the swift files drop method (for iOS 7 support). Had to add the imports you specified.


Review DwC mapping

Hi @peterdesmet, @LienReyserhove! The mapping of this dataset is ready. I would like to have your review on the mapping before @LienReyserhove can publish this dataset on GBIF.

[ ] type: should be Event
[ ] license: is CC BY-NC a request by POV?
[ ] rightsHolder: is POV really used as a recognizable acronym for "Provincie Oost-Vlaanderen"? I see it occurring for "Provinciaal Onderwijs Vlaanderen". I would opt to use PCM here, as that seems at least used by Provenciaal Centrum voor Milieuonderzoek: https://oost-vlaanderen.be/wonen-en-leven/natuur-en-milieu/provinciaal-centrumvoormilieuonderzoek.html. I would then also change the shortname and repo name.
[ ] accessRights: these ones are not really applicable here, would drop the term
[ ] institutionCode: same remark as rightsHolder
[ ] datasetTitle: is currently really long (Monitoring of invasive alien species by the Provincial Center of Environmental Research, Province East-Flanders, Belgium). Would opt for Monitoring of invasive alien species by PRM in East Flanders, Belgium
[ ] recordedBy: could be added with same value as institutionCode
[ ] individualCount: empty for all, drop field
[ ] list eventDate right before countryCode (after occurrence terms)
[ ] continent: not (no longer) used for rato-occurrences @LienReyserhove should we drop this for all datasets?
[ ] verbatimLatitude/verbatimLongitude: these are expressed as meters, so round decimal numbers (e.g.<PHONE_NUMBER>9376 -> 192736)
[ ] scientificName: Ludwigia peploides montevidensis should be written as Ludwigia peploides subsp. montevidensis
[ ] taxonRank: would add this term too, before vernacularName. Note that there are genus, species and subspecies

license: is CC BY-NC a request by POV?

Yes

Great @peterdesmet! Thanks. I agree and I will update the mapping.

occurrenceID: why the Exo_? Are the data stored like this?

Yes

occurrenceID: note the rows Exo_337 = Exo_338 and Exo_341 = Exo_343. Maybe those duplicate records should be removed in the source data?

Good catch! I will remove them as first step of the mapping (clening data). The raw csv file comes directly from WFS of province and I would not touch it.

coordinates: a number of records fall outside East Flanders, that makes stateProvince incorrect

You are right. I remove the term.


Language code?

What language ID is this translation for?
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/dd744369(v=ws.10)?redirectedfrom=MSDN
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/available-language-packs-for-windows
Is this?
Chinese (Hong Kong SAR) | zh-HKNote: No longer used. See zh-TW. | 0x0c04 | 3076 -- | -- | -- | --

Yes. What do you want to achieve with this?
In Windows 10, "Hong Kong" region adapts UI in zh-TW (Taiwan). If zh-TW is not available, we will use en-US as application language.
For dev tools like Notepad++, we usually use en-US as main language, not zh-TW nor zh-CN.
I'm also an OEM PC builder. See if I could help.

Yes. What do you want to achieve with this?
In Windows 10, "Hong Kong" region adapts UI in zh-TW (Taiwan). If zh-TW is not available, we will use en-US as application language.
For dev tools like Notepad++, we usually use en-US as main language, not zh-TW nor zh-CN.
I'm also an OEM PC builder. See if I could help.

I‘m the creator of the Notepad++ MSI Setup you can find at https://www.hass.de/content/notepad-msi-package-enterprise-deployment-available
The background why I‘m asking is https://github.com/notepad-plus-plus/notepad-plus-plus/issues/9307 that is stressing me because from time to time new language files appear in npp in an unstructured way with uncommon names. If I know your language file is zh-TW than I can use the language id and can automatically enable your language file for installation in the msi setup.
thanks for your help. If you want to see the MSI setup fully translated I cab share the XML file with you and I can add this setup translation, too. Currently there are some strings untranslated.

I‘m the creator of the Notepad++ MSI Setup you can find at https://www.hass.de/content/notepad-msi-package-enterprise-deployment-available
The background why I‘m asking is https://github.com/notepad-plus-plus/notepad-plus-plus/issues/9307 that is stressing me because from time to time new language files appear in npp in an unstructured way with uncommon names. If I know your language file is zh-TW than I can use the language id and can automatically enable your language file for installation in the msi setup.
thanks for your help. If you want to see the MSI setup fully translated I cab share the XML file with you and I can add this setup translation, too. Currently there are some strings untranslated.

Please make sure:

zh-TW means Taiwan, Traditional Chinese. For Notepad++, please map to "Taiwanese Mandarin": link to file
zh-HK means Hong Kong, Traditional Chinese. For Notepad++, please just map to "English". Yes. English.

I am sorry it makes you stress. But please understand:

Hong Kong people even don't speak exactly in "Yue Chinese". We speak in Cantonese with special tone, with different phrases. i.e., we doesn't share the same culture with (modern) Yue.
We write in Traditional Chinese. It is different with (modern) Yue Chinese that writes in Simplified Chinese. Therefore, for this common mistake, some app setup display Simplified Chinese for us. This is so wrong, and make us angry.

Here is my 2 cents to understand zh-CN/TW/HK:

Country/Region
Write in
Speak in

Hong Kong
Traditional Chinese
Cantonese

Taiwan
Traditional Chinese
Mandarin

China
Simplified Chinese
Mandarin

:)

Please make sure:

zh-TW means Taiwan, Traditional Chinese. For Notepad++, please map to "Taiwanese Mandarin": link to file
zh-HK means Hong Kong, Traditional Chinese. For Notepad++, please just map to "English". Yes. English.

I am sorry it makes you stress. But please understand:

Hong Kong people even don't speak exactly in "Yue Chinese". We speak in Cantonese with special tone, with different phrases. i.e., we doesn't share the same culture with (modern) Yue.
We write in Traditional Chinese. It is different with (modern) Yue Chinese that writes in Simplified Chinese. Therefore, for this common mistake, some app setup display Simplified Chinese for us. This is so wrong, and make us angry.

Here is my 2 cents to understand zh-CN/TW/HK:

Country/Region
Write in
Speak in

Hong Kong
Traditional Chinese
Cantonese

Taiwan
Traditional Chinese
Mandarin

China
Simplified Chinese
Mandarin

:)


Drop mediator not shown in the set of mediators available after an iterate mediator

When trying to add a Drop mediator after an iterate mediator Drop mediator is not shown in the set of available mediators when searching through the mediators. Consider the following code,
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="SplitMessageProxy" startOnLoad="true" transports="http https"
    xmlns="http://ws.apache.org/ns/synapse">
    <target>
        <inSequence>
            <log category="INFO" level="full" />
            <iterate attachPath="//m0:getQuote" expression="//m0:getQuote/m0:request" id=""
                preservePayload="true">
                <target>
                    <sequence>
                    </sequence>
                </target>
            </iterate>
        </inSequence>
        <faultSequence/>
    </target>
</proxy>

The latest release v1.0.5 has resolved the issue. Please reopen if the problem persists.


Workshop attendees were curious why hot reload wasn't working after they change contents of main()

Feedback from a recent workshop. Some participants who edited the contents of main() were curious and surprised when a Hot Reload didn't notice their changes.

Proposal: add a small comment to the starter app, hinting that code inside of main() is NOT hot reloaded.

Yeah, that's why the template app has such a small void main, to push people away from expecting it to hot reload.
We could add a comment there but I'm concerned about the negative effect of having a negative comment ("hot reload doesn't work here") so early in the file, before any positive comments ("hot reload works here!").

I believe @rmacnak-google and @mit-mit are working on a solution here?

cc @devoncarew

@rmacnak-google has notifications for when functions are changed during a reload, but they weren't run during the reassemble (/cc @a-siva). That's hooked into the CLI now, and we have an open issue to hook it into IntelliJ (https://github.com/flutter/flutter-intellij/issues/1398).
Mechanically, it would be harder for people to make changes in the main() method of the create template if we changed it to using the function shorthand (=>) https://github.com/flutter/flutter/blob/master/packages/flutter_tools/templates/create/lib/main.dart.tmpl#L10

I'm a fan of both displaying what was actually reloaded/not reloaded, as well as changing main to =>
Thanks!

Please note it is not just changes to the main method that don't show up, any changes to code that has already executed and is not going to be executed after the reload will have the same issue.
To summarize "As a general rule, if the modified code is downstream of the root widget’s build method, then hot reload behaves as expected. However, if the modified code won’t be re-executed as a result of rebuilding the widget tree, its effects won’t be visible after hot reload".

Thanks for the additional notes!

I'm going to close this; we're dealing with issues like this in general as a high-level work item.


Update copy on various qualification pages

Context
Copy changes needed for subject pages
Changes proposed in this pull request

Simplify yml files and refactor gcse_grade_guidance_component erb and specs
Remove helper method + refactor partial translations

Guidance to review
Verify new copy is the same as the google doc in trello card
Link to Trello card
https://trello.com/c/gZPiZotO/4293-update-copy-on-various-qualification-pages
Things to check

[x] If the code removes any existing feature flags, a data migration has also been added to delete the entry from the database
[x] This code does not rely on migrations in the same Pull Request
[x] If this code includes a migration adding or changing columns, it also backfills existing records for consistency
[x] API release notes have been updated if necessary
[x] Required environment variables have been updated added to the Azure KeyVault

Sorry @JonF1, this wasn't covered in my copy change requests, but I just spotted the following...
When selecting 'Other UK qualification'

The candidate sees this page:

In this scenario, could we change the copy to the following:

Sorry @JonF1, this wasn't covered in my copy change requests, but I just spotted the following...
When selecting 'Other UK qualification' here:

The candidate sees this page:

In this scenario, could we change the copy to the following:

This would apply for not only the English section but the Maths and Science sections too

Good spot! Thanks, I've pushed up the changes


Coloured lighting!

This will add support for coloured lights (and three new "lanterns"). Currently, the colours don't merge properly (and I'm not sure how to fix it).

Also you should squash the merge again.

Hey, sorry for the late reply I am currently on vacation. I didn;t have time for a full review yet, but one thing I noticed is that you pass the emission color via vertex attributes. This leads to high memory consumption.
Let's say we render 4 million voxels for the current frame. The vertices have around 6 vertexes (depends on the occlusion with other voxels), a vec3 uses 32bit*3 = 12 bytes memory. Therefore the total consumption is 4mio * 6 * 12bytes = 288MB. Which is way too much for low-end systems.
So what you should do instead is store the color on a block-type basis.
I will give a quick outline on how this can be achieved. Let me know if you have any more questions.

Create a lookup texture/table (LUT) that stores the emission color for each block ID. This will be a texture with one pixel for each block. Each pixel (vec3) will hold the lighting color for the block, you can pass put (0,0,0) for blocks that don't emit light.
The blockID is already passed to the shader and can be used to access the LUT and fetch the correct lighting color.

Using this system, we only need to pass the block id to the shaders (this is already done) and require one additional texture, the size of the number of blocks. Therefore the only added memory for implementing colored lights would be the size of the lookup texture (which should only be a couple of bytes).
Almost the same mechanism is already implemented for block textures. We store all block textures in one large texture atlas and then access the correct part of the texture using the block ID in the fragment shader.
So you can look at how that is implemented and implement the emission color in a similar manner. Some lines you might want to start looking at: https://github.com/lolleko/voxelscape/blob/master/source/world/vs_chunk_manager.cpp#L162 (Texture atlas is created and passed to the shader.)
https://github.com/lolleko/voxelscape/blob/master/resources/shaders/Chunk.fs#L122 (BlockID is used to read the correct texture from the texture atlas)
This means you probably will have to revert all your C++ changes. Only the LUT creation should be in C++. The rest of the emission coloring should happen in the shader.

Very good thoughts but doesn't the block id in the shaders reference the current block we're rendering so when we index the colour table the id of the current block will be used instead of the light source's id so the colour information would be lost?
Currently I'm passing the colour which the block's light should be which is stored in https://github.com/ajh123/voxelscape/blob/8a2a44a7c3728af98a7f8a963f38fe0b3e70ec70/include/world/vs_chunk_manager.h#L51. This vector is very similar to the new table (but it isn't).


Non-HTTP use cases?

Hi,
How might I achieve non-HTTP tracing?
My example: I have a long-running service that stands up, polls SQS for work to be done, processes the work items in parallel (interacting with other AWS services), and removes the queue items/reservations. It would be valuable to see how these SQS messages interact with the rest of our system.

Cool, that's good to know.
Before I close this, I'll give you an insight into my thought process.
If I can auto-magically get tracing to work with the tiny bits of config and construction-time injection of your SDK: presto-blamo, I'm a happy camper.
But, as soon as I have to start writing custom code to support XRay, I start to think "Jeepers, it sure would be cool if y'all supported OpenTracing." (#31) I know OpenTracing is not a panacea, but it gives at least a little hope that the code I write to support tracing might be able to be vendor-agnostic.
Without either a) super-auto-magical SDK that takes care of all my possible use-cases; or b) a standard framework that lets me swap out vendors; then I start to feel trapped by the AWS hegemony, and I start to ask myself if I actually even need distributed tracing yet.

Hi nelz9999,
Thank you for the feedback. We continue to reach out to the open source community to voice their issues and comments to shape our vision of X-Ray.
We are continuing to expand the X-Ray experience internally to cover these use cases, as we are fully aware the limited nature of the SDK and X-Ray integration with other AWS resources and are striving to remedy it. SQS/SNS support has been a highly requested feature, and we hope to have an easy customer experience for this in the near future.
The issue of standardized tracing data format and APIs is a topic we, of course, are highly interested in. The tracing space is still early into it's life, and evolving quickly. We're excited to see how this influences X-Ray over time.
As always, please keep an eye out on the official forums for future announcements as we venture these uncharted waters together with the open source community.
Thank you, and have a good weekend!
Sandra


Fix the cli

cc @jaredsburrows same as your change to the tarvis file plus ignoring the test thats messing things up

LGTM. Thanks. Why not have my update my old PR, ha?

Wasn't sure if it would be green with just this - thanks for the fix!
On Sun, Sep 10, 2017 at 12:47 PM Jared Burrows<EMAIL_ADDRESS>wrote:

@jaredsburrows approved this pull request.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/square/sqldelight/pull/659#pullrequestreview-61689141,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABmQwFup-dHmHqFI2N2mSGZmPldq26enks5shBKXgaJpZM4PSWB1
.

@AlecStrong, no problem!

Now approve mine fool!


How to use it with unmanaged groups

Is it possible to use is with unmanaged groups ?

Yes, in your groups config it should be equally possible to specify the instance group of an unmanaged group.


[Java/C] Terminate Cluster agents if out of disc when creating publication or subscription.

This PR contains the following changes:

Add StorageSpaceException that is thrown when there is not enough space to create a log buffer.
Translate the above exception into the client visible error code STORAGE_SPACE.
Update the ConsensusModuleAgent/ClusterBackupAgent/ClusteredServiceAgent to terminate upon receiving the RegistrationException with the ErrorCode.STORAGE_SPACE.
Update the C driver to return AERON_ERROR_CODE_STORAGE_SPACE if insufficient storage space when creating log buffers.
Always perform storage checks and deprecate the corresponding configuration options.

It would be useful to have a system test, so that we can check that both the C driver and Java driver send the appropriate storage errors.  I think if we get a AERON_ERROR_CODE_STORAGE_SPACE I think it will come through as AERON_ERROR_CODE_GENERIC_ERROR.
I think the best would be to have the CI scripts create a tmpfs file system will a much smaller size (will need sudo access) such that it will trigger the error.  The test could have an assumption to check for the presence of that file system.  We'd only need to run it on Linux.

@mikeb01 The error translation happens in the aeron_driver_conductor_on_command:
int os_errno = aeron_errcode();
int code = os_errno < 0 ? -os_errno : AERON_ERROR_CODE_GENERIC_ERROR;
aeron_driver_conductor_on_error(conductor, code, aeron_errmsg(), strlen(aeron_errmsg()), correlation_id);
aeron_driver_conductor_log_error(conductor);

and because the check emits -AERON_ERROR_CODE_STORAGE_SPACE it will come out as AERON_ERROR_CODE_STORAGE_SPACE.
I was considering to convert the raw ENOSPC into the AERON_ERROR_CODE_STORAGE_SPACE instead. But that would be different from all other custom errors codes we emit and also will not match Java which only handle insufficient space errors for the log files.
Thanks for the test I'll add it to the PR.

LGTM


Closing CoreGenPortal with multiple SC windows causes segfault

Opening a project and subsequently opening more than one StoneCutter editor window causes a segfault when closing CoreGen

the seg fault also occurs when closing a file with the 'x' button; this may be unrelated

fix implemented; waiting for CI builds to complete

devel tests passed


Add a service-worker to add offline support

Description
The idea would be to add a new service-worker in order to add support for an offline mode.
The offline could just be delivering the necessary homepage with links and disabling all api fetch (like torrents, calendar, etc.)
Priority
Medium (Would be very useful)

Sorry, just saw this right now. Could you provide me with documentation on how to do that ?

Tbh I'm sure exactly how we can do that with nextJS, but I guess there should be packages able of doing this, or we'll need to setup a service-worker manually, able to respond to some http request with cached data

For now I'll put this as “not planned”. I know website like youtube.com cache their whole content but I have no idea how to do it


More cinnamon in pumpkin pie

Closed #13
Cinnamon is delicious and the world needs more of it.

Thank you


What is .yml ?

conda env create -f environment.yml
What does environment.yml mean?

Describe or record your python environment.


Facebook meta tags

Define a default image and text for sharing posts on Facebook.

We have og image and description in the new theme.
But the share buttons don't have a default text, is this a regression or new bug? @robsongajunior

hmmmmmm, it's possible @UltCombo, I will take a look and do correction


build!: drop support for Node 6

BREAKING CHANGE: Node.js is reaching EOL. Stop supporting it.

TBR= @JustinBeckwith


ASP.NET Core Web Application Visual Basic (VB)

From @tb-mtg on December 12, 2017 3:5
Any idea on when we will be able to create new projects for ASP.NET Core Web Application using Visual Basic?
Copied from original issue: dotnet/corefx#25852

From @danmosemsft on December 12, 2017 5:6
@davidfowl ?

Dup of https://github.com/aspnet/Home/issues/2305.


Operator kubemq-operator (1.8.6)

Closing this PR. Repaired the (erroneous) advice I gave Oz Golan and created a new PR.


Fix recursion leading to timeout

Proposal to gracefully manage timeout.
This avoids running into timeout when knowing that a retry will exceed it.

Unfortunately this will not solve the issue that you have. and since this has not been tested I prefer not to merge it for now

I tested: increasing the timeout solves my issue.
Nevertheless, I still think my PR could be of interest.
But you can discard it, if you prefer.


Amplify Console should be able to build only when certain files have been modified

Is your feature request related to a problem? Please describe.
It's annoying and a waste of resources to build & deploy if we modify files that have nothing to do with the code (e.g. README or unit tests)
Describe the solution you'd like
It would be great to have a solution like the one GitHub Actions offers, where we can specify multiple paths to check for modified files:
on:
  push:
    branches:
      - main
    paths:
      - 'src/**'
      - 'infra/**'
      - '.env*'
      - 'cdk.context.json'

you can add [skip-cd] to the end of your commit message to let amplify know not to trigger an automatic build for that particular commit
https://docs.aws.amazon.com/amplify/latest/userguide/build-settings.html#skip-build-for-a-commit

That's a rather inelegant solution though. What if a developer forgets to add [skip-cd] to the commit?
It would be far better to allow a more complex config as GitHub Actions does.

absolutely, I don't disagree. I thought some things in place might help you in the mean time since we know how long it can take feature requests to actually be implemented.

Oh for sure, I know things move slowly at AWS generally. Support asked me to open an issue on GitHub, and the Amplify team will post updates here when they start working on it.

Have we made any progress on this feature request?


Strength/Heaviness Modifiers don't work properly.

Currently, it seems that Strength and Heaviness Modifiers actually set the strength/heaviness to the actors durability +/- 1 for some reason.
To Reproduce:
Go into the editor.
Place Heavy, and an Iron Crate, with ground below. Give Heavy a Strength Plus modifier.
Give Heavy enough moves to reach the crate.
Heavy can not push the crate, despite that an object with Gravity strength, such as Heavy with +1 Strength, should be able to push an Iron Crate, which has a Heaviness of Iron.

Good spot thanks, will be fixed in the next build

... I think this issue can be closed.


Add support for ‘Create React Native Application’ way of using jest

👍 - thanks @anton-matosov - let's get this shipped

You are welcome


Working on rewards refactor (WIP)

Were you planning on coming back to this? I want ahead and updated to master and made a small fix. Use branch rewards-redux.
Code-wise what's there looks good, although dispatching actions from onDaemonReady is possibly a bad practice? (I know I did this, too.)

@kauffj yes, I was planning on coming back to it. I was blocked by a extraneous params error from the backend so left it for a couple of days.

agree on dispatching actions from daemon ready. Was planning to refactor that too at some point :)


python311Packages.griffe: 0.35.0 -> 0.35.1

Diff: https://github.com/mkdocstrings/griffe/compare/refs/tags/0.35.0...0.35.1
Changelog: https://github.com/mkdocstrings/griffe/blob/0.35.1/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 251619 run on x86_64-linux 1

9 packages built:

griffe (python310Packages.griffe)
griffe.dist (python310Packages.griffe.dist)
netbox
python310Packages.mkdocstrings-python
python310Packages.mkdocstrings-python.dist
python311Packages.griffe
python311Packages.griffe.dist
python311Packages.mkdocstrings-python
python311Packages.mkdocstrings-python.dist

Result of nixpkgs-review pr 251619 run on x86_64-linux 1

1 package marked as broken and skipped:

netbox_3_3

9 packages built:

griffe (python310Packages.griffe)
griffe.dist (python310Packages.griffe.dist)
netbox
python310Packages.mkdocstrings-python
python310Packages.mkdocstrings-python.dist
python311Packages.griffe
python311Packages.griffe.dist
python311Packages.mkdocstrings-python
python311Packages.mkdocstrings-python.dist


docs: add collaborator and contributor avatars to README

Type of change

[x] Documentation update

Description
Add avatars and links to collaborators and contributors in the README file to enrich the project acknowledgements.

Hi @chuckhoupt, I'll put your info in the collaborators section of the README, is that okay with you?


Error: undefined symbol: sqlite3_sqliteulid_init

i compiled sqlite_ulid using cargo build -r --target aarch64-linux-android . i get the libsqlite_ulid.so file.i assume this file is a loadable sqlite extension but when i try to load the extension via .load ./libsqlite_ulid , i get the error Error: undefined symbol: sqlite3_sqliteulid_init. please how do i resolve this or how do i build a loadable extension for android

Try renaming the libsqlite_ulid.so file to ulid.so and try again, with .load ./ulid.
Alternatively, try .load ./libsqlite_ulid sqlite3_ulid_init
This is happening because the entrypoint is named sqlite3_ulid_init, and sqlite tries to guess the entrypoint based on the name of the extension file. So it either needs to be called ulid.so (or ulid0.so), or you can instead pass in the entrypoint name manually.

Thank you. both suggestions worked.


fix: setup missing "use"

https://github.com/codeigniter4/shield/blob/45a38424233f4278991616160bed05dbb6193923/src/Commands/Setup.php#L111
'use CodeIgniter\\Config\\BaseConfig;' => 'use CodeIgniter\\Shield\\Config\\Auth as ShieldAuth;',

https://github.com/codeigniter4/shield/blob/45a38424233f4278991616160bed05dbb6193923/src/Commands/Setup.php#L123
'use CodeIgniter\\Config\\BaseConfig;' => 'use CodeIgniter\\Shield\\Config\\AuthGroups as ShieldAuthGroups;',

Hello @jlopes90 ,
To better understand this, you need to know function strtr.
Here is the link strtr  to its description.

eu já testei shield:setup
current: 'use CodeIgniter\\Config\\BaseConfig;' => 'CodeIgniter\\Shield\\Config\\Auth as ShieldAuth;',

modify: 'use CodeIgniter\\Config\\BaseConfig;' => 'use CodeIgniter\\Shield\\Config\\Auth as ShieldAuth;',

@jlopes90 Thanks.
I sent a PR: #220


Unable to install plugin

Anyone else having this issue?
Cannot find framework "/plugins/cordova-plugin-brother-label-printer/src/ios/libs/BRPtouchPrinterKit.framework" for plugin cordova-plugin-brother-label-printer in iOS platform

The SDK used with this plugin was recently updated to the new v4, which is now named "BRLMPrinterKit.framework".

I do see that in the libs directory, just not sure while "cordova build ios" is looking for that specific SDK. :(

Hello @samoka , please make sure you fully uninstall the old version of the plugin ...
and possibly, remove ios and re add ios

Did that multiple times already, even uninstalled the plugin removed all platforms, re installed the plugin and added back the platforms. Android installs with no issue, just iOS that comes up with that error.

Or maybe there are some files somewhere that I still need to clean up 🤷🏿♂

@samoka , please search your codebase for any reference to BRPtouchPrinterKit
I am happy to have a conf call with you to look at this issue

@arcadius thanks so much for the offer, I will do a codebase search and come back to you with findings ASAP

@arcadius might need to take you up on the conf call offer, not making any progress.

@arcadius I see you posted a fix, thanks for that, but looks like we still have some places where BRPtouchPrinterKit is still being imported, e.g BRWLANPrintOperation.h, so building iOS throws an error.

Yes, I know .... looking into it

@samoka , please
cordova plugin rm cordova-plugin-brother-label-printer --save
cordova plugin add cordova-plugin-brother-label-printer --save
Then build your cordova project.
The build will fail on iOS.
1- You then need to open XCode.
2- Click on your project in the target
3- then "General" tab and under General tab ... scroll under "Frameworks, Libraries, and Embedded content"
4- Change the "embed" column to "Embed & Sign" as shown in screenshot below

Then you can build with xcode and publish without any issue.
Please have a go

@arcadius Awesome, will give feedback shortly.

Ok just tried and got the below, also when adding plugin it didn't automatically add the framework i had to add the framework manually, not sure if that might have contributed to this issue?

@samoka , that one is a separate issue ...
In "architecture" you need to choose : build for active architecture only=YES
More at
https://stackoverflow.com/questions/63607158/xcode-12-building-for-ios-simulator-but-linking-in-object-file-built-for-ios

@arcadius ok, will create a blank fresh project just to test this out, my current one seems to have gotten itself into a knot. Will let you know once I have tested so we can marked this as resolved :)

Managed to get it to work on a clean project, so we can mark this as resolved. Thanks @arcadius
With regards to the architecture issue after googling around finally got a fix that worked for me.

@samoka , yes, setting "Validate Workspace" is the correct "workaround" solution for the issue you mentioned.
Note that you should now be able to change this back to "No" to eliminate the warning, if you wish. Xcode 12.3 just needs to add this setting to the project, which setting to "Yes" causes (but also now generates a warning).
The solution that @arcadius mentioned will solve a different problem: "building for iOS Simulator, but linking in Dylib built for iOS". This will occur on Intel Mac when building for Simulator in Release configuration (i.e. "Build for Active Architecture Only" will be set to yes, causing Xcode to generate a UB for simulator which includes "arm64" for M1 processor). If you build for Simulator on M1 Mac, this will occur in BOTH "Debug" and "Release" configurations. The solution in each case is the same, if you run into it: Modify "Excluded Architectures" to exclude "arm64" when building for "Any iOS Simulator SDK"...in either or both Debug and Release configurations. On M1, Xcode will build for "x86_64" instead of "arm64" when attempting to run on the M1 simulator (which presumably will then run successfully under Rosetta).
IMPORTANT NOTE: When you are ready to upload the app to the AppStore, you will run into another problem, because SDK framework lib that is now "embedded" inside the app IPA will contain both Simulator and Device processor slices in the UB (Universal Binary). It will be necessary to remove simulator processors from this framework LIB, because Apple will not allow anything containing simulator processors to be uploaded to AppStoreConnect.
I recommend adding a RunScript to Build Phases.
You may see some examples here:
https://stackoverflow.com/questions/30547283/submit-to-app-store-issues-unsupported-architecture-x86
I've had good success adapting Michael Radinov's comment to Varrry's accepted answer.
Ultimately, the best solution to all of these issues will be to convert the SDK framework to an "xcframework". This will likely be coming in a future SDK release. So, keep an eye out for these future SDK releases.
-Rob

Closing this as @samoka managed to get it working

FYI, the iOS SDK is now distributed as an "xcframework" as of SDK v4.5.1.
So, that should resolve many of these build errors and warnings that began with Xcode12.
-Rob


How to apply vflip parameter?

Hello,
How can I apply vf and vflip parameter to option to flip the picture? I tried this, but it does not work.
var camera = new RaspiCam({ mode : "photo", output : "lol1.jpg", flags : "vf"});

try like this:
var camera = new RaspiCam({
  mode: "photo",
  output: "./stream/image_stream.jpg",
  encoding: "jpg",
  quality: 8,
  width: 480,
  height: 320,
  timeout: 999999999 ,// take the picture immediately
  timelapse: 300,
  thumb: '0:0:0',
  hflip: "-hf",
  vflip: "-vf"
});

It works for me with var camera = new RaspiCam({ vflip: true });;


TS: Convert an array to a ReadonlyArray<>. [phab:D1989]

Created by fromberger at 2017-10-25 01:06:24:
This change is for (future) compatibility with TypeScript 2.5.

evmar wrote at 2017-10-25 14:30:10:
Is this fixing anything, or are you just trying it out?  I vaguely recall some compiler APIs are becoming readonly in this manner in a newer version...

evmar wrote at 2017-10-25 14:32:08:
Ah it's TS2.5.  Can you make the review description mention it's for compat with 2.5?

evmar accepted this revision at 2017-10-25 14:34:03

fromberger wrote at 2017-10-25 14:59:43:

! In (earlier comment), evmar wrote:
Ah it's TS2.5.  Can you make the review description mention it's for compat with 2.5?

Done, thanks.

fromberger closed via commit a25999fd356ccc9f7a1d5c3a9e5b9fd6084785cc at 2017-10-25 15:00:27


Graduation Checklist

Reporter: Jake Farrell / @jfarrell
Assignee: Jake Farrell / @jfarrell
Note: This issue was originally created as PARQUET-260. Please see the migration documentation for further details.

Jake Farrell / @jfarrell:
all step have been completed


backward compatibility

The 3.x branch of pymongo has introduced some breaking changes, including the deprecation of some parameters to functions. In my opinion it is not feasible to support both, version 2.x and 3.x of pymongo, at the same time. You couldn't rely on your mocked code to behave in the same way as the production could (e.g.: the mocked code would accept a parameter that makes your production code explode). If you actually want to use pymongo 2.x in your code, than I'd suggest to use mongomock 2.x. Just install it with
pip install mongomock < 3.0

If you have any features you specifically want to add to the 2.x branch of mongomock make a PR against the support/2.x branch.


Add link to annotation created by createCheck

When a unit test fails and createCheck is true, an annotation is created detailing why the test failed.
Ideally, this annotation would have a link on the right hand side that links to the created check, similar to the "Tests Failed!  Check 'Test Results' for details." annotation that links to the "Test Code Quality" check in this image:

I'm creating this as a separate issue from the main createCheck feature, since I believe it would be useful, and it should be possible, but I haven't found a solution for it yet. Would appreciate help.

Hey there!
The feature/createCheck branch was the one branch that made me start using this test runner system for our projects. Since the branch was merged, I can't seem to use it anymore. Is there a way I can use this feature in GitHub Actions?

Right now you can use @main (which is generally not recommended) but we'll be creating a release soon (in the coming days).

That's perfect! Thanks for at :)
I'll be sure to change it when a release comes out.

@Mannilie FYI, you can do this now:
        uses: game-ci/unity-test-runner@v2
        with:
          githubToken: ${{ secrets.GITHUB_TOKEN }}

I'll be marking this comment and the others as off-topic, so that others can focus on the contents of this issue.


Program aborts when deserializing Option<Box<str>> in 0.7

Came across a niche but fairly serious bug in 0.7.44.
type MyType = Option<Box<str>>;

let orig = MyType::Some(Box::from(""));
let bytes = rkyv::to_bytes::<_, 32>(&orig).unwrap();
let archived = rkyv::check_archived_root::<MyType>(&bytes).unwrap();
let _: MyType =
    <_ as rkyv::Deserialize<_, _>>::deserialize(archived, &mut rkyv::Infallible).unwrap();

thread 'main' panicked at library\core\src\panicking.rs:219:5:
unsafe precondition(s) violated: NonNull::new_unchecked requires that the pointer is non-null
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread caused non-unwinding panic. aborting.

$ cargo +stable --version
cargo 1.80.1 (376290515 2024-07-16)

Fixed by e0acfb5b8c3f8d110a6be0135954f3815f9503be and released in 0.7.45.


Correct sequence of logos in landscape

Bring logos at landscape in same sequence as on website (website is correct). The following obvious changes are necessary:

Resolved with PR #30


Review selection set contents

Hi all.
In Visual Lisp, double-clicking the return value of ssget will list the contents of the selection set. Can you see this in the AutoLisp Extension?
Thank you.

Hi @aspect-ex , it seems the same limitation mentioned in https://github.com/Autodesk-AutoCAD/AutoLispExt/issues/188, so let's track this issue there.
Please correct me if I misunderstand the problem.


[5.3] Throw exception on invalid foreach/forelse

The current code throws an ErrorException saying Undefined offset: 1 which can be
quite confusing for newcomers.
This modification offers an alternative error message that aims at better helping the developer fixing their code.
However, It does not:

add any validations (the preg_match expressions are unchanged)
change the compiled template
break more often (or less often) than the actual code

Google search for laravel undefined offset
Previous discussion : #15226
Thanks for giving it a second look,
Cheers,

Looks sane to me.
The code throws an exception if preg_match returned a falsy value, ie either an error occured, either the regular expression hasn't been found.

I don't want to include this.

@taylorotwell fair enough.


Please add Browser Compatibility to ReadMe

We tried to deploy this at a client site and could not get it to work. It failed during the login. Eventually we realized that it worked with Chrome, IE10 and IE 11, but not with the client's IE9 computers.
The ArcGIS JavaScript API (3.16) supports back to IE 7. There is some code in the index.html to error for IE8.
The requirement is fine since these are old browsers, but would be nice to see it in the doc.

The README was updated in March when this issue was submitted.


[BUG] MiniCPM-Llama3-V 2.5 doesn't work for VLLM mentioned in README

是否已有关于该错误的issue或讨论？ | Is there an existing issue / discussion for this?

[X] 我已经搜索过已有的issues和讨论 | I have searched the existing issues / discussions

该问题是否在FAQ中有解答？ | Is there an existing answer for this in FAQ?

[X] 我已经搜索过FAQ | I have searched FAQ

当前行为 | Current Behavior
I tried https://github.com/OpenBMB/vllm/blob/main/examples/minicpmv_example.py and changed the model to openbmb/MiniCPM-Llama3-V-2_5. And I got this error:
Traceback (most recent call last):
File "/data/tmp/chi/vllm/examples/minicpmv_example.py", line 125, in
model = MiniCPMV_VLLM()
File "/data/tmp/chi/vllm/examples/minicpmv_example.py", line 82, in init
self.llm = LLM(
File "/data/tmp/chi/vllm/vllm/entrypoints/llm.py", line 118, in init
self.llm_engine = LLMEngine.from_engine_args(
File "/data/tmp/chi/vllm/vllm/engine/llm_engine.py", line 277, in from_engine_args
engine = cls(
File "/data/tmp/chi/vllm/vllm/engine/llm_engine.py", line 148, in init
self.model_executor = executor_class(
File "/data/tmp/chi/vllm/vllm/executor/executor_base.py", line 41, in init
self._init_executor()
File "/data/tmp/chi/vllm/vllm/executor/gpu_executor.py", line 22, in _init_executor
self._init_non_spec_worker()
File "/data/tmp/chi/vllm/vllm/executor/gpu_executor.py", line 51, in _init_non_spec_worker
self.driver_worker.load_model()
File "/data/tmp/chi/vllm/vllm/worker/worker.py", line 117, in load_model
self.model_runner.load_model()
File "/data/tmp/chi/vllm/vllm/worker/model_runner.py", line 162, in load_model
self.model = get_model(
File "/data/tmp/chi/vllm/vllm/model_executor/model_loader/init.py", line 19, in get_model
return loader.load_model(model_config=model_config,
File "/data/tmp/chi/vllm/vllm/model_executor/model_loader/loader.py", line 222, in load_model
model = _initialize_model(model_config, self.load_config,
File "/data/tmp/chi/vllm/vllm/model_executor/model_loader/loader.py", line 90, in _initialize_model
return model_class(config=model_config.hf_config,
File "/data/tmp/chi/vllm/vllm/model_executor/models/minicpmv.py", line 202, in init
self.llm = MiniCPMForCausalLM(config, linear_method)
File "/data/tmp/chi/vllm/vllm/model_executor/models/minicpm.py", line 438, in init
self.scale_width = self.config.hidden_size / self.config.dim_model_base
File "/data/tmp/chi/vllm/venv/lib/python3.10/site-packages/transformers/configuration_utils.py", line 264, in getattribute
return super().getattribute(key)
AttributeError: 'MiniCPMVConfig' object has no attribute 'dim_model_base'
期望行为 | Expected Behavior
No response
复现方法 | Steps To Reproduce
No response
运行环境 | Environment
- OS:
- Python:
- Transformers:
- PyTorch:
- CUDA (`python -c 'import torch; print(torch.version.cuda)'`):

备注 | Anything else?
No response

We are working on the feature of deploy MiniCPM-Llama3-V 2.5 with vllm, please stay tuned.

We are working on the feature of deploy MiniCPM-Llama3-V 2.5 with vllm, please stay tuned.

同样出现这个问题，请问现在有优化进展了吗

同样出现这个问题

是否有进展了. 目前不用vllm 是否可以支持并发推理?


format.errors not working on transport level

Please tell us about your environment:

winston version?

[ ] winston@2
[x] winston@3

node -v outputs: v12.16.1
Operating System? macOS
Language? TypeScript ^3.9.7

What is the problem?

When I use format.errors({stack: true}) on logger configuration level, it works as expected. The logger parses JavaScript Error object and prints correctly.
import { createLogger, format, transports } from 'winston';

const logFormatter = format.printf((info) => {
  let { timestamp, level, stack, message } = info;
  message = stack || message;
  return `${timestamp} ${level}: ${message}`;
});

const logToConsole = createLogger({
  level: 'info',
  format: format.errors({ stack: true }),
  transports: [
    new transports.Console({
      format: format.combine(format.colorize(), format.simple(), format.timestamp(), logFormatter),
    }),
  ],
});

const err = new Error('network');
logToConsole.error(err);

Output:
2021-01-22T06:55:25.500Z error: Error: network
    at Object.<anonymous> (/Users/ldu020/workspace/github.com/mrdulin/expressjs-research/src/stackoverflow/65822479/index.ts:19:13)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Module.m._compile (/Users/ldu020/workspace/github.com/mrdulin/expressjs-research/node_modules/ts-node/src/index.ts:858:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Object.require.extensions.<computed> [as .ts] (/Users/ldu020/workspace/github.com/mrdulin/expressjs-research/node_modules/ts-node/src/index.ts:861:12)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at main (/Users/ldu020/workspace/github.com/mrdulin/expressjs-research/node_modules/ts-node/src/bin.ts:227:14)
    at Object.<anonymous> (/Users/ldu020/workspace/github.com/mrdulin/expressjs-research/node_modules/ts-node/src/bin.ts:513:3)

I think the format.errors({ stack: true }) can be used on transport level too. But it doesn't.
import { createLogger, format, transports } from 'winston';

const logFormatter = format.printf((info) => {
  let { timestamp, level, stack, message } = info;
  message = stack || message;
  return `${timestamp} ${level}: ${message}`;
});

const logToConsole = createLogger({
  level: 'info',
  // format: format.errors({ stack: true }),
  transports: [
    new transports.Console({
      format: format.combine(
        format.errors({ stack: true }),
        format.colorize(),
        format.simple(),
        format.timestamp(),
        logFormatter,
      ),
    }),
  ],
});

const err = new Error('network');
logToConsole.error(err);

Output:
2021-01-22T06:58:00.582Z error: undefined

What do you expect to happen instead?

I think the configuration of the logger level is a global configuration, and the configuration of the transport level is the configuration for each transport, and has the highest priority, covering the global configuration.
They are should have the same output.

Setting handleExceptions: true in the transport's options helps, but the error stack is lost.

Setting handleExceptions: true in the transport's options helps, but the error stack is lost.

I open a MR about this subject to handle format type at transporter level

Any news on this?

The winston-transport module "clones" the info object being formatted:
https://github.com/winstonjs/winston-transport/blob/e4a6ce1a0b788d4fe56b4be94c30a3bebe96c2e2/index.js#L90-L94
This leads to only copying enumerable properties, which on Error objects not even message is. So the object itself is pretty much blank at that point (at the very least devoid of any Error properties).
Since the error formatter is expecting an Error (or at least an error object inside a message property) it does nothing.
An alternative that could work as it is right now:
logToConsole.error({
   message: err
});

Which I guess you can monkey patch on the class instance.
const logError = logToConsole.error.bind(logToConsole);
logToConsole.error = (message) => logError({ message });

I'll just point out that the log formatter (that is, the one that's on the logger itself) does not receive a copy of an object but the object itself.

In my use case, I found that setting errors: true globally interferes with exception logging in a separate file. It turns out that if the option is enabled, undefined gets logged if logging in a separate file.
https://github.com/winstonjs/winston/issues/2195


QUIC offload: Standardizing User-Kernel interface

There are a few points worth mentioning for the User-Kernel API. Depending on the use case, the destination L3/L4 and connection ID might not be sufficient. There are cloud use cases that use ephemeral destination ports and zero-length connection ID while sharing the same transmitting socket on the server side. This particular use case would require the source connection ID information to be part of the hash/key lookup value. Most of these complications in finding an encryption key to match the flow come from the specific use cases and QUIC being UDP based and not always using connected sockets.
Supporting Linux approach to minimize the lookup on transmit to 0, matching the flow in hardware by hash might be a slowing part. It would also increase the memory pressure to hold more information about the flow than needed to perform the lookup, as well as the pressure on caching some flow data and doing DRAM lookup for other. Having an index allocated for each key at least on Tx could be a benefit.
This brings another discussion about making such a change - the setsockopt/getsockopt aren't a very good candidates to do a bidirectional conversation between user and kernel. Historically, their buffers were used to silently carry information backwards into user app in the provided buffer, but with the increased use of BPF this became a no-go; the original buffer is not delivered to ULP as it would in the earlier versions of the Linux kernel anymore. A more up-to-date approach using Netlink sockets could be needed for it.
Receive path should do the lookup, though, which is unavoidable. And here again, the lookup wouldn't be enough for a triad, and rather would need a source L3/L4 information to correctly map the key in the hardware.
Weighing pros and cons for kernel-only QUIC encryption offload demonstrated that the hardware support is required to make it successful and justified.
The level of hardware support is yet to be seen. It might cover as minimum as encryption and decryption; it might do key rotation and next packet ID handling internally in the hardware. Validating and weighing all these options shows that the control plane of QUIC should rather stay within the QUIC library in user space, with the hardware doing bare minimum to deliver improvements to the two main areas: memory bandwidth and CPU usage.
Having said this, it would also be necessary to define the data path transmission - which attributed to send down to the hardware: connection ID length is a must to have, the next packet ID might also be needed if at some point the hardware would bypass the crypto offload back to software due to reconfiguration or other inabilities to operate. Later resynchronization would be necessary if the sequence is maintained separately between the hardware and the software.
The packet layout itself would require calibration of the user space code in terms of the preallocated space for QUIC header, filling it with values, preallocating space for UDP and IPv6 to minimize copies, use of MSG_ZEROCOPY on the path, adaptation of the same logic for use cases where a bypass engine is working as a transmission intermediary instead of a kernel, etc. GSO fragment size in all these cases must be considered as it's requested by the use space application as well.
Also, socket might not be the only mechanism in a non-bypass operation. The io_uring is another method of delivering data, which could be used by applications in connection with custom kernel support if needed.

Note - In the future, please separate out different topics into separate GitHub issues

There are a few points worth mentioning for the User-Kernel API. Depending on the use case, the destination L3/L4 and connection ID might not be sufficient. There are cloud use cases that use ephemeral destination ports and zero-length connection ID while sharing the same transmitting socket on the server side. This particular use case would require the source connection ID information to be part of the hash/key lookup value. Most of these complications in finding an encryption key to match the flow come from the specific use cases and QUIC being UDP based and not always using connected sockets.
Supporting Linux approach to minimize the lookup on transmit to 0, matching the flow in hardware by hash might be a slowing part. It would also increase the memory pressure to hold more information about the flow than needed to perform the lookup, as well as the pressure on caching some flow data and doing DRAM lookup for other. Having an index allocated for each key at least on Tx could be a benefit.

I assuming having the index of the previously offloaded key would solve all the problems above, right? Though this does bring up an issue of access control. You have to make sure one app doesn't try to use the keys from another. Having a simple index might make it easier to steal/use another app's key.

This brings another discussion about making such a change - the setsockopt/getsockopt aren't a very good candidates to do a bidirectional conversation between user and kernel. Historically, their buffers were used to silently carry information backwards into user app in the provided buffer, but with the increased use of BPF this became a no-go; the original buffer is not delivered to ULP as it would in the earlier versions of the Linux kernel anymore. A more up-to-date approach using Netlink sockets could be needed for it.

I don't know anything about "Netlink sockets". Would you mind elaborating or providing a good pointer to better understand? How would this work cross platform?

The level of hardware support is yet to be seen. It might cover as minimum as encryption and decryption; it might do key rotation and next packet ID handling internally in the hardware. Validating and weighing all these options shows that the control plane of QUIC should rather stay within the QUIC library in user space, with the hardware doing bare minimum to deliver improvements to the two main areas: memory bandwidth and CPU usage.

Agreed. The actual QUIC stack would own key rotation and any complicated logic of what and when to provision to the HW. The HW just uses what it has to do the CPU intensive work.

Having said this, it would also be necessary to define the data path transmission - which attributed to send down to the hardware: connection ID length is a must to have, the next packet ID might also be needed if at some point the hardware would bypass the crypto offload back to software due to reconfiguration or other inabilities to operate. Later resynchronization would be necessary if the sequence is maintained separately between the hardware and the software.

Currently, there is discussion on artificially requiring the same connection ID length globally, to reduce complexity on the HW. If we do this, then the length doens't have to be passed down on the send path.

The packet layout itself would require calibration of the user space code in terms of the preallocated space for QUIC header, filling it with values, preallocating space for UDP and IPv6 to minimize copies, use of MSG_ZEROCOPY on the path, adaptation of the same logic for use cases where a bypass engine is working as a transmission intermediary instead of a kernel, etc. GSO fragment size in all these cases must be considered as it's requested by the use space application as well.

Needing to preallocate space for UDP and IPv6 is slightly orthogonal to QEO, IMHO. It could be helpful even without QEO.


⚠ Bofrost.de has degraded performance

In 6c1bd0f, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 815 ms

Resolved: Bofrost.de performance has improved in 0e26ebd.


Fix type

It was the first time I saw/used **kwargs, spent 15 minutes figuring out why my script wouldn't work! Then realized it was just a typo. :)

merged into our forked repo: https://github.com/teracyhq/flask-classy/commit/ef266cc0869e36d44f6a47f70d6b8f4e26431913


Type definitions should not be accepted after value definitions

Type definitions should not be accepted after the first value definition. E.g., the following program should be rejected by the parser.
game Error_TypeDefinitionAfterValueDefinition

x : Int
x = 3

type Foo = {A,B}

y : Foo
y = A

For whoever is interested it would be worth looking at Parser.hs 477-479. This allows declarations to be mixed with type defs. Removing the type defs here would prevent this from happening, but one would also need to make sure type defs can follow an input type def as seen in Parser.hs 528.


feat(fix):[TRI-XXX] fix owasp vulnerabilities findings

Fix owasp vulnerabilities findings

According to https://nvd.nist.gov/vuln/detail/CVE-2022-42003, we can mitigate this by disabling the UNWRAP_SINGLE_VALUE_ARRAYS setting (is this even enabled?).
Then we could suppress the finding afterwards.

Not relevant anymore


There should be a way to import bookmarks form other browsers.

There should be a way to be able to import bookmarks (maybe other things too) from other browsers, such as FireFox.
Maybe something like an import bookmarks button.

Thanks for your suggestion, we are still trying to implement the functionality you mentioned.  At the same time, this feature is also what Google wants to implement.

Okay thanks.


run rancher2.2.0 on arm64 server

can i run a rancher server on a arm64 server?
i have already imported a arm64 k8s cluster to be managed by rancher2.1.1 ,but i want to run a rancher server on arm64 server , does release 2.2.0 support this ?

See https://rancher.com/docs/rancher/v2.x/en/installation/arm64-platform/


does cast kodi modify the web page when it's not being used?

from a privacy/anti-fingerprinting POV, i'm wondering if the add-on can be detected by a site when it's not being used - does it modify the page in any way?
i tried to determine this using the console and i'm not seeing any difference whether it's enabled or disabled, but i'd like confirmation

Cast Kodi never modifies web pages. When you don't use Cast Kodi, it doesn't do anything. And when you cast a video/music, it sends AJAX requests to retrieve the URL of the video/music in the page.

thank you!


Short code to full code recovery has a bug

In some cases, recovering a short code to a full code does not return the nearest match.
Calling recoverNearest('22+', 14.9333, -23.5125) returns 796RXF22+. This is not correct - the nearest match is 796RXG22+.
The problem seems to be with the step where the reference latitude and longitude are rounded down before generating the candidate code. In the above example, it should generate a code whose center is at most .05 degrees from the reference location, but due to the rounding down it is .08 degrees away.
It appears that removing the rounding down step entirely fixes this.

Some more detail. Rounding the reference location, can result in a padding section that is more than one cell away from the correct position. The reason this is happening is that the code is using Math.floor. Either changing this to Math.round, or removing it entirely, fixes the problem.


Merging code_cleaning branch into nextjs-migrate branch

Description 📝

Merging code_cleaning branch into nextjs-migrate branch to get the changes which has been done till now.

Hey @PiyushKalyanpy
As you have already made some changes to get started with migration, so I'm merging them into this branch.

This PR can't be merged :

the change will impact the main site original design, which we do not want.
these many changes can't be merged as a contributor for this repo.
no issue has been raised for this pr.

you can leave the migration part for some time, at least till GSSOC'23 completion.

सुप्रभात Piyush,
Actually, I wish to complete it under GDSoC as it will also be valuable for me in my GSSoC journey.
Can we have a quick video meet today to understand your perspective and plan for migration?
धन्यवाद

This PR can't be merged :

the change will impact the main site original design, which we do not want.
these many changes can't be merged as a contributor for this repo.
no issue has been raised for this pr.

you can leave the migration part for some time, at least till GSSOC'23 completion.

सुप्रभात Piyush, Actually, I wish to complete the migration under GSSoC as it will also be valuable for me in my GSSoC journey. Can we have a quick video meet today to understand your perspective and plan for migration? धन्यवाद

Hey Tushar, We will not migrate our project for now.
You can contribute to these pages :

(by adding profile edit section with backend connected ) - https://gyanaguru.vercel.app/dashboard/profile
(by fixing like option ) - https://gyanaguru.vercel.app/courses/playlist/video/UoMgCUwyuW6q33oun7tl
(by designing the dashboard page with backend) - https://gyanaguru.vercel.app/dashboard
(by adding a new page for enrolling into the course ( showing button to enroll and details of the course. - https://gyanaguru.vercel.app/courses/playlist/DxGVDY02UKXsRoSe1wJX


Fix issue where kubernetesDashboard params weren't being added despite e enabling the dashboard addon

This PR fixes a regression introduced in release v0.23.0 . Fixes #4078

Sure. I can do that for other add-ons as well. In this instance, ill rename it to dashboardIndex

That okay?

@jackfrancis Review comments addressed.

/lgtm


added webCompat as a docs page

Added some basic support for documenting Web Compat features - something to build upon

Current dependencies on/for this PR:

main

PR #690   👈

This comment was auto-generated by Graphite.

Some errors in the build though.


Determine necessity of ja argument to ImmutableKey._make_random_key

Transferred from #79

This isn't necessary, and is deprecated in python 3.x. This will eventually be handled in the tech refresh.

Just to confirm, what are you saying is unnecessary? The ja argument or the _make_random_key method or something else? How does that relate to Python 3? Sorry for asking a question that everyone else might understand already 😄


Add option to skip RateLimitTransport

As RateLimitTransport requires requests not to be concurrent (https://github.com/terraform-providers/terraform-provider-github/pull/145), this PR adds the option to skip that.
Many users will not hit the 5000 requests per hour stated by Github or can handle it manually. Making all requests serially to everyone adds a time burden that small teams do not need to handle, thus could be explicitly skipped.

Hey there!
Is there anything else I can do for this to be approved/applied?
My TF plans are taking 10 minutes in the PR, 10 more minutes after merging, just to add a user in a team.

Hi @emoreth !
Thank you for the PR, I appreciate the opportunity to rethink how we want to approach this issue.  My concern with allowing unlimited concurrency is that the majority of the users who use the provider will likely hit the abuse rate limits.  From my understanding, the abuse rate limits are different than the normal rate limits that include the 5000 requests/hour that you referred to.
Rate limiting: https://developer.github.com/v3/#rate-limiting
Abuse rate limits: https://developer.github.com/v3/#abuse-rate-limits
It appears to me that making multiple concurrent requests would trigger these abuse rate limits, thus, in order to not abuse GitHub’s API, I think it’s safe we don’t open that up.  That being said, perhaps we could re-think a different approach that is less restricting, something that could be agreed upon by all users.
One thought we had was perhaps making only 2 parallel requests at a time and seeing how that performs, and if it triggers the abuse rate limits.  I haven’t tested that yet, so we’d have to see how that works.  There is a concern with that as well, that it is going against GitHub’s documented best practice (https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)

Make requests for a single user or client ID serially. Do not make requests for a single user or client ID concurrently.

Thanks!
Megan

Hi @megan07 !
Thank you for your response and I totally agree with your concern in not abusing any limits, and I think that GitHub knows that Terraform is not a form of abuse.
I'm currently managing a GitHub account with ~200 memberships, ~140 repositories, ~77 teams, ~150 associations with teams and repositories and ~500 associations with teams and memberships. On top of that, every change needs to be planned on a PR and replanned/executed after merge. Still, all these operations get to around 2.1K requests, which takes ~30 minutes. When using an older version of the plugin it cuts down to ~10 minutes.
With that said, I don't have more than 2~5 GitHub change requests a day, which takes me almost 3 hours to apply.
The setting I added was inactive by default, so whoever wants to manage it manually can opt-in. Currently, it would be way easier for me to coordinate with my team to handle hitting the API limits than having to wait for those plans.
I do think that github-provider should not validate every single user/repo/etc separately (as GitHub has endpoints that return multiple results) but I lack go skills to send you that PR.
Since it took 23 days to get an answer for this PR, I'll wait for your approval to fix these conflicts.
Regards,
Everton

@emoreth have you looked at partitioning your github organization(s) into multiple states and using data sources / remote states to share references between them? Given how github rate limits (which IMO leaves much to be desired) it seems wasteful to check every single object every time you make a change in your entire org. At my org each team or business unit has its own state where its memberships, repositories, etc live in. This acts as a natural limiter to your calls. I also manage several very large orgs with hundreds of users, repositories, branch protections, issue labels, repo topics, webhooks, etc. Even with these logical separations I ran into rate limits quite easily before adding caching and limiting the concurrency but things are still generally well under 10 minutes for our larger teams leaving the smaller teams quite snappy.
I have hit both types of rate limits with this provider they are both concerns but I can't quite recall how often or in what scenarios I have seen the abuse vs normal rate limits.

@majormoses I totally agree that you have to comply with the limits, I'm just adding an opt-out for people who won't hit the limit and/or can manage by themselves.
Making it serially just adds time for everyone.

@emoreth I agree, I was trying to provide a suggestion to help improve outside of the context of the PR. I agree we should have a way to disable caching. If someone opts into a less efficient solution for your "api budget", it makes sense to allow as they just raise their chances of exhausting the api budget. I am still in favor of supporting this I was just pointing out there are ways to negate the need and still keep the time more reasonable.


<Tunnel_Group_Name> must not contain dots "." and slashes "/"

Additionally to be case sensitve, the <Tunnel_Group_Name> must not contain dots "." and slashes "/", maybe this can be added to the notes.

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

ID: d242e95c-09e5-91ae-6075-be736201df09
Version Independent ID: 95899322-7404-6e42-97f4-cf1726fade97
Content: Tutorial: Azure Active Directory single sign-on (SSO) integration with Cisco AnyConnect - Microsoft Entra
Content Source: articles/active-directory/saas-apps/cisco-anyconnect.md
Service: active-directory
Sub-service: saas-app-tutorial
GitHub Login: @jeevansd
Microsoft Alias: jeedes

@tobiasabele
I'm going to assign this to the document author so they can take a look at it accordingly.
@jeevansd
Can you please check and add your comments on this doc update request as applicable.

@tobiasabele, updating the doc with the suggested note.
#please-close


TRACE_EVENT expands to 3 statements

It seems TRACE_EVENT expands to 3 statements.  That might not work with
if (some_condition)
    TRACE_EVENT(...);

without braces.

You can fix that with a do { /* ...what was in TRACE_EVENT before... */ } while (false) statement.

That will fail
{
  TRACE_EVENT(...);
  function_that_is_slow_and_is_to_be_traced();
}

Oh you are right, there really is no way around it.


I called Listen on an SSH Client, and then started an HTTP server on the Listener. When an HTTP Get was received on the HTTP server, I tried to call Hijack on the ResponseWriter.
For context, the purpose of the Hijack was to upgrade the connection to a Websocket; Hijack was called indirectly by github.com/gorilla/websocket.
See the attached program which reproduces the issue on Linux.
hijack_unresponsive_repro.tar.gz
What did you see happen?
Hijack hung forever.
What did you expect to see?
I expected Hijack to return.
The reason seems to be that Hijack tries to abort any pending reads on the connection before returning it to the caller of Hijack. In this scenario there is indeed a pending read, because the http server is trying to read data using http.*connReader).backgroundRead. Hijack tries to abort the pending read by setting the read deadline of the connection to a time that has already passed using SetReadDeadline, and then waits for the read to be aborted by waiting on a condition variable which gets signalled when the read unblocks.
However, the SSH channel struct which implements the connection that HTTP is using does not support SetReadDeadline. Thus, the read is never terminated and so the Hijack method blocks forever.
See the following gorouting stacktraces for what I believe is the cause:
goroutine 94 [sync.Cond.Wait, 32 minutes]:
sync.runtime_notifyListWait(0xc001ece490, 0x0)
  /home/jeffwill/Downloads/go-1.21.4/src/runtime/sema.go:527 +0x159
sync.(*Cond).Wait(0xc0015ac060?)
  /home/jeffwill/Downloads/go-1.21.4/src/sync/cond.go:70 +0x85
net/http.(*connReader).abortPendingRead(0xc0015ac060)
  /home/jeffwill/Downloads/go-1.21.4/src/net/http/server.go:731 +0xa6
net/http.(*conn).hijackLocked(0xc002f94870)
  /home/jeffwill/Downloads/go-1.21.4/src/net/http/server.go:320 +0x33
net/http.(*response).Hijack(0xc00205c540)
  /home/jeffwill/Downloads/go-1.21.4/src/net/http/server.go:2086 +0xd0
github.com/gorilla/websocket.(*Upgrader).Upgrade(0xc006f4f930, {0x12f6b98, 0xc00205c540}, 0xc0000f3800, 0x10c?)
  /home/jeffwill/gows/pkg/mod/github.com/gorilla/websocket@v1.5.3/server.go:180 +0x3d7
main.ApiHandler.serveWebsocket({}, 0xc000afe6c0, {0x12f6b98, 0xc00205c540}, 0xc0000f3800)
  /home/jeffwill/src/anvil-suite/anvil/src/anvil/api.go:880 +0x145
main.ApiHandler.ServeHTTP({}, {0x12f6b98, 0xc00205c540}, 0xc0000f3800)
  /home/jeffwill/src/anvil-suite/anvil/src/anvil/api.go:130 +0x65a
net/http.serverHandler.ServeHTTP({0xc0015ac060?}, {0x12f6b98?, 0xc00205c540?}, 0x6?)
  /home/jeffwill/Downloads/go-1.21.4/src/net/http/server.go:2938 +0x8e
net/http.(*conn).serve(0xc002f94870, {0x12f81b0, 0xc00158c870})
  /home/jeffwill/Downloads/go-1.21.4/src/net/http/server.go:2009 +0x5f4
created by net/http.(*Server).Serve in goroutine 98
  /home/jeffwill/Downloads/go-1.21.4/src/net/http/server.go:3086 +0x5cb

goroutine 106 [sync.Cond.Wait, 32 minutes]:
sync.runtime_notifyListWait(0xc001ece390, 0x1)
  /home/jeffwill/Downloads/go-1.21.4/src/runtime/sema.go:527 +0x159
sync.(*Cond).Wait(0x60?)
  /home/jeffwill/Downloads/go-1.21.4/src/sync/cond.go:70 +0x85
golang.org/x/crypto/ssh.(*buffer).Read(0xc001274440, {0xc0015ac071, 0x1, 0x1})
  /home/jeffwill/gows/pkg/mod/golang.org/x/crypto@v0.0.0-20211209193657-4570a0811e8b/ssh/buffer.go:94 +0x1fb
golang.org/x/crypto/ssh.(*channel).ReadExtended(0xc000eab380, {0xc0015ac071?, 0xc00158cdb0?, 0x0?}, 0x0?)
  /home/jeffwill/gows/pkg/mod/golang.org/x/crypto@v0.0.0-20211209193657-4570a0811e8b/ssh/channel.go:351 +0x93
golang.org/x/crypto/ssh.(*channel).Read(0xc00251ff78?, {0xc0015ac071?, 0xc00158cdb0?, 0xc002f94750?})
  /home/jeffwill/gows/pkg/mod/golang.org/x/crypto@v0.0.0-20211209193657-4570a0811e8b/ssh/channel.go:528 +0x25
net/http.(*connReader).backgroundRead(0xc0015ac060)
  /home/jeffwill/Downloads/go-1.21.4/src/net/http/server.go:683 +0x37
created by net/http.(*connReader).startBackgroundRead in goroutine 94
  /home/jeffwill/Downloads/go-1.21.4/src/net/http/server.go:679 +0xba

One way to fix the issue is to implement SetReadDeadline on the channel. I've attached a patch that implements it and solves this particular starvation issue, but requires more thorough testing.
An alternative solution might be to provide the user a mechanism in the HTTP package to prevent background reads. I assume the background read is just an optimization to help improve response times, in which case having a method to disable it seems reasonable.
One other thought is that some other protocol for aborting the read could be supported between the HTTP package and the underlying connection to abort any pending reads, rather than relying on SetReadDeadline. Perhaps the connection could be checked to see if it implements an Aborter interface with an Abort method, and if present that method could be called before SetReadDeadline. That could reduce the need to implement full support for SetReadDeadline in ssh.channel and instead just implement a simpler functionality.
add-read-deadline.patch

Related Issues and Documentation

net/http,x/crypto/ssh: Hijack hangs when underlying net.Conn doesn't support SetReadDeadline #67152
net/http: gorilla/websocket.Upgrade will be blocked in http.(*response).Hijack #20963 (closed)
Stuck Hijack() on net.Conn compatible I/O server rnet/http.(*conn).hijackLocked  #48167 (closed)
internal/poll: deadlock when SetReadDeadline and Read race (on net.UnixConn) #68273 (closed)
x/crypto/ssh: Dial function with ClientConfig Timeout got stuck #46536 (closed)
net/http: hijack blocked sometimes #23280 (closed)
x/net/http2: Stuck http requests #56385
net/http: http2 via Forward Proxy block on getClientConn because of deadlock #49377 (closed)
x/net/http2: Blocked Write on single connection causes all future calls to block indefinitely #33425 (closed)
x/net/http2:  Above go1.19, the server cannot send packets to the client #56753 (closed)

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)

Duplicate of #67152


No way to read from buffer？

i want to use this package to implemnet a lru cache, but i need a way to read latest n item from the buffer, can you provide something like:  latest :: Vector v a => RingBuffer v a -> Int -> IO a ?

Sure. Give me a few minutes.

@winterland1989 released as 0.2.0.

Thanks!


Add firmware version to sentry reports

Add the firmware version to sentry errors to make it easier to tell where issues came from

Related to #96