Ceton, Direct Stream Breaks with Second Device

OK, a bit perplexed here - was sure this was working the other day, but now I'm getting a bit of an odd error. If I set up direct with Ceton, the first tuner is fine. For example, tuning to Ch. 593, log info below. And ... tuner status in API is fine / correct. Ceton in the UI not showing quite right, but it wasn't before => longer story there 🤣. Perhaps this is being used now, but I'm not sure. In any case, this all looks very normal to me, and working well.
[2022-02-27 10:01:46,748] p757639 {/mnt/ProgSSD/fHDHR/fHDHR_web/__init__.py:168} - DEBUG - Client GET requested /api/tuners Opening
[2022-02-27 10:01:46,755] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:70} - DEBUG - Instantiating Stream_OBJ Object
[2022-02-27 10:01:46,756] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:123} - DEBUG - Attempting to gather stream information for ceton channel 593 Golf HD Golf HD.
[2022-02-27 10:01:46,807] p757639 {/mnt/ProgSSD/fHDHR/plugins/fHDHR_plugin_origin_ceton/origin/__init__.py:79} - INFO - Selected Ceton tuner#: 0
[2022-02-27 10:01:46,808] p757639 {/mnt/ProgSSD/fHDHR/plugins/fHDHR_plugin_origin_ceton/origin/__init__.py:91} - INFO - Ceton tuner 0 to be started
[2022-02-27 10:01:46,935] p757639 {/mnt/ProgSSD/fHDHR/plugins/fHDHR_plugin_origin_ceton/origin/__init__.py:206} - INFO - Preparing Ceton tuner 0 on port: 43222
[2022-02-27 10:01:47,729] p757639 {/mnt/ProgSSD/fHDHR/plugins/fHDHR_plugin_origin_ceton/origin/__init__.py:220} - INFO - Initiate PCIe direct streaming, channel 593 from Ceton tuner#: 0
[2022-02-27 10:01:47,730] p757639 {/mnt/ProgSSD/fHDHR/plugins/fHDHR_plugin_origin_ceton/origin/__init__.py:225} - INFO - Ceton tuner 0 streamurl set, to: /dev/ceton/ctn91xx_mpeg0_0
[2022-02-27 10:01:47,731] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:99} - INFO - Attempting to Select an available tuner for this stream.
[2022-02-27 10:01:47,732] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/device/tuners/tuner.py:76} - INFO - Tuner #0 Acquired.
[2022-02-27 10:01:47,733] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:107} - INFO - ceton Tuner #0 to be used for stream.
[2022-02-27 10:01:47,734] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:109} - INFO - Preparing Stream...
[2022-02-27 10:01:47,734] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:62} - INFO - Stream Method Detected as a /dev/ hardware device.
[2022-02-27 10:01:47,735] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:73} - INFO - Client has requested stream for ceton channel 593 Golf HD Golf HD.
[2022-02-27 10:01:47,735] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:79} - INFO - Selected Stream Parameters:method=direct duration=0 origin_quality=None transcode_quality=None.
[2022-02-27 10:01:47,736] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:112} - INFO - Tuning Stream...
[2022-02-27 10:01:47,737] p757639 {/mnt/ProgSSD/fHDHR/fHDHR_web/__init__.py:182} - DEBUG - Client GET requested /api/tuners Closing
[2022-02-27 10:01:47,740] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:27} - INFO - Direct Hardware Stream from device: /dev/ceton/ctn91xx_mpeg0_0
[2022-02-27 10:01:47,740] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:36} - DEBUG - Operating System is: Linux
[2022-02-27 10:01:47,741] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:37} - DEBUG - Command is: cat /dev/ceton/ctn91xx_mpeg0_0
[2022-02-27 10:01:48,356] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:46} - DEBUG - Pulling Chunk fHDHR/fHDHR#1
[2022-02-27 10:01:48,358] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:156} - DEBUG - Adding Chunk fHDHR/fHDHR#1 to the buffer.
[2022-02-27 10:01:48,359] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:213} - DEBUG - Buffer has 1/3 chunks. Continuing to build buffer. Not Serving chunk(s).

But then, with the above running, I try to add a client, to use Ch. 570. All heck breaks loose ... LOL. Log info below.
[2022-02-27 10:06:20,161] p757639 {/mnt/ProgSSD/fHDHR/fHDHR_web/__init__.py:168} - DEBUG - Client GET requested /api/tuners Opening
[2022-02-27 10:06:20,166] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:70} - DEBUG - Instantiating Stream_OBJ Object
[2022-02-27 10:06:20,167] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:123} - DEBUG - Attempting to gather stream information for ceton channel 570 ESPN HD ESPN HD.
[2022-02-27 10:06:20,193] p757639 {/mnt/ProgSSD/fHDHR/plugins/fHDHR_plugin_origin_ceton/origin/__init__.py:79} - INFO - Selected Ceton tuner#: 0
[2022-02-27 10:06:20,195] p757639 {/mnt/ProgSSD/fHDHR/plugins/fHDHR_plugin_origin_ceton/origin/__init__.py:91} - INFO - Ceton tuner 0 to be started
[2022-02-27 10:06:20,264] p757639 {/mnt/ProgSSD/fHDHR/plugins/fHDHR_plugin_origin_ceton/origin/__init__.py:206} - INFO - Preparing Ceton tuner 0 on port: 45476
[2022-02-27 10:06:20,280] p757639 {/mnt/ProgSSD/fHDHR/fHDHR_web/__init__.py:168} - DEBUG - Client GET requested /api/tuners Opening
[2022-02-27 10:06:20,283] p757639 {/mnt/ProgSSD/fHDHR/fHDHR_web/__init__.py:182} - DEBUG - Client GET requested /api/tuners Closing
[2022-02-27 10:06:20,287] p757639 {/home/rmorris/.local/lib/python3.9/site-packages/gevent/pywsgi.py:1226} - INFO - <IP_ADDRESS> - - [2022-02-27 10:06:20] "GET /api/tuners?method=status HTTP/1.1" 200 4504 0.007796
[2022-02-27 10:06:21,162] p757639 {/mnt/ProgSSD/fHDHR/plugins/fHDHR_plugin_origin_ceton/origin/__init__.py:220} - INFO - Initiate PCIe direct streaming, channel 570 from Ceton tuner#: 0
[2022-02-27 10:06:21,164] p757639 {/mnt/ProgSSD/fHDHR/plugins/fHDHR_plugin_origin_ceton/origin/__init__.py:225} - INFO - Ceton tuner 0 streamurl set, to: /dev/ceton/ctn91xx_mpeg0_0
[2022-02-27 10:06:21,166] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:99} - INFO - Attempting to Select an available tuner for this stream.
[2022-02-27 10:06:21,167] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/device/tuners/tuner.py:76} - INFO - Tuner fHDHR/fHDHR#1 Acquired.
[2022-02-27 10:06:21,168] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:107} - INFO - ceton Tuner fHDHR/fHDHR#1 to be used for stream.
[2022-02-27 10:06:21,169] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:109} - INFO - Preparing Stream...
[2022-02-27 10:06:21,170] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:62} - INFO - Stream Method Detected as a /dev/ hardware device.
[2022-02-27 10:06:21,171] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:73} - INFO - Client has requested stream for ceton channel 570 ESPN HD ESPN HD.
[2022-02-27 10:06:21,173] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:79} - INFO - Selected Stream Parameters:method=direct duration=0 origin_quality=None transcode_quality=None.
[2022-02-27 10:06:21,174] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:112} - INFO - Tuning Stream...
[2022-02-27 10:06:21,175] p757639 {/mnt/ProgSSD/fHDHR/fHDHR_web/__init__.py:182} - DEBUG - Client GET requested /api/tuners Closing
[2022-02-27 10:06:21,178] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:27} - INFO - Direct Hardware Stream from device: /dev/ceton/ctn91xx_mpeg0_0
[2022-02-27 10:06:21,179] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:36} - DEBUG - Operating System is: Linux
[2022-02-27 10:06:21,180] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:37} - DEBUG - Command is: cat /dev/ceton/ctn91xx_mpeg0_0
cat: /dev/ceton/ctn91xx_mpeg0_0: Device or resource busy
[2022-02-27 10:06:21,194] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:46} - DEBUG - Pulling Chunk fHDHR/fHDHR#1
[2022-02-27 10:06:21,197] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:27} - INFO - Direct Hardware Stream from device: /dev/ceton/ctn91xx_mpeg0_0
[2022-02-27 10:06:21,199] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:36} - DEBUG - Operating System is: Linux
[2022-02-27 10:06:21,200] p757639 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/direct_hardware_stream.py:37} - DEBUG - Command is: cat /dev/ceton/ctn91xx_mpeg0_0
cat: /dev/ceton/ctn91xx_mpeg0_0: Device or resource busy

OK, looking at this a bit more closely => fHDHR is selecting Tuner 1, but Ceton is saying Tuner 0. Hmmm ... and then direct_hardware_stream goes with the Ceton (plugin) selection - is that right? Did it used to do that? If it were to use the info from the (fHDHR) API, then the selection would all be correct. I may have this wrong, by all means comment. And - did this logic change recently?
Thanks!

Agreed! And I believe it is - it even returns the instance number (I THINK ... 😆), but that doesn't seem to be used "upstream". It should be (used), no?
Thanks!

so I'm pretty sure the way I wrote
def get_channel_stream`(tuner_number, stream_args):
    # get your streamurl somehow
    stream_info = {"url": streamurl}
    return stream_info

you can in theory pass other things in the stream_info dictionary, such as ceton_tuner_number which should be usable in prime_stream and close_stream

Sorry, you lost me there 😞. Likely me though.
I do see Ceton selecting Tuner 1 (if 0 is in use), and it should return the instance, from,
    def get_channel_stream(self, chandict, stream_args):

        found, instance = self.get_ceton_tuner_status(chandict)

But fHDHR is using Tuner 0 => ignoring the instance that is returned? Or are you saying that this instance (value) should be returned in a certain key (inside stream_info), and then it will be used "above"? What is that key (as I assume it's a fixed value, the same for all origins to return)?
Thanks!

I was just saying there's an easy way to track what Ceton tuner you are using

Sorry - do you mean ... in the plugin, track the mapping? So "top level" = 0 aligns to ceton = 1? I was thinking they should be the same, but understand if not ... and the plugin needs to track this?

No panic, but if you would - let me know your thoughts on this. If the mapping needs to be maintained in the plugin ... no issue, I'll work on getting that addressed.
And ... can information be "freely" added to stream_args? Thinking this may be a way to maintain the mapping.
Thanks!

That's what I was trying to say before. Yes, information can be added back to the stream args

OK, got it - wasn't quite sure that was what you meant. And also if I could freely add something 😆.
Sometimes I need a 🏒  to the side of the head ... LOL.
Thanks!

Well ... LOL. OK, not sure this quite works yet. Here's why I say so,

I started fHDHR, and then through the Ceton UI ... took Tuner 0 into use for another application.
Requested a channel through fHDHR. It works, as below,

[2022-03-09 13:41:37,853] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:115} - DEBUG - Client requested the channel 4c309db8-6bd7-4853-82b1-1730309e4c55
[2022-03-09 13:41:37,854] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:125} - DEBUG - Channel information has been determined as: Channel=593 Origin=ceton
[2022-03-09 13:41:37,855] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:146} - DEBUG - Parsing URL arguments for stream handling.
[2022-03-09 13:41:37,856] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:155} - DEBUG - Client did not select a stream method. Defaulting to origin ceton setting of ffmpeg
[2022-03-09 13:41:37,857] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:165} - DEBUG - Client did not specify a duration to end the stream, stream will run indefinately.
[2022-03-09 13:41:37,858] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:173} - DEBUG - Client did not select a transcode quality. Defaulting to origin ceton setting of custom
[2022-03-09 13:41:37,858] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:181} - DEBUG - Client did not specify a tuner number, automatic selection enabled.
[2022-03-09 13:41:37,859] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:188} - DEBUG - Logging information regarding how the client has accessed the stream.
[2022-03-09 13:41:37,860] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:208} - DEBUG - Pulling default settings for %s regarding stream handling: origin_quality=None bytes_per_read=1152000 buffer_size=3 stream_restore_attempts=3
[2022-03-09 13:41:37,860] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/__init__.py:61} - DEBUG - Instantiating Stream_OBJ Object
[2022-03-09 13:41:37,860] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:127} - DEBUG - Attempting to gather stream information for ceton channel 593 Golf HD Golf HD.
[2022-03-09 13:41:38,105] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/plugins/plugin_logger.py:27} - INFO - [ceton] Selected Ceton tuner#: 1
[2022-03-09 13:41:38,107] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/plugins/plugin_logger.py:27} - INFO - [ceton] Ceton tuner 1 to be started
[2022-03-09 13:41:38,283] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/plugins/plugin_logger.py:27} - INFO - [ceton] Preparing Ceton tuner 1 on port: 44285
[2022-03-09 13:41:38,971] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/plugins/plugin_logger.py:27} - INFO - [ceton] Initiate PCIe direct streaming, channel 593 from Ceton tuner#: 1
[2022-03-09 13:41:38,972] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:103} - INFO - Attempting to Select an available tuner for this stream.
[2022-03-09 13:41:38,973] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/device/tuners/tuner.py:75} - INFO - Tuner #0 Acquired.
[2022-03-09 13:41:38,974] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:111} - INFO - ceton Tuner #0 to be used for stream.
[2022-03-09 13:41:38,975] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:113} - INFO - Preparing Stream...
[2022-03-09 13:41:38,976] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:77} - INFO - Client has requested stream for ceton channel 593 Golf HD Golf HD.
[2022-03-09 13:41:38,976] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream_obj.py:83} - INFO - Selected Stream Parameters:method=ffmpeg duration=0 origin_quality=None transcode_quality=custom.
[2022-03-09 13:41:38,977] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:104} - INFO - Tuning Stream...

So, Ceton is Tuner 1, fHDHR sees it as 0. NP, I could try to add a mapping, as fHDHR seems to call get_channel_stream(self, chandict, stream_args) to start the process ... I could store the needed info in stream_args, as you mention.

When I try to stop, I don't get stream_args back 😞. Rather, it seems to be calling close_stream(self, instance, args) directly, using the instance value from fHDHR, not Ceton => I close the wrong tuner ... and I do see that, in the logs (below), and also Ceton UI,

[2022-03-09 13:41:45,814] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/origins/origin.py:159} - INFO - Running ceton close_stream method.
[2022-03-09 13:41:45,815] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/plugins/plugin_logger.py:27} - INFO - [ceton] Closing Ceton tuner 0
[2022-03-09 13:41:45,816] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/plugins/plugin_logger.py:27} - INFO - [ceton] Ceton tuner 0 to be stopped

Make sense? And agreed?
BTW, a few other observations from the logs,

I have buffer_size = 0 in my config.ini, but it seems to be using, [2022-03-09 13:40:55,190] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/origins/origin.py:59} - DEBUG - Setting ceton Origin Configuration buffer_size=3?
I also have set, config.ini, bytes_per_read = 1152000, but

[2022-03-09 13:41:42,022] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:197} - DEBUG - Serving Chunk #8: size 65569
[2022-03-09 13:41:42,023] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:202} - DEBUG - Removing chunk #8 from the buffer.
[2022-03-09 13:41:42,024] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:150} - DEBUG - Adding Chunk #11 to the buffer.
[2022-03-09 13:41:42,024] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:189} - DEBUG - Buffer has 3/3 chunks. Allowing buffer reduction due to buffer at capacity. Serving 1 chunk(s).
[2022-03-09 13:41:42,025] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:197} - DEBUG - Serving Chunk #9: size 5449
[2022-03-09 13:41:42,026] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:202} - DEBUG - Removing chunk #9 from the buffer.
[2022-03-09 13:41:42,027] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:150} - DEBUG - Adding Chunk #12 to the buffer.
[2022-03-09 13:41:42,027] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/streammanager/stream/__init__.py:189} - DEBUG - Buffer has 3/3 chunks. Allowing buffer reduction due to buffer at capacity. Serving 1 chunk(s).

The file name in the log entry isn't looking to be right? For example, this is inside the ceton plugin, init.py, but not shown that way?

[2022-03-09 13:41:38,105] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/plugins/plugin_logger.py:27} - INFO - [ceton] Selected Ceton tuner#: 1
[2022-03-09 13:41:38,107] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/plugins/plugin_logger.py:27} - INFO - [ceton] Ceton tuner 1 to be started
[2022-03-09 13:41:38,283] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/plugins/plugin_logger.py:27} - INFO - [ceton] Preparing Ceton tuner 1 on port: 44285
[2022-03-09 13:41:38,971] p1124821 {/mnt/ProgSSD/fHDHR/fHDHR/plugins/plugin_logger.py:27} - INFO - [ceton] Initiate PCIe direct streaming, channel 593 from Ceton tuner#: 1

Thanks!

the "instance" variable in the ceton plugin is really the fhdhr tuner number. what you want is within the stream_args dict

Right, that makes sense ... but I just checked, that instance is not in stream_args ... so when setting up the tuner, not sure how to map the fHDHR tuner number to the one ceton selects. Or am I missing it?

Fhdhr doesn't manage that for the plugin, that's up to the plugin to do based on the information given

Agreed! But the stream close calls with an instance number, yet that value is never provided before => how to figure out the mapping then?
Thanks!

By adding that information to the stream args along with the url

Yes, definitely agreed! But I don't see that the fHDHR instance is sent until closing, i.e. the first time it seems to be used is in close_stream ... so no way to figure out that mapping (I think at least). If it were sent in the stream_args, or as a parameter to get_channel_stream, then NP at all. But it seems like it's only used to close the stream - so I'm not seeing how to store the mapping.

/me shakes head,,, I feel like you're so close to the answer but not reading what I'm typing.....
def get_channel_stream(tuner_number, stream_args):
    streamurl = "whatever"
    ceton_tuner_number = whatever_number
    stream_info = {
                             "url": streamurl,
                             "ceton_tuner_number":  ceton_tuner_number
                             }
    return stream_info

def prime_stream(self, fhdhr_tuner_number, stream_args):
    ceton_tuner_number  = stream_args["stream_info"]["ceton_tuner_number"]
    self.startstop_ceton_tuner(ceton_tuner_number, 0)
    return

def close_stream(self, fhdhr_tuner_number, stream_args:
    ceton_tuner_number  = stream_args["stream_info"]["ceton_tuner_number"]
    self.startstop_ceton_tuner(ceton_tuner_number, 0)
    return

it really doesn't matter if the fHDHR tuner number corresponds with the ceton tuner number
but that's a provided method for you to pick the ceton tuner during the initial instantiation of the stream

/me shakes head,,, I feel like you're so close to the answer but not reading what I'm typing.....

I think I am ... 🤣. I'm not ignoring, just not quite getting it - sorry!

def get_channel_stream(fhdhr_tuner_number, stream_args):

Yes, this would work! But what is there is get_channel_stream(self, chandict, stream_args) => have no idea what the fhdhr_tuner_number is. But, I think I see where the problem lies now, and it's not really this ... 😄

close_stream(self, fhdhr_tuner_number, stream_args:

Yep, and that would be fine as well! But, I think I see what got me (mislead). In ceton, it calls out, close_stream(self, instance, args) ... and args is light gray, as not used. I get the feeling it's actually stream_args (not really "args" ... meaning something different), which I can make work then. Need to check of course, and can't right now (can't restart to debug). But will get back to you.
Thanks for keeping on pushing!

BTW, I do still see the other items noted above - like buffer_size, and the file name in the log. Just so you know.
Thanks!

Yep, and that would be fine as well! But, I think I see what got me (mislead). In ceton, it calls out, close_stream(self, instance, args) ... and args is light gray, as not used. I get the feeling it's actually stream_args (not really "args" ... meaning something different), which I can make work then. Need to check of course, and can't right now (can't restart to debug). But will get back to you.

Yep, that was it ... that naming (and grayed out) was what confused me. Sorry about that. I think I have this working now ... using stream_args, and inside that, stream_info. Let me just test a bit more to make sure, then will push a PR to ceton.
Thanks!

I'm not putting plugin specific stuff in core. That's why they are plugins

NP, understand. Just thought that mapping may be handy.
Thanks!

OK, PR submitted, #33 - working here, tracks ceton itself.
Close this, or address the other items mentioned above (e.g. buffer_size, etc.)? Whatever you prefer.
Thanks!

And one more quick question, as I'm trying to make use of the output from this API (api/tuners?method=status). Lots of good info in there, but the stream_info is not shown? Any chance it could be?
Thanks!!

I'm trying to decide on moving tuners under origins like I did channels

NP, gotcha - whatever you thinks makes sense. In parallel, I'm looking at adding the stream_info inside the ceton API, another option that may work. I admit - struggling with it a bit, it's not liking me adding a dictionary (or list) inside a dictionary inside ceton (i.e. config.dict["ceton"]["tunerstatus"][]).
Thanks!

Actually, it's almost like I can't write to config.dict outside of __init__. Still digging why, but would that make sense to you?
Thanks!

Because plugins intentionally have a nerfed wrapper around logging, db, config

Also the config dict is not the place to put tuner status

I'm open to suggestions, no issue at all! Just need it to be accessible in the API 😆.
Thanks!

In __init__ put self.tunerstatus ={}

Will do! Wasn't thinking that would be accessible in the API. Thanks!

Then in your api, use self.plugin_utils.origin_obj.tunerstatus

It's almost like I thought methods for these thing would be useful

It's almost like I thought methods for these thing would be useful

Very cool, makes 100% sense. Nice and clean too - origin object. I like it!

I'm glad you got this working.  Since I only was using a single 'client; to access the plugin, I never got it out of sync.
And if you want to present the relationship between Ceton tuner and fHDHR tuner, you could add that to the Ceton status page.

And if you want to present the relationship between Ceton tuner and fHDHR tuner, you could add that to the Ceton status page.

Yep, makes sense - but inside Ceton, we don't know the fhdhr instance ... agreed? At least I don't think we do 😆.

Closing this one - yell if you disagreed! But addressed I believe, #33. Will follow the other issues (vars not being used) in the Testing Talk thread.
Thanks!


docs: add aws eks instructions

the integrations hub looks a little clunky, but i may have to fix that after we merge.


provision: Refactor version tuple generation logic.

Previous tuple generation logic was throwing an error parsing version like 3.6.7rc1
because micro-versions like '7rc1' cannot be converted into integer.
Fix #482

@timabbott   @rishig , I would really appreciate it if you could please review this one.

Nice, merged, thanks @ujjwalrox!


pioneer: 20210723 -> 20220203

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/pioneerspacesim/pioneer/releases.
meta.description for pioneer is: "A space adventure game set in the Milky Way galaxy at the turn of the 31st century"
meta.homepage for pioneer is: "https://pioneerspacesim.net"
meta.changelog for pioneer is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
Warning: no invocation of /nix/store/1hi94dpq1csr7px7f8fh9xjx4kpzw1hx-pioneer-20220203/bin/pioneer had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/1hi94dpq1csr7px7f8fh9xjx4kpzw1hx-pioneer-20220203/bin/modelcompiler had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/1hi94dpq1csr7px7f8fh9xjx4kpzw1hx-pioneer-20220203/bin/savegamedump had a zero exit code or showed the expected version
0 of 3 passed binary check by having a zero exit code.
0 of 3 passed binary check by having the new version present in output.
found 20220203 with grep in /nix/store/1hi94dpq1csr7px7f8fh9xjx4kpzw1hx-pioneer-20220203
found 20220203 in filename of file in /nix/store/1hi94dpq1csr7px7f8fh9xjx4kpzw1hx-pioneer-20220203

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
0 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
pioneer

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/1hi94dpq1csr7px7f8fh9xjx4kpzw1hx-pioneer-20220203 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A pioneer https://github.com/r-ryantm/nixpkgs/archive/35465a2ded1236a624bc098566d400c9d5471f19.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/1hi94dpq1csr7px7f8fh9xjx4kpzw1hx-pioneer-20220203
ls -la /nix/store/1hi94dpq1csr7px7f8fh9xjx4kpzw1hx-pioneer-20220203/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

pioneer

Maintainer pings

@ofborg eval


UX Design - Complete Scanning/Tagging Design - post research

Title of ticket: UX Design - Complete Scanning/Tagging Design - post research
Description
Continuing design work on for Scanning & Tagging once all remaining queries are answered after 2nd round of research
Dependencies
Are there any dependencies?
DOD

[x] User flow of current state
[x]  User flow of proposed state
[x]  Rough draft of screens
[x]  Review with Lise
[x]  Update Designs and Prototype

This is a tentative 5 depending on the findings from the research

https://jacklyn808742.invisionapp.com/console/share/8QVPHCNXSGA/985966790
Closing ticket - we will be running the first iteration design past the scanning team next week


Added transform for Nuget web.config transform

The transform in the project causes a line to be added in the target web.config. However, if that line already exists (i.e. when updating Nuget packages) it still gets added and you end up with 2 entries. This is valid in a web.config file and the last entry is the one that gets used. Took me a while to figure out I had multiple entries after updating my packages today so thought I'd supply this fix.
This change uses the standard Microsoft transform syntax to only update the existing entry. Nuget info is here if needed.

Very nice!

Just as I got the notification that you merged my PR I had a minor moment of panic. My change just makes the transform update an existing key but will never create one for the new people installing from fresh. D'oh! The correct code should be:
<add key="RouteDebugger:Enabled" value="true"
    xdt:Transform="InsertIfMissing" xdt:Locator="Match(key)"/>

Note that it's now InsertIfMissing which makes perfect sense. This one has the added benefit that it won't overwrite an existing value so if a user has it disabled, it won't re-enable it.
(PS Love the gif though thanks!)

Ah! Want to submit a new PR?


Can you explain why batch_input size ?

Hello,
I am a beginner to neural networks. Can you explain why
batch_input_ = tf.transpose(batch_input, perm=[2, 0, 1])
X = tf.transpose(batch_input_) ?
I know this is equivalent to
X = tf.transpose(batch_input, perm = [1,0,2]
but why do we need to reshape batch_input size and can you explain more about batch input size?
Thank you

This is in the vanilla RNN

Hello @Bikachu,
@KnHuq is using tf.scan() to iterate through time steps in the data and compute hidden state. If you take a look at the method vanilla_rnn() of the class, you would notice hidden states being computed for a single time step. This method is passed to tf.scan() as the function.
The first argument in method definition is previous_hidden_state h(t-1).  tf.scan() initializes this with initial_hidden which is created in the __init__(). The computed current_hidden_state is h(t).
Second argument x, which would take the shape (# samples, input_dim) is unwrapped by tf.scan() from self.processed_input (time_step, # samples, input_dim) along the first dimension, hence he has reshaped the data to have the first dimension as the time step. vanilla_rnn() would be run for each x, which is the time step and hidden states are computed.
He is considering each column of pixels in an MNIST image as one time step.


Add support for diagnostics settings for app service, redis cache, sqldb, and loadbalancers

thanks for the contribution @v-jorsengtan!


[improve][pip] PIP-366: Support to specify different config for Configuration and Local Metadata Store

Motivation
Implementation PR for PIP: https://github.com/apache/pulsar/pull/23033.
Modifications
Support to specify different config for Configuration and Local Metadata Store in zk and oxia impl
Documentation

[ ] doc
[ ] doc-required
[x] doc-not-needed
[ ] doc-complete

Codecov Report
Attention: Patch coverage is 85.71429% with 4 lines in your changes missing coverage. Please review.

Project coverage is 73.44%. Comparing base (bbc6224) to head (a10c79d).
Report is 488 commits behind head on master.

Files
Patch %
Lines

...n/java/org/apache/pulsar/broker/PulsarService.java
50.00%
1 Missing and 1 partial :warning:

...he/pulsar/metadata/impl/PulsarZooKeeperClient.java
80.00%
2 Missing :warning:

Additional details and impacted files

@@             Coverage Diff              @@
##             master   #23041      +/-   ##
============================================
- Coverage     73.57%   73.44%   -0.14%
- Complexity    32624    33521     +897
============================================
  Files          1877     1917      +40
  Lines        139502   144082    +4580
  Branches      15299    15744     +445
============================================
+ Hits         102638   105819    +3181
- Misses        28908    30152    +1244
- Partials       7956     8111     +155

Flag
Coverage Δ

inttests
27.52% <64.28%> (+2.94%)
:arrow_up:

systests
24.76% <35.71%> (+0.44%)
:arrow_up:

unittests
72.52% <85.71%> (-0.33%)
:arrow_down:

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

Files
Coverage Δ

...org/apache/pulsar/broker/ServiceConfiguration.java
99.03% <100.00%> (-0.37%)
:arrow_down:

...g/apache/pulsar/metadata/impl/ZKMetadataStore.java
85.66% <100.00%> (+0.41%)
:arrow_up:

...e/pulsar/metadata/impl/oxia/OxiaMetadataStore.java
87.67% <100.00%> (-2.33%)
:arrow_down:

...n/java/org/apache/pulsar/broker/PulsarService.java
83.91% <50.00%> (+1.54%)
:arrow_up:

...he/pulsar/metadata/impl/PulsarZooKeeperClient.java
42.43% <80.00%> (+0.70%)
:arrow_up:

... and 513 files with indirect coverage changes


Disk storage of DWPC matrices

Refs #74
We would like to cache the DWPC matrices on disk, with the ability to rapidly read them. I looked into several different storage methods. HDF5 has a nice Python (somewhat) wrapper called PyTables, which seems useful. In addition, there is a native Numpy/Scipy saving format, .npy/.npz. In a quick notebook example I did earlier today, these two methods seem to read back matrices at comparable speeds (~4.3 ms). With this in mind, I will do some more rigorous speed tests in the next few days, and I will use this issue to organize updates.

Nice!

these two methods seem to read back matrices at comparable speeds (~4.3 ms)

That's 233 matrii per second. Not bad. Now what dimension was this matrix? I assume a GxG matrix will take a double-order of mag longer to read in than a DxD.
Some other considerations:

we will want to store information on node identity, such as a dataframe of their identifiers and names.  This doesn't necessarily need to be part of the matrix data store, but with HDF5 it could be?

memory-mapping could be a big plus in some cases. For example, if someone provides 0-weight for most seed nodes, we don't actually have to read most rows of the matrix (only the rows with nonzero seed weights). How good will each format be for either memory-mapped, subsetted, or piecewise reading?

I'd be happy to work on this. Now that the hetio PR is merged, I will make a notebook to explore the approximate size of storing these matrices. I'm not sure about the theoretical side of log1p to save space, but I can experiment and find how much space is required one way or the other.

I will make a notebook to explore the approximate size of storing these matrices.

Awesome! Let's also edit the existing notebook in explore to investigate the following, as per discussion in https://github.com/numpy/numpy/issues/10852#issuecomment-379310284:

I don't think we tested whether doing "scipy.sparse @ memmap" acheives the same efficiency as the subset method. @zietzm let's see what happens to the runtime in the non-subsetted multiplication if we make vector a scipy.sparse matrix.


Which ImageNet-100?

Hi all,
First of all, thank you so much for creating this library, I have found it to be super useful for my own research!
I was wondering if you could provide some details on the ImageNet-100 dataset that you used? I cannot seem to find any "standard" ImageNet-100 dataset for downloading on the internet and the papers that use this dataset (eg. 1 and 2) seem to randomly select 100 classes from the dataset.
Any of your help would be much appreciated!

Hey,
Thanks for the comments! We are glad that this is useful for other researchers :)
About imagenet-100, you can get the list of classes from here.
We will probably add this list to our repo somewhere to avoid confusion.

Hi all,
First of all, thank you so much for creating this library, I have found it to be super useful for my own research!
I was wondering if you could provide some details on the ImageNet-100 dataset that you used? I cannot seem to find any "standard" ImageNet-100 dataset for downloading on the internet and the papers that use this dataset (eg. 1 and 2) seem to randomly select 100 classes from the dataset.
Any of your help would be much appreciated!

This repo is very useful tiny image-net to download images

thanks, I'll check it out

Hi @vturrisi, thanks for the swift response! Apologies, I should have done a more thorough search of the closed issues!
One more question: do you use all the images in these 100 classes?
@ankitpatnala thanks for sharing the repo :)

@YugeTen no worries! And yes, we use all the images, both for the self-supervised pertaining and the linear classifier.

Thank you!

Hey,
Thanks for the comments! We are glad that this is useful for other researchers :) About imagenet-100, you can get the list of classes from here. We will probably add this list to our repo somewhere to avoid confusion.

@vturrisi Hi! Thank you for your update of pretrained checkpoints in the model zoo recently! I hope to use the checkpoint on ImageNet-100 for some evaluations, and I have downloaded the dataset as you said from here. However, I still have a question:
What's the order of class in the final 100-dim predictions? I mean, with  the pretained checkpoint in the model zoo,  what class is  each dimension in the final 100-dim prediction logit?
Thank you very much!

Hey @YingYingFight
Just sort the labels and you will get the correct order, e.g., labels = sorted(Path(entry.name) for entry in os.scandir(data_path) if entry.is_dir()).

name
@vturrisi Thank you for your reply!

I wonder does the entry.name is like n02869837 or the class name like dog?
Thank you!

it's the former (n02869837)

it's the former (n02869837).

@vturrisi
Got it! Thank you very much for your help!

No worries! Thanks for using the library :)


Notebooks kernel is opening up a separate cmd window

Azure Data Studio Version: insiders.

Steps to Reproduce:

Open a notebook with python kernel

See a separate cmd window

I'm assuming this is related to the kusto magic stuff

@anthonydresser, yes. @gupta1 is looking into this already.

Fixed by #9871 for new users (and for April) to remove kqlmagic as a default package.
To fix this problem in insiders/dev builds, you can uninstall the kqlmagic python package through the manage packages button, and the cmd window will no longer appear.


Experiment: Automation of full Nextclade runs

Description of proposed changes
I am experimenting with possible implementations of automation of full Nextclade reruns in ingest.
This branch combines #214 as well as the pre-release Nextclade binary (f5a1ef8 (#215), this bit still needs some thought).
And while we are on it, I also added:

#168
#213

to the mix. These features require full reruns, so if this experiment succeeds, we can add them in one go.
Related issue(s)

#214

Testing
Let's run it and see if something breaks :boom:

I realized that we don't need to mix the usual ingest flow with Nextclade full run. It can be made separate. The new version is here: https://github.com/nextstrain/ncov-ingest/pull/218/files


Support bastion updates

OpenStackClusterTemplate.spec in https://github.com/giantswarm/cluster-openstack is immutable by default. According to comments of the upstream community, there is a way to update bastion configuration by disabling&re-enabling it. We need to verify it.

@kopiczko do we still need this issue with the current bastions on demand approach?

This is already implemented on upstream side. https://github.com/kubernetes-sigs/cluster-api-provider-openstack/issues/1298

so we can close this issue @ericgraf ?

I think we should re-discuss whether we want to enable bastion by default or not.

I'd say let's enable them by default, that will make it easier to use opsctl ssh powers. If this is not what we want long term I'd change that later.


LFX: Implement NodeJS Client

Description
Use Rust client as the core client and compile it to a native library for Node FFI, like Python client and C++ client.
Document Collection

Neon

LFX Program information

Mentor of this issue: @andylokandy @iosmanthus
Recommended skills: Rust / JS / TypeScript
Estimated Workloads: 3 Man-Month

Milestones and action items
Milestone 1: Implement the full-featured NodeJS client, Expected finish date: July 15th, 2021

[ ] Implment RawClient
[ ] Implment TransactionClient

[ ] Implement Transaction
[ ] Implement Snapshot

[ ] Implement sync API

Milestone 2: Make it GA, Expected finish date: August 20th, 2021

[ ] Write docs and
[ ] Add integration tests

I think the core client proposal is linked to https://github.com/tikv/tikv/issues/9922

/assign @Mossaka

Do we have any plan for this? @andylokandy

@634750802 Thank you for taking interest in this program. This program has been assigned to @Mossaka and being developed in https://github.com/Mossaka/client-node.

@Mossaka Would you like to assign yourself?

@Mossaka Would you like to assign yourself?

Sure

/assign @Mossaka


command and args

Hello,
this module looks easy and I like it, I manage to adjust the colors, locations and dimensions. I would like to order a light by http request.
command: "curl"
args: "http: //xxx.xxx.x.xx: xxxx / json.htm? type = command & param = switchlight & idx = xx & switchcmd = On"
But (I'm a beginner) it doesn't work.
In command line, it's ok ...
Also, could I have an example to change the color of the button according to the state of my lamp!
My requests may be silly, I apologize in advance.
Thank you

Hi,
first of all: There are no silly questions.
The module is kept very simple and does not validate any return codes so it will not be possible to change the color.
It looks like your url contains characters which need to be escaped. Maybe you can try an online url encoder like  https://meyerweb.com/eric/tools/dencoder/ to encode it and and the escaped string to the config.
Greets
Thomas

ok thanks for your quick response.
I will try your solution in a few days and tell you the rest.
Fab.

It does not work ...
On the command line: ~ $ curl "http: //xxx.xxx.x.xx: xxxx / json.htm? Type = command & param = switchlight & idx = xx & switchcmd = Toggle"  , it's good! Without  " " , not good. So how can I add  " "  to my config?
I hope to be clear.
Thank you

Hi,
I think there will be two possible ways... Either remove all spaces from the part within the double quotes or alternatively put the string in single quotes and double quotes.
It may be helpful to use the absolute path of the curl command ("which curl" at the command line will find the location).

Well i will try your instructions.
Thanks

Hello,
thank you so much,
with command: "curl" and url: '"http ..... On"' (put the string in single quotes and double quotes.) , it works perfectly!
I can now create switches for my Domoticz devices.
Great
Fab.

👍

Hi and sorry, I am currently building my new home and forgot to answer. Currently there is no possibility to add an title or something more than the icon to the buttons. I do not think it's a great deal to add such a feature but really do not have much time to program. I also like the idea to validate the return codes.
Maybe I will have time to give it a try in the new year. I will add two feature requests so it won't be forgotten.

Hello,
I also built my house, and I know the work that it represents!
I didn't want to bother you for the module but just close the conversation (error on my part).
I managed to duplicate the module to have several buttons on my different pages and that's great!
Thank you again and good luck ...
Fab

@Fabaude Hi, i do not know if you still use my module. I release a new version today which makes it possible to set different icons based on the output/return code of the called command. So it might be possible to change the icon based on the state of your lamp now

Hello, I still use your module and this new version is welcome!  I will try to understand the new config and adapt it to my MM... A big thank you.
PS: I hope you are well in your new home!
Fab

Great to hear that you still use my module and thank you we live now in hour house. Still some small work to do but the main parts are ready. Cause of a torn ligament (happened during the last small work) i do have some time to code at the moment.
Your old configuration still should work without changes but with the new "conditions" you can change the icons or add classes (which can be used to change the color of the icon and things like that).

Hello, I did the update and I get a black screen when starting MM... I will look into more detail in the coming days.  Speedy recovery !

Oh, not good.
Did you do the
npm installl

Dependencies changed with this version. Maybe a library is missing.

Sorry, but i needed to a release a new version, again.
There was a bug which caused the module not to start if no additional classes had been set. Version 0.0.3 should work now.

Ok, I'll do an update tonight if the agenda allows me.  Thanks

hello, I'll admit that the update saves me!  I had tried to find my problem and the new version put everything back in place.  Thanks a lot.


StripTags & strip_tags

Hello,
I have some problems with the StripTags filter...
Here my string to filter :
I want to use the < (lesser than) symbol

The output of the StripTags filter is
I want to use the

I look at the code and the tests but I don't know if it is a bug or the desired behavior :)
For the moment the only solution I found is to create a "callable" filter with the strip_tags php function. Is there an another solution ?

This issue has been closed as part of the bug migration program as outlined here - http://framework.zend.com/blog/2016-04-11-issue-closures.html


Recover enums from QosPolices

Fixes #785

Build status:

Linux
Mac
Windows
Performance

Test failures are unrelated.


PagedModelAdapter.submitList doesn't accept null

About this issue
https://github.com/mikepenz/FastAdapter/blob/develop/library-extensions-paged/src/main/java/com/mikepenz/fastadapter/paged/PagedModelAdapter.kt#L301
    fun submitList(pagedList: PagedList<Model>) {
        itemList.submitList(pagedList)
    }

Currently, We can't pass null to PagedModelAdapter.submitList to clear the list. itemList.submitList accepts null so the parameter pagedList should also be nullable.
For now, since itemList is open, I use it directly to submit a null.
BTW, thanks for your amazing work!
Checklist

[√] Searched for similar issues
[√] Checked out the sample application
[√] Read the README
[√] Checked out the CHANGELOG
[√] Checked out the MIGRATION GUIDE

@DeweyReed thank you very much. I am glad it works for you.
Will fix this in one of the upcoming updates


[Feature] Enhance the UI of the page

Description
I want to enhance the overall look of the page so that it makes the webpage more aesthetic
Motivation
It enhances the look of the page
Screenshots
No response
Additional Context
No response
Checklist

[X] I have checked the existing issues.
[X] I have read the Code Of Conduct.
[X] The changes don't break the code.
[X] I will attach screenshots and videos of the development work once it is done.

Priority
High

@GarimaSingh0109 please assign me the issue under gssoc-ext and hacktoberfest-accecpted tags


Docker environment

What we're fixing
Fixes #61
Fixes #65
What we've done here

Added Docker and docker-composer support
Standardized all the tests, making sure all test methods get executed
Silenced logging messages when executing tests

How to verify these changes

Checkout the branch
Type make help in the console and verify that all the targets are listed
Verify that the commands below work:

make build
make clean
make run
make up
make shell-app
make shell-dev
make flake8
make unittest
make test

(If PyCharm Pro is available) Ensure that the docker sidecar is executed and then follow the instruction to configure PyCharm to use the remote interpreter. Once it's configured:

Open any Python file, delete an import line, find the warning for missing import, navigate the cursor to it and then hit Option + Enter. PyCharm should either offer options to import or add the import right away (if unambiguous)
Navigate the keyboard cursor to a member and then hit Cmd + B. You should either be taken to its definition or (if you are already at its definition) a list of its usage will be displayed
Open a test file, navigate the keyboard cursor into a test method and hit Ctrl + Shift + R, the selected test should be executed and the results displayed

check

check

check

check

Also thanks for inviting me as a collaborator, will try to be a good one!

I have been wanting to add this for a while, since it reflects what my current development environment is!
And it's my pleasure to have you as a collaborator, but don't sweat it, no pressure at all.
I just got to work on Pierre because it's been hackathon since Monday here at WP Engine! Unfortunately I was not able to get any volunteer but was able to do some discovery into #62 and fix some other stuff.
And I asked for your input on this PR because it's kinda big and you a very familiarized with the code. Thanks!

check

I have been wanting to add this for a while, since it reflects what my current development environment is!
And it's my pleasure to have you as a collaborator, but don't sweat it, no pressure at all.
I just got to work on Pierre because it's been hackathon since Monday here at WP Engine! Unfortunately I was not able to get any volunteer but was able to do some discovery into #62 and fix some other stuff.
And I asked for your input on this PR because it's kinda big and you a very familiarized with the code. Thanks!

This change looks great, because it can also help with testing the Lambda version of the code - I'll see if I can find some time to add another docker, one that allows defining AWS lambda backend. And allow creation of an integration test around that.


Upgrade the locked reference class to use ProtectedValue instead

ProtectedValue is a better implementation of the same idea of LockedPtr, so upgrading to use that internally would be beneficial.

I plan to tackle this at some point, but making it an issue now for visibility and in case anyone beats me to the punch


[Bug]: Realtime in Supabase is not working - Coolify overrides a required container_name in docker-compose.yml

Description
When using realtime in Supabase, the Kong-Container receives the request from the client and tries to connect to realtime-dev.supabase-realtime but cannot resolve this. I can see in the docker-compose-file that there is the correct "container_name" under the realtime-section:
  realtime-dev:
    image: 'supabase/realtime:v2.28.23'
    container_name: realtime-dev.supabase-realtime

But when switching to the "show deployable docker compose" view, this is tranformed to:
  realtime-dev:
    image: 'supabase/realtime:v2.28.23'
    container_name: realtime-dev-q4s4w4k

Maybe the underlying problem is the format of "realtime-dev.supabase-realtime" (with the dot inbetween) and Coolify strips off everything after that dot when transforming? Or coolify checks if the service-name is string-included in the container_name and then uses the former. I don't know - probably something obvious to spot.
Anyway, here is the Kong log when trying to access realtime features via web socket:
2024/04/24 10:25:46 [error] 1193#0: *65269 [lua] init.lua:310: execute(): DNS resolution failed: dns server error: 3 name error. Tried: ["(short)realtime-dev.supabase-realtime:(na) - cache-miss","realtime-dev.supabase-realtime:1 - cache-hit/dns server error: 3 name error","realtime-dev.supabase-realtime:5 - cache-hit/dns server error: 3 name error"], client: <IP_ADDRESS>, server: kong, request: "GET /realtime/v1/websocket?apikey=<...>&vsn=1.0.0 HTTP/1.1",
So, I believe when Coolify overrides the container-name, the name that kong expects (realtime-dev.supabase-realtime) to handle/proxx the realtime connections does not exist anymore.
Minimal Reproduction (if possible, example repository)
Install Supabase from Server
Enable Realtime on any table and subscribe to the table from a client connected to that supabase instance
Exception or Error
Browser will show failed websocket connections, kong will show resolve errors:
2024/04/24 10:25:46 [error] 1193#0: *65269 [lua] init.lua:310: execute(): DNS resolution failed: dns server error: 3 name error. Tried: ["(short)realtime-dev.supabase-realtime:(na) - cache-miss","realtime-dev.supabase-realtime:1 - cache-hit/dns server error: 3 name error","realtime-dev.supabase-realtime:5 - cache-hit/dns server error: 3 name error"], client: <IP_ADDRESS>, server: kong, request: "GET /realtime/v1/websocket?apikey=<...>&vsn=1.0.0 HTTP/1.1",
Version
v4.0.0-beta.265

Facing same issue

Can you change the container name it looks for by way of environment variable?

Can you change the container name it looks for by way of environment variable?

The container name can not be edited in the environment variables, not by my knowledge. The correct name is in the docker-compose file, but it is being overriden by Coolify on deploiyments.
Greets
-act

by the way @andrasbacsai  , there have been a couple of changes in the last days in the official Supabase docker-compose.yml that may or may not fix  problems with the current Supabase template used in Coolify - like that queries in the SQL Editor will open up an error window and not save the query. Maybe you could update the Template by chance.
https://github.com/supabase/supabase/commits/master/docker/docker-compose.yml
Greets
-act

realtime works for me
so does supabase sql
does the realtime inspector work for you too or no?

It doesn't work for me. I gave it up and am currently using Pocketbase, which does work in realtime

@actraiser pretty sure i just deployed the latest supabase yaml https://raw.githubusercontent.com/coollabsio/coolify/main/templates/compose/supabase.yaml
i also updated my environment variable
SERVICE_FQDN_SUPABASE_8000=https://supabase.dotabod.com

do you have the version from 2 weeks ago? i'm on v265 beta

On Coolify v270, this unfortunately does not work - I know it worked at some point (maybe back in 265) but I just installed Supabase from scratch only changing the kong domain and and tested with both "connect to predefined network" checked and uncheck. Realtime will not working. Kong can not resolve the Realtime-Endpoint:
2024/04/30 06:13:44 [error] 1185#0: *77997 [lua] init.lua:310: execute(): DNS resolution failed: dns server error: 3 name error. Tried: ["(short)realtime-dev.supabase-realtime:(na) - cache-miss","realtime-dev.supabase-realtime:1 - cache-hit/dns server error: 3 name error","realtime-dev.supabase-realtime:5 - cache-hit/dns server error: 3 name error"], client: <IP_ADDRESS>, server: kong, request: "GET /realtime/v1/websocket?apikey=<redacted>=1.0.0 HTTP/1.1", host: "<redacted>"
docker-compose in "Edit Docker Compose"-View (notice that the container_name is what Kong is looking for)
  realtime-dev:
    image: 'supabase/realtime:v2.28.23'
    container_name: realtime-dev.supabase-realtime

docker-compose in "Show Deployable Compose"-View (container_name has been renamed by coolify)
  realtime-dev:
    image: 'supabase/realtime:v2.28.23'
    container_name: realtime-dev-vs8coww

I hope @andrasbacsai  has figureed out what to change in the docker-compose transformation to make this work again. I believe he posted in a reply on X some days ago, that realtime will be fixed.
Greets
-act
Greets
-act

i just deployed latest supabase service using coolify v271
the url is resolved correctly for the realtime websocket
i do have a new issue that is solved with a new supabase commit that we don't have yet https://github.com/supabase/supabase/commit/03aa5c34740e63a7af09c46a749a4506985363dc

i updated the supabase service yaml here if you want to deploy it yourself
it uses the new commits from supabase
i still have the wss issue, but i "solved" it by changing protocol: wss in the yaml. a new error presents itself in my admin dashboard though. but try this
https://gist.github.com/Geczy/fd7175a8a6479edf3637bb084a4d698a

I am on v270 and I tried your generated template but Kong still cannot resolve the dns to the realtime service when it receives a websocket request.  A quick way to test it without a front end application is to call the url :
https://kong-domain.com/realtime/v1/websocket?apikey=<ANON_KEY>&vsn=1.0.0
which in my case returns the Kong-Error-Response from trying to resolve a realtime connection:
{
"message": "name resolution failed"
}

Kong's docker logs keep showing what I have already posted twice: DNS resolution failed: dns server error: 3 name error. Tried: ["(short)realtime-dev.supabase-realtime
Maybe its a completely different manner? I have "Connect to Predefined Network" checked in the Supabase stack, but I also tried it with de-selecting that option and connecting my client container manually into the SB stack network. This did fix the realtime error. Could it be any other global Coolify setting? But then again, afair I did not customized anything other than setting my Coolify instance domain name.
I am sure it's something trivial but I can't figure it out.
Greets
-act

A solution that worked for me
cd /data/coolify/services/<resource_id_supabase_stack>/volumes/api
nano kong.yml

There I replaced "realtime-dev.supabase-realtime" with just 'realtime-dev', so it now looks like this:
  - name: realtime-v1
    _comment: 'Realtime: /realtime/v1/* -> wss://realtime-dev:4000/socket/*'
    url: http://realtime-dev:4000/socket/
      - name: realtime-v1-all
          - /realtime/v1/

After hitting "Pull latest Images & Restart" in Coolify - Realtime in Supabase works now!

I believe the underlying problem is still how Coolify deploys the docker-compose files and changes the container_name. The container name of service realtime_dev is supposed to be  "realtime-dev.supabase-realtime" but as explained a couple of times, coolify changes it to "realtime-dev-" - yet kong.yml is configured to proxy realtime to "realtime-dev.supabase-realtime" which does not exist then.
I would say, this is a bug with how Coolify treats the container_name fields of docker-compose files on deployment.  What do you think @andrasbacsai ? I am not familiar enough with the internal workings to know for sure
Greets
-act

can't you do that in the kong.yml we bind here?
https://gist.github.com/Geczy/fd7175a8a6479edf3637bb084a4d698a#file-docker-compose-yaml-L33

Oh yes, good catch - that is an even place to implement the workaround fix.
Greets
-act

I am on v270 and I tried your generated template but Kong still cannot resolve the dns to the realtime service when it receives a websocket request. A quick way to test it without a front end application is to call the url :
kong-domain.com/realtime/v1/websocket?apikey=<ANON_KEY>&vsn=1.0.0

i also get this error when hitting that endpoint, so maybe my realtime never worked afterall?
{
  "message": "name resolution failed"
}

if you go to /project/default/realtime/inspector can you subscribe to a channel? after some time i'm getting these errors:

{
  "channel": "3",
  "extension": "postgres_changes",
  "message": "Subscribing to PostgreSQL failed: {:error, \"Subscription insert failed with 0 rows. Check that tables are part of publication supabase_realtime and subscription params are correct: %{\\\"event\\\" => \\\"*\\\", \\\"schema\\\" => \\\"public\\\", \\\"table\\\" => \\\"*\\\"}\"}",
  "status": "error"
}

And accessing the realtime url i get HTTP ERROR 426
426 is not even in their list https://supabase.com/docs/guides/storage/debugging/error-codes

EDIT: ^^^ after adding a table to my database (where no tables existed), i'm now able to successfully subscribe to realtime changes via wss

however, the url you provided is still HTTP 426
some info reveals:
wget: server returned error: HTTP/1.1 426 Upgrade Required

so it looks like it's a protocol issue. now i'm trying this diff, confirmed the realtime inspector still works, it's grabbing wss successfully, despite setting protocol to ws
perhaps only websockets are supported, no more rest/http in supabase?
based on their readme, i don't even see http to be offered:
https://github.com/supabase/realtime/blob/6d5bb1eaba603ffcd341715c3331c3eb3c5fd8f4/README.md?plain=1#L154-L158
nothing in their code suggests http is valid:
https://github.com/search?q=realtime%2Fv1%2Fwebsocket&type=code
so in the end, these are the changes that work for me based on the new docker-compose file. and i updated my gist to reflect that, as well as the PR i have open #2101

Sorry, I was not clear enough about the http-call - i just used it to quickly validate if Kong returns a 503 (name resolution failed in that case) or a 426 (can reach realtime server but does not authorize). Websocket is the only way to subscribe to Supabase realtime.
Greets
-act

lezgo andras !

Running into this issue currently and none of the above suggestions seem to work for me, any updates?

We have updated and refactored the Supabase template quite a bit for the next update, could you please retest the new compose file  and let me know if this is still an issue.

Everytime i try to start using the new compose file I get this error during startup:
Container supabase-db-z8sk4c8go8wkcckog0cgw4wc  Healthy
 Container supabase-analytics-z8sk4c8go8wkcckog0cgw4wc  Error
 Container supabase-analytics-z8sk4c8go8wkcckog0cgw4wc  Error
 Container supabase-analytics-z8sk4c8go8wkcckog0cgw4wc  Error
 Container supabase-analytics-z8sk4c8go8wkcckog0cgw4wc  Error
 Container supabase-analytics-z8sk4c8go8wkcckog0cgw4wc  Error
 Container supabase-analytics-z8sk4c8go8wkcckog0cgw4wc  Error
 Container supabase-analytics-z8sk4c8go8wkcckog0cgw4wc  Error
 Container supabase-analytics-z8sk4c8go8wkcckog0cgw4wc  Error
dependency failed to start: container supabase-analytics-z8sk4c8go8wkcckog0cgw4wc is unhealthy

Then startup stops and I can not get anything to restart from the dashboard
Under Supabase Analystics Logs I get:
2024-10-23T15:07:01.041232813Z 15:07:01.041 [error] Postgrex.Protocol (#PID<0.4727.0>) failed to connect: ** (Postgrex.Error) FATAL 3D000 (invalid_catalog_name) database "_supabase" does not exist
2024-10-23T15:07:01.054931522Z
2024-10-23T15:07:01.054947463Z 15:07:01.054 [notice] Application logflare exited: Logflare.Application.start(:normal, []) returned an error: shutdown: failed to start child: Cainophile.Adapters.Postgres
2024-10-23T15:07:01.054951683Z     ** (EXIT) {:error, :fatal, "3D000", :invalid_catalog_name, "database \"_supabase\" does not exist", [file: "postinit.c", line: "941", routine: "InitPostgres", severity: "FATAL"]}
2024-10-23T15:07:02.608298696Z {"Kernel pid terminated",application_controller,"{application_start_failure,logflare,{{shutdown,{failed_to_start_child,'Elixir.Cainophile.Adapters.Postgres',{error,fatal,<<\"3D000\">>,invalid_catalog_name,<<\"database \\"_supabase\\" does not exist\">>,[{file,<<\"postinit.c\">>},{line,<<\"941\">>},{routine,<<\"InitPostgres\">>},{severity,<<\"FATAL\">>}]}}},{'Elixir.Logflare.Application',start,[normal,[]]}}}"}
2024-10-23T15:07:02.608705549Z Kernel pid terminated (application_controller) ({application_start_failure,logflare,{{shutdown,{failed_to_start_child,'Elixir.Cainophile.Adapters.Postgres',{error,fatal,<<"3D000">>,invalid_catalog_name,<<"database \"_supabase\" does not exist">>,[{file,<<"postinit.c">>},{line,<<"941">>},{routine,<<"InitPostgres">>},{severity,<<"FATAL">>}]}}},{'Elixir.Logflare.Application',start,[normal,[]]}}})
2024-10-23T15:07:06.909146457Z
2024-10-23T15:07:06.909172408Z 15:07:06.908 [error] Postgrex.Protocol (#PID<0.163.0>) failed to connect: ** (Postgrex.Error) FATAL 3D000 (invalid_catalog_name) database "_supabase" does not exist

and Supabase DB logs I get:
2024-10-23T15:07:33.639479881Z <IP_ADDRESS> 2024-10-23 15:07:33.639 UTC [1621] supabase_admin@_supabase FATAL:  database "_supabase" does not exist

After Rolling back to the previous commit (https://github.com/coollabsio/coolify/blob/991c215a10b8e06ba80cbe4e0cd1d77bc438aee0/templates/compose/supabase.yaml), everything works fine except realtime and supabase supavisor... Not 100% that supavisor was working before, but I think it was

I just retried it with the new compose file, everything seems to be working on my end. Please make sure you use this new (not yet released) file: https://github.com/coollabsio/coolify/blob/next/templates/compose/supabase.yaml (copy the compose file into the docker compose deploy type).

I just retried it with the new compose file, everything seems to be working on my end. Please make sure you use this new (not yet released) file: https://github.com/coollabsio/coolify/blob/next/templates/compose/supabase.yaml (copy the compose file into the docker compose deploy type).

Yes this is working for a completely new instance, initially I tried to replace the docker compose file for my original insurance. Now everything is working or appears to be at least on the new instance. I'll just copy my data over and make sure real-time is working.


14 ornery dice rerolls

fixes hamstercrack/bmai #14
also addressed a few other minor issues like comments and cmake project()

sweet. now its auto building on pull request so we can confirm the builds work on all Operating Systems  before merging

@hamstercrack i decided to put the attack assert out in
void BMC_Game::ApplyAttackPlayer(BMC_Move &_move)

however do you think it would be better served if we just put the assert in OnApplyAttackPlayer() . ill admit I don't quite have my head wrapped around when its best to use an IF statement and when its right to use an ASSERT. typically I am seeing you IF on _move.m_attack and then assert on g_attack_type[_move.m_attack] and I bet there is more rhyme and reason to that then I am currently grasping


raftclient: use std future

What is changed and how it works?
What's Changed:
This PR uses latest API from grpcio and utilizes std futures. In
addition, it also fixes wrong size calculation found in #8591 and add
missing failpoints.
Related changes

PR to update pingcap/docs/pingcap/docs-cn:
PR to update pingcap/tidb-ansible:
Need to cherry-pick to the release branch

Check List
Tests

Unit test
Integration test

Side effects

Performance regression

Consumes more CPU
Consumes more MEM

Breaking backward compatibility

Release note

No release notes.

/run-all-tests


[Task] Feature Request: Form Configuration for Reusable Monitoring Template Parameters

Description
Description:

In HertzBeat, each monitoring template requires the user to input various parameters, some of which may be common across multiple templates. Currently, users must manually enter these parameters for each template, which can be time-consuming and error-prone.

Proposed Feature:

Implement a feature that allows users to create reusable form configurations for commonly used parameters. This would enable users to save a set of parameters as a configuration and then select the appropriate configuration when creating new templates, reducing the need to re-enter the same information.

Use Case:

A user who needs to set up multiple monitoring templates for different services might have to input the same set of parameters (e.g., Prometheus HTTP API parameters, database connection strings, etc.) for each template. With the proposed feature, users could save these parameters as a configuration and then simply select the configuration when creating a new template, making the process more efficient and less error-prone.

Benefits:

This feature would save time for users by reducing the amount of manual input required.
It would also help maintain consistency across templates and minimize the chance of input errors.

Task List
No response

Hi, good idea.👍 This is like a monitoring parameter template. Users can use the configured parameter template when adding monitoring without having to repeatedly configure parameter values. We will consider the design and implementation in the future, but need to be informed that this priority will not be high and will not be implemented soon.


Urban Dictionary Features

Find the definition of a specific word
Find a random word

Added with 3.1.0


gccgo: undefined reference when linking

What version of Go are you using (go version)?

$ go version
go version go1.14.4 gccgo (Debian 20200715-1) 11.0.0 20200715 (experimental) [master revision fff15bad1ab:53319423ecb:7a9fd18598e638b55c591624e753fb7a88abe1ab] linux/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/zhsj/.cache/go-build"
GOENV="/home/zhsj/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/zhsj/go"
GOPRIVATE=""
GOPROXY="https://goproxy.io"
GOROOT="/usr"
GOSUMDB="sum.golang.google.cn"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/gcc/x86_64-linux-gnu/10"
GCCGO="/usr/lib/gcc-snapshot/bin/gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/tmp/t/tt/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build400584759=/tmp/go-build -gno-record-gcc-switches -funwind-tables"

What did you do?
I don't know how to describe the problem. I just find it when building elvish.
I have reproduced the problem with following code.
==> ./pkgb/pkgb.go <==
package pkgb

import "bugtest/pkga"

type B interface{
        GetA() pkga.A
}

==> ./test.go <==
package main

import (
        "bugtest/pkga"
        "bugtest/pkgc"
)

type testA struct {
}

func (testA) Func() {
}

type testB struct {
        a pkga.A
}

func (b testB) GetA() pkga.A {
        return b.a
}
func main() {
        b := testB{testA{}}
        pkgc.Test(b)
}

==> ./pkgc/pkgc.go <==
package pkgc

import (
        "bugtest/pkga"
        "bugtest/pkgb"
)

func test(b pkgb.B, f func(pkga.A)) {
        f(b.GetA())
}

func Test(b pkgb.B) {
        test(b, pkga.A.Func)
}

==> ./pkga/pkga.go <==
package pkga

type A interface {
        Func()
}

==> ./go.mod <==
module bugtest

go 1.14

What did you expect to see?
Build without error.
What did you see instead?
# bugtest
/usr/bin/ld: /home/zhsj/.cache/go-build/ea/ea4b9775947f0eae0848aa6de3b1dd2e84c3f5cbb5d5164df059bb4d2099acaa-d(_go_.o): in function `bugtest..z2fpkgc.Test':
/tmp/t/tt/ /tmp/t/tt/pkgc/pkgc.go:13: undefined reference to `bugtest..z2fpkgc.bugtest..z2fpkgc..thunk0..f'
collect2: error: ld returned 1 exit status

@ianlancetaylor @thanm @cherrymui

Here's a more minimal reproducer:
$ cat go.mod
module bug

go 1.14

$ cat a/a.go
package a

type I interface {
	Func()
}

func Call() {
	f := I.Func
	f(nil)
}

$ cat main.go
package main

import "bug/a"

func main() {
	a.Call()
}

$ go build .
# bug
/usr/bin/ld: $WORK/b001/_pkg_.a(_go_.o): in function `bug..z2fa.Call':
/tmp/tt/ /tmp/tt/a/a.go:9: undefined reference to `bug..z2fa.bug..z2fa..thunk0..f'
/usr/bin/ld: /tmp/tt/ /tmp/tt/a/a.go:9: undefined reference to `bug..z2fa.bug..z2fa..thunk0..f'
collect2: error: ld returned 1 exit status

Thanks for the reduced test case.
The inlinable version of a.Call is
func Call () <inl:91>
 // /tmp/x/src/a/a.go:7
 var f <type 2> = a..thunk0 //8
 (f)($convert(<type 1>, $nil)) //9

Here the reference to I.Func has changed to a reference to a..thunk0.  The bug is that we don't generate a function descriptor for that thunk function.  Probably we need to generate the inlinable version differently here.

Hi,
Could this be backported to gcc10? It seems that Debian will use gcc10 for its next stable release.

@zhsj The change was already backport to GCC 10 branch on August 14.  GCC repository commit 1925bff7f21e5aaffb9a7fcf1356e67472d64b03.


Update to the contributing.md file

I made significant changes and rewrote the contributing.md file for easy comprehension, and also added graphic images for easy navigation. @gbowne1  @LOGESH-B  @BlackBond06

@gbowne1 @Chizobaonorh
I can't find any steps to setup the .env for backend and instruction to run the setup.js file. It is very important to setup this project locally

I am not sure this was meant to be included in the contributing file, my best guess would be for this to be included in the devsetup file

@LOGESH-B This file CONTRIBUTING.md is basically all about how to contribute which would include only information on how to clone/fork, pull requests, making bug reports, creating issues, maybe even links to the TODO list
We should include somehow within the file, that we require a minimum of two (2) reviews to be completed before we will merge.
DEVSETUP.md can house all of the things necessary for the developer to get their environment  set up and working.

The changes to this PR look good.
Some things ideally could be summarized, though.
Approving for merge.

Can you point the things you think i can summarize?

Lets wait for that till we finish what we have.

Alright, merging now. Thanks for your contribution @Chizobaonorh and the opportunity to review your PR.


rocket pointer  (added Readme)

Description 📜
Please include a summary of the change and which issue is fixed.
Fixes #1649

Type of change 📝
Please delete options that are not relevant. In order to tick the check box just put x inside them for example [x] like this

[x] Add a new project
[] Modified or enhanced the existing projects
[] Improve the readme of any project

Domain of Contribution 📊
Please delete options that are not relevant. In order to tick the check box just put x inside them for example [x] like this

[x] Project using only HTML & CSS
[] Project using HTML, CSS & JS
[] Project using ReactJs

Checklist ✅
Please delete options that are not relevant. In order to tick the check box just put x inside them for example [x] like this

[x] I have performed a self-review of my own code or work.
[x] I have commented on my code, particularly in hard-to-understand areas.
[x] My changes generate no new warnings.
[x] I'm GSSoC'22 contributor

Screenshots / Gif (Recommended) 📸

Add demo video

Add demo video in readme

i have added gif

Add demo video in readme

Done !!


Fix boxZoom._moved remaining in bad state after use (cf #3026)

This very small fix seems to fix it for me, both on Firefox and Chromium.
I can't see a reason for this not to work on other browser, but I may have missed some edge case to test.

Found an edge case: hitting escape while drawing the box to cancel the action doesn't reset _moved state.

Also, as far as I remember, the whole thing about remaining _moved state was about not firing the click event after something like box zoom. Needs checking.

the whole thing about remaining _moved state was about not firing the click event after something like box zoom

Good point, seems less trivial then!

Maybe resetting it on something like setTimeout 0 would suffice, since click/mouseup/dragend should all happen in the same JS tick.

Maybe resetting it on something like setTimeout 0 would suffice

Works here both in FF and Chromium, in the normal boxZoom scenario plus hitting ESC while drawing the box.
For the record, FF do not issue a click event at all after a drag, while Chromium do.
Anyone to test it on other browsers/OS? On the master, just open the debug/map/map.html page in the browser, and check that click isn't logged into the console after a boxZoom nor a boxZoom + ESC (while doing a basic click on the map should log click.

For the record, FF do not issue a click event at all after a drag, while Chromium do.

Even after the setTimeout fix?

Even after the setTimeout fix?

No, I meant before the fix, sorry for not being clear.


add a binding validation unit test

I just want to use this Travis CI to test my e2e case. And, one question described in below, @pmorie Could you help to clarify it?

This is a unit test, not an integration or e2e test.

@MHBauer Ok, I see, thank you for your clarifying.

/cc @jberkhahn @jeremyrickard @jboyd01

This unit test looks fine to me to add as it is, but I don't think its accomplishing what @jianzhangbjz wanted.  I believe he wanted a test that verifies Catalog changes an empty UnbindStatus to NotRequired which to my knowledge it does not do.  Re-reading Paul's entry from bug 1566328,
"- Add a conversion that sets the field value to the right value (NotRequired) if it is unset"
@jianzhangbjz I think I'd change the approach here:  make the test validate what you want (line 574, set valid: true) and then as @MHBauer pointed to, add code perhaps in this block that sets the value to NotRequired if the Status.UnbindStatus is not set.

Validation is not the appropriate place to set fields.

/assign @jboyd01
/unassign @MHBauer

After discussing with pmorie I'm going to close this issue:

This unit test is testing creation of a Binding with a nil Status.UnbindStatus.  The validators reject this, indicating you must set the UnbindStatus to a valid value.  This is correct behavior - it shouldn't be changed.

When Paul originally wrote up the BZ issue it was dealing with migrating Catalog data from one version to a new version.  The data was being read from old n-1 version format and re-persisted in new N version format.  It was in this process he was thinking we might default the value if not set.  However, he retracts that comment and that is why the original issue and PR didn't deal with it.  The value can not be defaulted and the the Binding Controller will determine what to do with it.

@jianzhangbjz thanks for the PR anyway, let me know if you want to discuss

@jboyd01 Sorry for the late reply. Got it, thanks!


Interrupting timer start event should not have time cycle

Describe the bug
We currently allow to set time cycle on an interrupting timer start event within an event subprocess. This is incorrect and a deployment with such an event is rejected by Zeebe.

Steps to reproduce

do this
do that
now this happens

Expected behavior
Interrupting timer start event should have only time date.
Environment

OS: [e.g. MacOS 10.2, Windows 10]
Camunda Modeler Version: [e.g. 2.0.0]
Execution Platform: C8
Installed plug-ins: [...]

Additional context
No need to change anything in C7.

Raised here: https://jira.camunda.com/browse/SUPPORT-14530

I am working on this.

This will be fixed via https://github.com/bpmn-io/bpmn-js-properties-panel/pull/802

Closed by https://github.com/camunda/camunda-modeler/pull/3248.


EVAL error after changing the RPN output size

I changed the RPN output size from [248, 216] to [124, 108]. the results almost 0.

I am facing the same problem. how did you solve the issue?
thanks


Line spacing question

Hello I'm a pygame-ce contributor, since we use SDL_ttf as our font rendering backend I've noticed (and hope that I'm not missing something) that there's no way to change the spacing bewteen lines in a multiline text scenario.
I've seen that TTF_FontLineSkip returns the recommended spacing between lines of text for a font, but is there a way to set this? If not would you ever consider adding it?
Without something to control that, I'd be forced to render multiple texts separately (one per line) and blit that to another surface.
Like take this picture for example, it's using a multiline text with a Sylfaen font of size 17 and the spacing feels a bit too much to me:

An update, I've noticed there's actually a TTF_SetFontLineSkip but it's not available until SDL_ttf 3.0.0. Would it be possible to backport it or is the 2.0 version feture complete?

Yep, added for the next SDL_ttf release!


Make popup windows / grid column widths resizable

Operating system or device - Godot version:
Windows 10 x64 - Godot 2.1 stable
Issue description (what happened, and what was expected):
So I'm sitting here using one of these huge 2560x1440 monitors at default DPI. Godot runs maximized. Opening the editor settings popup window for example makes it that wide that it starts to become hard to trace back the setting value on the far right to the setting's name on the left.
I tried to resize the window, but it seems to be of fixed width. That's a little annoying. (It even just closes when simply trying to hit the border but missing it thus clicking the main application window, or just scrolling outside of it above the main window, but that's another topic).
On top of that, I cannot resize the columns of the grid showing me those settings (to shrink - or better, even autofit - the setting's name column). I saw it was possible in some older version of Godot, but the headers are gone.
Can it be made possible to show these column headers again or (even better IMHO) make those popup windows resizable?
Steps to reproduce:
Buy a monitor which is far too huge, open settings window, enjoy (or not).

Closing since the PR mentioning it got merged, and it looks someone forgot the fix/fixes keyword again... (feel free to comment if it shouldn't be closed yet)

Grid columns are still not resizable tho

@RayKoopa Yeh, but we have #7133 for this.

Noice
Burninate this horrible issue then!


Add metric for missing kubernetes secret used by istio ingress gateway

Describe the feature request
Users can specify kubernetes secrets in Gateway objects which will allow them to reference which TLS certs they would like to load, this is done by specifying a credentialName.
Example:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: my-gateway
  namespace: some-config-namespace
spec:
  selector:
    app: my-gateway-controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - uk.bookinfo.com
    - eu.bookinfo.com
    tls:
      httpsRedirect: true # sends 301 redirect for http requests
  - port:
      number: 9443
      name: https-9443
      protocol: HTTPS
    hosts:
    - "bookinfo-namespace/*.bookinfo.com"
    tls:
      mode: SIMPLE # enables HTTPS on this port
      credentialName: bookinfo-secret # fetches certs from Kubernetes secret

If istiod is unable to find this secret, it currently logs
failed to fetch key and certificate for kubernetes://bookinfo-secret.

It would be helpful to export a prometheus metric to indicate when istiod is unable to load this secret instead of having to check istiod logs for these errors when there are issues with traffic into the ingress gateway. Alerts can then be built around this metric accordingly.
Describe alternatives you've considered
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[x] User Experience
[ ] Developer Infrastructure
Additional context
Istio 1.9
Telemetry v2

@bnutt already added pilot_sds_certificate_errors_total metric for this.


[Suggestion] Option to scale the UI / make the font bigger

This is just for accessibility reasons and for people with bigger / smaller monitors.

Also a bit of work... cuz I know there are at least some hardcoded offsets etc for some of the UI widgets/controls.

I haven't looked at a way to solve this either... Probably will be complicated as you say

Here's a screen at 16pt. 14pt is current.  A few, but not crazy issues at 16.

18 has more issues... but 14, 16, 18 seem like good targets for small/med/large sizes.

14, 16, 18 pt working for top menu bar and bottom nav bar as of 1bdef459873c562acea69a30f4ba060759c3a3e4. Am going to need:
a) A shortcut command for easy testing (Shift + and Shift - most likely)
b) Precompute the font raster images since now 3 ttf point sizes are being processed on load and I don't want startup times to suffer,
c) Toolbar buttons now change size, but will also need to increase (for med/large) playback control button sizes, including the buttons in the properties popup.
d) Go through all dialog/popups and ensure all 3 sizes work.

a) Is done in 13c90c64e7b3e82e4512325d7d529471388773e2
Still need b) c) d).

c) is done.. both properties window and main playback control. d) has the save-as dialogs done.
NW = Needs Work. CK = Check (have not looked).
About : OK
Prefs->Interface : NW
Colour Channels :  NW
Resize Canvas: NW (needs the anchor sizes and overall anchor position adjusted
Resize Image : OK
Rotate Image : OK
Crop : CK
Cheat Sheet : NW
Keyboard Bindings: NW. Most ok. Some operation descriptions too long.
Menu View -> Zoom : NW, Zoom text cut off.
Overwrite File : OK
Save Multiframe: OK
Contact Sheet : OK


Update Composer dependencies (2021-04-11-00-08)

Visual regression test passed!
View the visual regression test report


Remove unused core-approvers and examples-approvers teams

These groups are not used anymore. See https://github.com/kubeflow/community/issues/264 for context.

This change is

/cc @jlewi

Thanks
/lgtm
/approve


Netty5 Documentation: dead link to io.netty5.buffer.ByteBuf, which does not exist

This is just a documentation issue. In https://netty.io/5.0/api/io.netty5.codec/module-summary.html the doc mentions the non-existing class io.netty5.buffer.ByteBuf (such a class existed in netty 4).

Yeah, these tend to sneak in when we forward merge. Looks like that summary page hasn't been updated at all, though.


souper's parser has some basic forward type inference where widths

don't need to always be specified
some error checking specific to ctpop/cttz/ctlz/bswap was breaking
type inference for those instructions since the checking was done too
early, this PR fixes that

oops, working in a boring meeting and merged w/o thinking
but I think this trivial patch is pretty obviously ok


Implement Template Inheritance

Old fashion Laravel apps might be using Template Inheritance.
Add support for the following:
1.
@section('test)
     test
@show

Support for @parent keyword inside @section

Might be a good idea to just add to the keyword rule as it will get the job done.

inline @section() proven to be difficult to implement.
❌ It conflicts with the "nested" @section directives. Parser throws an error looking for the closing directive.
Things tried:

standalone inlineSection rule definition
adding , to text and creating `@section($.text, $.text)
Changing precedence
targeting , as high precedence

Regardless you either get inlineSection or the nested both throwing an error. 😬


Mention billing differences with MapLibre GL v1

I was using this transformer, which allowed me to upgrade to MapLibre GL v2 (thanks!), but wasn't aware of the implications it would have on my Mapbox bill: it significantly increased my costs.  All "Map loads for Web" charges had turned into Vector Tiles API charges.
I figured out why, which I included in this PR to help other people who find this library while inadvertently upgrading their v1 to v2.
As a reference, here's a partially anonymised screen of my billing view to illustrate the effect:

And about the Mapbox GL JS included tiles pricing:  https://docs.mapbox.com/mapbox-gl-js/guides/pricing/

Thanks for this PR @th0rgall - I hadn't actually thought about the pricing side of things as I'm using this in a small app so I've been operating within the free tier, but it's definitely worth mentioning.


Extensions icon

VSCode Version: Code - Insiders 1.3.0-insider (5eaf9f05038b0a9818ebff510e1aafe07ac1ae68, 2016-06-23T05:07:59.360Z)
OS Version: Windows_NT ia32 10.0.10586

The Extensions icon on the lower left corner dissapeared, I'm assuming there was a reason behind that and wondered which was it. It was quick to check the icon for pending updates, now I have to use the Show Extensions command to view which are pending to update (the new Extensions icon on the vertical bar does not change state).

@isidorn FYI.

Check it out: now you not only get notifications, but how many and you'll be able to see exactly which extensions need update.

This feature is under heavy changes, so if you don't see this behaviour yet, wait a day or two.

Thanks @joaomoreno for the claryfication :) It must be something with my installation then because I don't get the count on the vertical bar icon.

You don't have it yet.

Just be patient, it will come with the next update.


optimize ci

Ⅰ. Describe what this PR did
Ⅱ. Does this pull request fix one issue?

Ⅲ. Why don't you add test cases (unit test/integration test)?
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Codecov Report

Merging #659 (912d3a8) into main (d57ffce) will not change coverage.
The diff coverage is n/a.

Additional details and impacted files

@@           Coverage Diff           @@
##             main     #659   +/-   ##
=======================================
  Coverage   35.88%   35.88%
=======================================
  Files          73       73
  Lines       10366    10366
=======================================
  Hits         3720     3720
  Misses       6359     6359
  Partials      287      287


tensorboard command issue

Is here right https://github.com/microsoft/pai/blob/pai-1.4.y/contrib/submit-job-v2/src/App/TensorBoard.tsx#L408 ?
missing a & at the end of the line
After I upgraded to 1.4.0, I could not submit a job with tensorboard opened, but I login with ssh to the job containter and kill the tensorboard with pid num, everything is ok

After I upgraded to 1.4.0, I could not submit a job with tensorboard opened, but I login with ssh to the job containter and kill the tensorboard with pid num, everything is ok

My issue is :
container inner logs(kubectl get logs podID) stuck in "TensorBoard 1.14.0 at http://node4:10236/ (Press CTRL+C to quit)", and nothing in web stdout/stderr. The tensorboard view button is appeared, but the "/mnt/tensorboard" dir is not exist in container. BTW, I specified "--log-dir" with tensorboard installed

logs in container (following https://openpai.readthedocs.io/en/latest/manual/cluster-user/how-to-debug-jobs.html#how-to-use-tensorboard-plugin)
[Fri Dec 11 07:16:58 UTC 2020] [openpai-runtime] [INFO] Starting to exec precommands
[Fri Dec 11 07:16:58 UTC 2020] [openpai-runtime] [package_cache] Skip installation of group ssh.
[Fri Dec 11 07:16:58 UTC 2020] [openpai-runtime] [INFO] start ssh service
[Fri Dec 11 07:16:58 UTC 2020] [openpai-runtime] * Restarting OpenBSD Secure Shell server sshd
[Fri Dec 11 07:16:58 UTC 2020] [openpai-runtime] ...done.
TensorBoard 1.15.0 at http://node4:12111/ (Press CTRL+C to quit)

I thought the tensorboard plugin should execute tensorboard in the background, because it's a block process. Did I miss configure something? Thanks.

@debuggy Is this not a bug?

@ReyRen Is your issue still exist with 1.4.0/1.4.1?

@lbin 1.4.0 Yes, the bug still there!! Did you upgrade to 1.4.1 successfully? I got

Error from server (NotFound): configmaps "pai-version" not found
2020-12-28 10:58:37,068 [WARNING] - deployment.utility.pai_version : Can't fetch cluster version!
2020-12-28 10:58:37,069 [INFO] - deployment.utility.pai_version : Cluster version: , paictl version: v1.4.1
2020-12-28 10:58:37,069 [WARNING] - deployment.utility.pai_version : !!! Paictl version is different from the cluster version:  != v1.4.1
2020-12-28 10:58:37,106 [INFO] - deployment.paiLibrary.common.kubernetes_handler : configmap named pai-configuration is updated.

I didnot upgrade to 1.4.1, maybe everyone have holiday on chrismas and new year~  @ReyRen

Issue still here, @debuggy @fanyangCS @scarlett2018

Issue still here, @debuggy @fanyangCS @scarlett2018

Close this issue. Fixed by https://github.com/microsoft/openpai-runtime/pull/41


Aliasing RO/WO bits cause codegen failure with generate(Debug)

I have noticed that generating dual definitions within a register works fine, for example:
        // #[generate(Debug)]
        tuning_r(RW, 0x1d, 1) = {
            dl_tune: u8 = RW 4..=7,
            lead_lag: u8 = RO 3..=3,
            cagainov: u8 = WO 3..=3,
            integlen: u8 = RW 2..=2,
            integgain: u8 = RW 0..=1,
        },

The bit which has different meaning when writing and reading is generated correctly in the R and W.
However when I add the #[generate(Debug)] the debug tuple is not correctly constructed with the debug info for the WO bit is in the R debug print impl:
            impl core::fmt::Debug for R {
                fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt::Error> {
                    f.debug_struct("tuning_r::R")
                        .field(
                            "raw",
                            &device_driver::utils::SliceHexFormatter::new(&self.0),
                        )
                        .field("dl_tune", &self.dl_tune())
                        .field("lead_lag", &self.lead_lag())
                        .field("cagainov", &self.cagainov())
                        .field("integlen", &self.integlen())
                        .field("integgain", &self.integgain())
                        .finish()
                }
            }

So to me it seems that the #[generate(Debug)] does not handle WO bits correctly as they should not be in the debug print.
What do you think @diondokter ?

So, I had some time (and motivation) today. Sadly the way I thought I was gonna solve this doesn't work.
 But that's ok if I'm gonna port this to a proc macro after this...
Sorry for taking so long :(

No problem!

Crate has been overhauled. Issue no longer relevant


toast element is missing documentation for the displayTimestamp attribute.

The displayTimestamp attribute is listed at https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/adaptive-interactive-toasts#custom-timestamp, but not documented as part of the schema.

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

ID: 64a9d44e-b5d2-9da9-1d9a-d2450b549572
Version Independent ID: 3fc3283d-fe01-5536-3e31-e1213fae3ad5
Content: toast - Windows UWP applications
Content Source: winrt-related-src/schemas/tiles/toastschema/element-toast.md
Product: uwp
GitHub Login: @mcleblanc
Microsoft Alias: markl

Hi - Thanks for taking the time to let us know about this. Due to the sheer volume of feedback in our repo, we're currently prioritizing new issues. I'm going to close this but if it's still impacting you or others, feel free to leave a comment and we can keep it open and dig in. Alternatively, you can submit a new issue or pull request with the latest details. Thanks so much and apologies for the delayed communication here.


ThreeJs Facemesh

I am trying to use the facemesh in the three (face-tracking) for occlusion, for that I need to push the face mesh backward as to be close to the face.
I tried facemesh.position.set(0,0,-0.3)
to make it go backward in the z, but this had no result how can i achieve the result

right, because the library will control the position of the facemesh object created.
You could clone the facemesh and control the position yourself I suppose?  just update it's pose according to the original mesh with the offset you want.


[!] DBAL 4 incompatibility

Hi guys! Is this package abandoned? Because I have a problem with it when Doctrine ORM is upgraded to 3.0 and DBAL to 4.0.
Starting from this:
Fatal error: Declaration of Darsyn\IP\Doctrine\AbstractType::convertToDatabaseValue($value, Doctrine\DBAL\Platforms\AbstractPlatform $platform) must be compatible with Doctrine\DBAL\Types\Type::convertToDatabaseValue(mixed $value, Doctrine\DBAL\Platforms\AbstractPlatform $platform): mixed in /var/app/vendor/darsyn/ip/src/Doctrine/AbstractType.php on line 85

And it's real:
public function convertToDatabaseValue($value, AbstractPlatform $platform)

vs
public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform): mixed

It must be fixed. I can prepare the pull request, if you need it.

Sorry, I've only just noticed this issue! There aren't going to be any new features, but I'm definitely interested in keeping this library up-to-date with newer Doctrine versions.
Currently, the IP library supports PHP versions all the way from 5.6 to 8.3 - if the newer Doctrine versions require adding return types then I'm going to have to think about backwards compatibility. Perhaps I might split it up into darsyn/ip and darsyn/ip-doctrine.
For the moment, it might be best if you copy the Doctrine type classes and make the modifications you need as I don't see the upgrades that are needed being particularly quick.

Thanks for your attention! Your answer explains a lot for me.
I see that there are no problems with updating Doctrine itself but only with DBAL extension to v4. I set v3.8.4, it's enough for ORM v3 and doesn't conflict with packages that have to maintain PHP <8.
I suggest you to add "conflict" section to your composer.json with such code:
"conflict": {
"doctrine/dbal": ">=4.0"
}

It should prevent automatic updates of DBAL when your package is installed.

@zanbaldwin I've tested 5.0.0-rc now, looks good passes all my tests, and not updating doctrine/dbal up to v4. Thanks!
It would be good to make doctrine bundle compatible with modern DBAL versions, it could be useful in future. It must require drop PHP < 8 support but can bring some advantages.

can we do something here? total blocker :)

can we do something here? total blocker :)

Yes, sorry I forgot to close this issue. Upgrading to darsyn/ip:^5 will remove the incompatibility with Doctrine 4. The only differences in v5 are:

the Doctrine type has been moved out of darsyn/ip into it's own package darsyn/ip-doctrine.
Static analysis improvements.

While I do plan on improving darsyn/ip-doctrine to add DBAL4 support, it is unfortunately not a priority because of other life stuff happening. If you want to continue using the Doctrine type then your best option is to copy it into your project (a Doctrine type is only a single class). DBAL4 support should only require adding return types to the methods (I think?).
If you want to submit a pull request that would be greatly appreciated (if you have the time).