Does not generate files when paths are copy-pasted

When paths are copy-pasted instead of using the browser dialog, it does not generate files. Took me some time to figure out that with using the dialog it works just fine :)
Using Giraffe Beta 3, but issue is reproducible I think on all versions.

@overpas Ohh I think root will be windows path using \ :)


Make the main bevy crate a dylib

What problem does this solve or what need does it fill?
Incremental compilation times could be lower.
Describe the solution would you like?
Add crate-type = ["dylib"] to Cargo.toml or add crate-type = ["rlib", "dylib"] to Cargo.toml and -Cprefer-dynamic to the fast compilation profile. On my system it improves the compilation times of the breakout example from 2.1s with the fast compilation profile to 0.9s.
Describe the alternative(s) you've considered?
A lot of different compilation options.
Additional context
I wrote a report of my benchmarking at https://hackmd.io/@bjorn3/BJCQC1eKD

This should be only enabled during debugging.

With crate-type = ["rlib", "dylib"] the dylib will only be used when passing -Cprefer-dynamic.

Ok wow thats absolutely wild:
3d_scene (dylib)

3d_scene (default)

@bjorn3 are there any downsides to using dylib over rlib?

If using it for the final compilation, it will require you to ship the dylib and libstd.so. It will also result in a bigger combined file size. For development the only disadvantage I am think of is that it may slightly slowdown startup time.

Cool cool. It sounds like this should probably be the default for dev workflows (either somehow hard coded into cargo.toml for dev profiles, or just via documentation) . I can't believe a "one line" change makes such a huge difference. Thanks for putting in the work here to gather data / optimize. I'm sure a lot of Bevy developers will be happy you found this :smile:

I'm certainly ecstatic!

(Also thanks for your work on rustc_codegen_cranelift)

I can't find a good way to enable this in cargo.toml, but only for dev builds. I think we might be blocked on https://github.com/rust-lang/cargo/issues/7878.
I also can't find a way to pass this in as an argument to cargo run (without environment variables)
So far the best options I know of:

people just selectively enable this in their cargo.toml during development
people pass in RUSTFLAGS=-Cprefer-dynamic environment variables as part of their dev workflows (doesnt play nicely with rust-analyzer by default because RA invalidates the build cache. this is probably fix-able by configuring RA to also use -Cprefer-dynamic)
people use cargo rustc first (with prefer-dynamic), then run the binary directly?

If any crate is only available as dylib -Cprefer-dynamic is implicitly set. You could make an empty crate only available as dylib and ask users to do something like #[cfg(debug_assertions)] use bevy_link_as_dylib;.That will only link to that dylib when debug assertions are enabled I think. You could also keep bevy only an rlib if bevy_link_as_dylib has bevy as dependency and contains use bevy;.

I added a section for cargo performance and opened https://github.com/rust-lang/cargo/issues/8833 for the results.

are there any downsides to using dylib over rlib?

Another downside (for release builds) I can think of is that it can limit optimizations if using LTO, reducing the usefulness of LTO.
When everything is linked statically, enabling LTO allows optimizations/inlining to be performed across crates, which can greatly benefit the performance of the app. Having bevy as a separate binary creates a barrier for optimizations between bevy and the app.


Add log collector documentation

@kfbehar : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off

@kfbehar @batamig - the new heading is a word for word repeat of the previous heading ... it should be changed or removed before we can merge ...

thanks,
#hold-off

@kfbehar i'm recreating in the private repo. can we turn that duplicated section heading into a note? See https://github.com/MicrosoftDocs/azure-docs-pr/pull/207263.

adding triage label for tracking purposes.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

recreated in the private repo. #please-close


Add New Plugin (Notion Plugin)

A new Flow Launcher Plugin to interface with Notion
✨ Key Features:
Search: Effortlessly, High performance search and access Notion pages directly from Flow Launcher.
Create: Instantly create new Notion entries.
Edit: Effortlessly edit Notion pages with a few keystrokes.
Delete: Deleting Notion entries on the fly. and much more..
Repository Link: Flow Launcher Notion Plugin
Let me know if you need anything else

Hey @AminSallah thanks for creating this great plugin. Could I please ask you to use GitHub action in your repo to publish your release please. Feel free to have a look at how the Window Walker plugin is doing it as an example:
https://github.com/taooceros/Flow.Plugin.WindowWalker/blob/master/.github/workflows/publish-action.yml

Hi @jjw24 thanks for your suggestion, I've implemented the GitHub action to publish the release.
if there's anything else you'd like to share, feel free to let me know.

Thank you @Garulf, for your words! I was pondering the best way to update the url downloading for other versions or refresh it to use release made by github action. Should I initiate a new pull request, or is there another approach?

Our CI should pick up any updated releases automatically.

Thanks @Garulf for your guidance. I appreciate your time.


Error when creating Virtual Chassis

Issue type
[ ] Feature request
[x] Bug report
[ ] Documentation

Environment

Python version:  3.6.4
NetBox version:  v2.3.1

Running as a Docker container (built myself from v2.3.1 tag). DEBUG is set True.

Description
I am getting an error trying to create a virtual chassis for two devices. I am able to make virtual chassis for other devices so it seems to be specific to these two. I initially added these two devices to a Virtual Chassis cluster by mistake before I realized the correct way to create a Virtual Chassis.
Steps:

Navigate to Devices view.
Check the box next to both devices.
On bottom of page click Create Virtual Chassis.
Set Master and Position for each and click Create.

The below error is then shown:
There was a problem with your request. Please contact an administrator.

The complete exception is provided below:

<class 'django.db.utils.IntegrityError'>

duplicate key value violates unique constraint "dcim_device_virtual_chassis_id_vc_position_efea7133_uniq"
DETAIL:  Key (virtual_chassis_id, vc_position)=(5, 1) already exists.

Request Method: | POST
-- | --
http://lb.netbox.staging.keenai.com:8000/dcim/virtual-chassis/add/
1.11.11
IntegrityError
duplicate key value violates unique constraint "dcim_device_virtual_chassis_id_vc_position_efea7133_uniq" DETAIL:  Key (virtual_chassis_id, vc_position)=(8, 1) already exists.
/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py in execute, line 64
/usr/local/bin/python
3.6.4
['/usr/src/app/netbox',  '/usr/local/lib/python36.zip',  '/usr/local/lib/python3.6',  '/usr/local/lib/python3.6/lib-dynload',  '/usr/local/lib/python3.6/site-packages']

Traceback:
Environment:

Request Method: POST
Request URL: http://lb.netbox.staging.mydomain.com:8000/dcim/virtual-chassis/add/

Django Version: 1.11.11
Python Version: 3.6.4
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'corsheaders',
 'debug_toolbar',
 'django_filters',
 'django_tables2',
 'mptt',
 'rest_framework',
 'rest_framework_swagger',
 'timezone_field',
 'circuits',
 'dcim',
 'ipam',
 'extras',
 'secrets',
 'tenancy',
 'users',
 'utilities',
 'virtualization')
Installed Middleware:
('debug_toolbar.middleware.DebugToolbarMiddleware',
 'corsheaders.middleware.CorsMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'utilities.middleware.ExceptionHandlingMiddleware',
 'utilities.middleware.LoginRequiredMiddleware',
 'utilities.middleware.APIVersionMiddleware')

Traceback:

File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py" in execute
  64.                 return self.cursor.execute(sql, params)

The above exception (duplicate key value violates unique constraint "dcim_device_virtual_chassis_id_vc_position_efea7133_uniq"
DETAIL:  Key (virtual_chassis_id, vc_position)=(8, 1) already exists.
) was the direct cause of the following exception:

File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)

File "/usr/local/lib/python3.6/site-packages/django/contrib/auth/mixins.py" in dispatch
  92.         return super(PermissionRequiredMixin, self).dispatch(request, *args, **kwargs)

File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py" in dispatch
  88.         return handler(request, *args, **kwargs)

File "/usr/src/app/netbox/dcim/views.py" in post
  2114.                         device.save()

File "/usr/src/app/netbox/dcim/models.py" in save
  1046.         super(Device, self).save(*args, **kwargs)

File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py" in save
  808.                        force_update=force_update, update_fields=update_fields)

File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py" in save_base
  838.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py" in _save_table
  905.                                       forced_update)

File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py" in _do_update
  955.         return filtered._update(values) > 0

File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py" in _update
  664.         return query.get_compiler(self.db).execute_sql(CURSOR)

File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in execute_sql
  1204.         cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)

File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in execute_sql
  899.             raise original_exception

File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in execute_sql
  889.             cursor.execute(sql, params)

File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py" in execute
  79.             return super(CursorDebugWrapper, self).execute(sql, params)

File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py" in execute
  64.                 return self.cursor.execute(sql, params)

File "/usr/local/lib/python3.6/site-packages/django/db/utils.py" in __exit__
  94.                 six.reraise(dj_exc_type, dj_exc_value, traceback)

File "/usr/local/lib/python3.6/site-packages/django/utils/six.py" in reraise
  685.             raise value.with_traceback(tb)

File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py" in execute
  64.                 return self.cursor.execute(sql, params)

Exception Type: IntegrityError at /dcim/virtual-chassis/add/
Exception Value: duplicate key value violates unique constraint "dcim_device_virtual_chassis_id_vc_position_efea7133_uniq"
DETAIL:  Key (virtual_chassis_id, vc_position)=(8, 1) already exists.

I don't see anywhere I can remove the devices from another cluster or virtual chassis. Possible bug or did I do something wrong?

When you view either device individually, do you see a virtual chassis box with an option to delete the virtual chassis?
If not, try assigning the devices to different positions. I'm not sure how it managed to get out of whack.
If that doesn't work, you can manually clear any virtual chassis associations from the devices via the command shell. You'll need to grab the numeric ID for each device (check the URL for each).
$ ./manage.py nbshell
### NetBox interactive shell (jstretch-workstation)
### Python 3.5.2 | Django 1.11.10 | NetBox 2.3.2-dev
### lsmodels() will show available models. Use help(<model>) for more info.
>>> Device.objects.filter(pk__in=[<id1>, <id2>, ...]).update(virtual_chassis=None, vc_position=None, vc_priority=None)

There is no Virtual Chassis box for either device.
I also tried clearing the association:
root@9fb11a851748:/usr/src/app# python netbox/manage.py nbshell
### NetBox interactive shell (9fb11a851748)
### Python 3.6.4 | Django 1.11.11 | NetBox 2.3.1
### lsmodels() will show available models. Use help(<model>) for more info.
>>> Device.objects.filter(pk__in=[6,7]).update(virtual_chassis=None, vc_position=None, vc_priority=None)
2

But the same error occurs. How can I check out what dcim_device_virtual_chassis_id_vc_position_efea7133_uniq contains?

There is probably at least one other device assigned to the virtual chassis. Device.objects.exclude(virtual_chassis=None) will return a queryset of all devices which are part of a virtual chassis.

There were 4 other devices (for two other virtual chassis that I created). I removed those virtual chassis as well. Still the same issue. Is there a way to remove dcim_device_virtual_chassis_id_vc_position_efea7133_uniq?

Very strange, I was able to create with different positions and then after edit the positions back to normal. Not quite sure if it is a bug or not. Feel free to close if it doesn't seem like a bug as I can't figure out how to reproduce.

I will note that it was also only on the first virtual chassis that I created. I didn't have the issue on subsequent ones.

I have been able to reproduce the error in version 2.3.6.
It's when I create a Virtual Chassis with 2 Devices and I specify 0 as the master's position. When I use positions 1 and 2, it works.

I'm not able to recreate this on v2.3.6. I can create a virtual chassis of two devices with the master in position 0 and do not receive an error.
Closing this out as it's been open for months with no progress. If someone wants to post the complete list of exact steps needed to recreate this on a stable release, I'll take another look at it.

Thanks @computer045. Ok, so the missing detail was that the second device is being assigned as the master. I have confirmed this now.

I hope it's the same bug as the original reporter. Since he wasn't able to reproduce it, I am not sure. That is the only scenario where I had the error.


[docs] Update Parsing, Building & Normalizing URIs

This is related to #191. I thought I'd make a start on the index.md file. Small steps, and happy to make this a WIP.
~The URI Middlewares & URI components  sections are outdated as well. Are they still relevant?~

@GwendolenLynch thanks for the PR I checked the codebase for the doc website and it seems I went a bit weird on it ... my bad.
TL;DR:

the homepage is in fact this homepage.
the index page has some info but it is all outdated and never render to the actual website (which is a good thank).

Maybe the better approach would be to retrofit the info from the layout page into the index.md but my FE skills are really rusty at the moment.
I really appreciate what you are trying to do and if I can be of some help or assistance don't hesitate to ask here 👍🏾

Yep, I broke out jekyll after this and noticed there was some clean-ups needed, and was all the components not just this one. :innocent:
I'll have a bit of a dive in and see if I can cook up something.

I've updated the branch, and left separate commits to ease dropping undesired changes.
I also thought to add a bit more highlighting to tease new readers a bit more. Let me know what changes you'd like. :sun_with_face:

maybe we can also add this docker-compose.yml file see https://github.com/thephpleague/period/blob/master/docs/docker-compose.yml to improve testing locally the documentation rendering 🤔
I will check your updates this evening.

@GwendolenLynch is it OK if I merge this PR or do you want to add/update/improve more or we just consider this PR as a starting point 🤔  PR looks good to me

I'd merge this if you're happy with it. As you say, it forms a starting point :point_up: :point_right: :point_left: :point_down:

then let's merge this 👍🏾


Package Overview does not show classes and class members

 Issue by nadeeshaan
Tuesday May 04, 2021 at 06:08 GMT
Originally opened as https://github.com/ballerina-platform/plugin-vscode/issues/384

Description:
$title

The project overview has been disabled in the latest 3.0.0 release.


IORING_OP_RECVMSG fails when msg_control is set

struct msghdr has msg_control and msg_controllen fields that could be set before calling recvmsg().
recvmsg returns successfully with those fields set.
IORING_OP_RECVMSG, on the other hand fails with 22/Invalid argument.
To reproduce, see https://github.com/romange/liburing/commit/fd9c810c6cf6c73c7f3b27aacf144a229ee56313

This is known, cmsg is currently disabled through io_uring. This will be relaxed or 5.10.

Do we really need this? Is there a user for whom SCM*
are performance critical?
I guess they would require one by one handling in io_uring
with a swtich or something and would need extra resources.
->files for SCM_RIGHTS who knows what else for others.

Taking a closer look, I don't think we do.

#128, but don't know their use case and how critical to do that via io_uring.

I don't think we need it for SCM_RIGHTS, I don't view that as performance critical. But other uses cases of cmsg are useful and we do need, like MSG_ERRQUEUE. I'd be quite content to leave SCM_RIGHTS disabled forever.

https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/net/socket.c?id=583bbf0624dfd8fc45f1049be1d4980be59451ff

I wanted to use cmsg in order to timestamp RX packets and to see how much my application layer/io_uring contributes to the latency tail.

Closing this one


⚠ PostgreSQL has degraded performance

In 381fd69, PostgreSQL (https://news.ycombinator.com) experienced degraded performance:

HTTP code: 200
Response time: 722 ms

Resolved: PostgreSQL performance has improved in 7ba5cd2 after 6 minutes.


SoftAssertions should work with assertThatIllegalStateException

Summary
SoftAssertions are not working with assertThatIllegalStateException.
This compiler problem shows:
The method assertThatIllegalStateException() is undefined for the type SoftAssertions
Example
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;

import org.assertj.core.api.SoftAssertions;
import org.assertj.core.api.junit.jupiter.InjectSoftAssertions;
import org.assertj.core.api.junit.jupiter.SoftAssertionsExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;

@ExtendWith(SoftAssertionsExtension.class)
class SoftAssertionsTest {

    @InjectSoftAssertions
    private SoftAssertions softly;

    @Test
    void test() {
        softly.assertThatIllegalStateException().isThrownBy(SoftAssertionsTest::doSmth).withMessage("error");
    }

    private static void doSmth() {
        throw new IllegalStateException("error");
    }

}

Thanks for reporting this @razilein!


Add global cache object

Lag time high on mobile

I guess this is part of many other issues and a bit vague?
If you want this reopened with more specifics on what you mean and if it's still applicable feel free to reopen it @lingz

I think the response to this was to use one global cache object which every component could access. Requires refactoring all controllers but will give large speedup. I think just rename this issue to reflect that.

No longer relevant


Split the build and testing process in the CI actions

Currently the CI actions that require HW GPU spend a lot of time building the executables.
If we can perform the build operation on a separate CI runner, we can reduce the time spent on CI runners with GPU.
Currently the build and testing time takes approximately the following amount of time.

CI Action
Build time (min)
Test time (min)

Windows Release
5
11

Windows Debug
11
3

Linux Release
9
3

Linux Debug
9
1

Total
34
18

Github has a document for chaining workflow actions.
https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#workflow_run
And there is upload artifact action and download artifact action.

It turned out that workflow_run is not the one we want.
For a security reason, the workflow triggered by workflow_run event gets its own event.
It means that the workflow doesn't run as a part of the triggering PR.
It also means that even if the workflow failed, the PR wouldn't be stopped.
I am trying a different approach with multiple jobs and "needs" keyword.
It looks promising.

This task is related to

#4724

I am still working on the workflow change but I got a proof of concept version working.
https://github.com/shader-slang/slang/pull/5040
On this POC, a monolithic CI task is broken into two separate steps: build and test.
The result shows that the overhead of the separation is less than 1 minute when the whole CI action takes usually 13 minutes.
https://github.com/shader-slang/slang/actions/runs/10775540066/job/29880577688
This shows that the GPU required task can take 3 minutes less, which is about 25% saving.

I am not sure why but "Post setup" step got more than 2 minute of time saving when the build step is separated from the rest of the steps.
If I understood correctly, the same amount of time should take for build job and almost no time should take for test job.
I am not sure why I am not seeing the 2 minute time cost at "Post setup" during the build job.
But I don't think that is a big problem as long as "Post setup" step during the test job takes no time as expected.

For falcor test, CI usually takes about 13 minutes for testing on the self-hosted machine with 16 cores 4.5GHz.
When I locally tested on my machine it took 25 minutes for the same tests; 18 cores 3.0GHz.
The number of cores don't seem to affect because the testing frame work doesn't seem to make much use of the multiple cores.

I noticed that CTS-nightly doesn't utilize multiple CPU cores much.
When I tried to execute two deqp-vk executables concurrently, one of them kept having "DEVICE_LOST" error.
Since CTS-nightly uses a prebuilt binary package, there isn't much we can do to save the runtime.

For Falcor-test, I estimates that roughly 4 minutes will be saved when the current action takes roughly 18 minutes, which is roughly 20~25% saving.

The data collected between Sep/3/2024 and Sep/9/2024, it appears that the estimated time saving for CI.yml is about 40%.
The average time spent for building and caching for "Windows Release" job is about 40~45% out of the average time spent for the all jobs.
For "Falcor Tests", it is about 20%.
The table below shows "Average time spent for a job".

| Build and cache time | Total time | (Build and cache)/Total
-- | -- | -- | --
Windows release | 5 min 33 sec | 12 min 51 sec | 43%
Falcor Tests | 2 min 51 sec | 15 min 27 sec | 21%
CTS-Nightly | 0 | 78 min 8 sec | 0 %

"Build and cache" time is sum of "Setup", "Build Slang" and "Post Setup" steps.
When the build step is separated out, "Setup", "Build Slang" and "Post Setup" steps don't take as much as before while testing.


FR: Apply classes based on breakpoint size

similar to the way you can do [class.hidden]="amIHidden" with core ng2
Something like this would be stellar :-)
[class.iamsmall]="{max:768}"
(or whatever syntax is appropriate.

You should considering CSS option :
@mixin smallViewport {
  @media (max-width: #{$smallViewport - 1px}) {
    @content;
  }
}

.wrapper {
  display: block;

  @include smallViewport {
    display: none;
  }
}

Hello,
I would like to do the same but based on a responsive-window parent container size not the whole page.
It would be great to have such a feature for class or even for attributes.
Thanks

Is there any potential update on the package related to this enhancement request ?


pandoc/markdown support

add support for a markdown -->pandoc --> pdf workflow
this allows for easier writing, and easier reference management

so this ups the dependencies a bit, but would be a metadata.yaml file, series of markdown files, and a .bib bibliography database.
Using a python script to orchestrate everything, the yaml file would be read to order the chapters, then everything is streamed to pandoc, along with ummsthesis-template.latex pandoc template, and umms-thesis.lua custom pandoc writer.
├── metadata.yaml (author, title, readers, date, chapter file names, etc.)
├── acknowledgements.md
├── dedication.md
├── abstract.md
├── chapter-project-one.md
├── project-two.md
├── introduction.md
├── ...
├── ...
└── figures/
|   ├── western-blot.pdf
|   ├── qpcr.pdf
|   └── gene-pile-up.pdf
└── resources/
    ├── ummsthesis.lua                   (custom writer for pandoc)
    ├── ummsthesis-template.latex        (custom template for pandoc)
    ├── nih-citation-styles.csl          (citation styles format....not decided on this yet)
    └── compile                          (python script that pulls everything together and
                                          sends it to pandoc, and then saves the pdf properly)

so in order for it to work you need:

a TeX distribution (MacTeX, or MikTeX, or TeXLive)
pandoc (crossplatform, compiled---from haskell)
pandoc-citeproc (a python filter for pandoc)
highlighting-kate (a code highlighting utility, available compiled)
python (2 for now, but really should start using 3 at this point)

... is this too much stuff?


[improve][broker] Add test case for system topic schema not compatible bug.

Master Issue: #17979
Related to #17986
Motivation
Add test case to cover system topic schema compatibility.
Modifications
Add test case (org.apache.pulsar.broker.systopic.NamespaceEventsSystemTopicServiceTest#testSystemTopicSchemaCompatibility) to cover system topic schema compatibility.
The schemaCompatibilityStrategy of system topic should always be the same as the conf systemTopicSchemaCompatibilityStrategy, which is default SchemaCompatibilityStrategy.ALWAYS_COMPATIBLE.
Verifying this change

[ ] Make sure that the change passes the CI checks.

This change added tests and can be verified as follows:

org.apache.pulsar.broker.systopic.NamespaceEventsSystemTopicServiceTest#testSystemTopicSchemaCompatibility

Does this pull request potentially affect one of the following parts:
If the box was checked, please highlight the changes

[ ] Dependencies (add or upgrade a dependency)
[ ] The public API
[ ] The schema
[ ] The default values of configurations
[ ] The binary protocol
[ ] The REST endpoints
[ ] The admin CLI options
[ ] Anything that affects deployment

Documentation

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

Matching PR in forked repository
PR in forked repository: https://github.com/dragonls/pulsar/pull/2

@dragonls I think it should also cherry-pick to branch-2.11 and branch-2.9 right?

@dragonls I think it should also cherry-pick to branch-2.11 and branch-2.9 right?

branch-2.11 is ok，but branch-2.9 is no need because #17986 has covered this change.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@51be6cd). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master   #17992   +/-   ##
=========================================
  Coverage          ?   70.74%
  Complexity        ?      437
=========================================
  Files             ?       26
  Lines             ?     2246
  Branches          ?      245
=========================================
  Hits              ?     1589
  Misses            ?      484
  Partials          ?      173

Flag
Coverage Δ

unittests
70.74% <0.00%> (?)

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


Implement break and continue

Note
Loops should be more ergonomic with C-style break and continue keywords.

The typechecker has to check the position


How can we add a new property for a specific question or to all

I want to add a new property to all the questions or to each question type by its own
Example
i need to add a checkbox isMobile like the visible option for each question to each question so i know later on if this should be shown to mobile version or not.
can you explain what i should do in order to do so.
Thanks

@gilbertsalloum do you want be able to parse this value in json and see in visual editor?
There is no public API for it, but I may add it, if it is what you are looking for: Ability to add custom properties to survey questions.

hello man
sorry for the delay
yes this is actually what i need if you can add that it would be great thanks.

@gilbertsalloum Got it. I hope to find a time and do it on the next week.
And I have another question. Do you actually looking for a feature, that will tell modify survey based on device type: show/hide questions if they are "desktop" or "mobile" only.

@andrewtelnov  thank you for your reply
actually let me explain our
We are creating a form that the user will be using to purchase an insurance policy (life,motor,...)
in some of the policies we will need to oblige the user to fill some of the data using his mobile device (in case of Motor he will upload photos of the vehicle...)
what we are trying to do is adding a new property for each question if this question should be visible in desktop front end or the mobile or both
hopefully this explains our problem.

I have implemented the functionality: https://github.com/andrewtelnov/surveyjs/issues/135

I believe this feature will be useful as well: https://github.com/andrewtelnov/surveyjs/issues/136

hey man thank you for your update
Great Job

Hi Andrew can you please tell me in which file can i find the question properties , i want to delete a few properties.

@franjogordillo I guess, you are talking about the surveyjs Editor. Am I right?

Yes Andrew in the GUI part (survey editor), for examplo how can i remove the indent property

@franjogordillo I will work on the example that shows how to do it. Likely, I will have to add some functionality to the Editor. Please refer to this issue


Send "catch-up" State Delta Events on Subscribe

When a state delta export subscriber registers with a known block id that is older than the current chain head, send the subscriber all the events that have occurred in the interim.   This allows the subscriber to behave as if it received all the correct events.
Additionally:

Add a Predecessor Iterator on block store

Rebased on master for the shutdown test ignores

Rebased before merging

Added a new change that may require more review.


MAINT: 1.9.2 backports

Try to get ready for SciPy 1.9.2 and release of Python 3.11 (and other) wheels via cibuildwheel infrastructure. Merge conflicts related to build system infrastructure were extreme--any PR with a backport label that modified code that doesn't even exist on the maintenance branch had its backport label stripped and a comment added to the PR explaining why.
In cases where I saw that I could cleanly apply a patch to the build system, but the context in flanking code had changed radically, I applied the patch nonetheless--for example, many meson data structures were using things like py3_dep on maintenance branch but neither before nor after on the labeled backport PRs--in these cases I apply the patch directly and assume that the context change is safe (otherwise the burden of reinterpretation of the code would be huge).
Also, remember that this branch still uses do.py not dev.py, to give you an idea of how much stuff has drifted..
Backports currently included (those excluded should have a recent comment from me, I'll go back and check notifications to see what else needs to be backported... there will be more..):

gh-16628
gh-16842
gh-16909
gh-16934
gh-16943
gh-16954
gh-16969
gh-16975
gh-16991
gh-17011
gh-17013
gh-17046
gh-17064
gh-17096
gh-17127
gh-17131

@tylerjereddy gh-16814 just merged, can we add it here? Shall I open a PR against your branch, push here, or let you do it?

Eh, there are still meson build issues, but I've cleaned things up a little at least. I'm still not fully convinced on the safety of the backports vs. the degree of change around those backports, but I'll try to take another look tomorrow. Some pyproject.toml stuff may need to be reverted as well, wheel issue is familiar...

FAILED ../../build-install/lib/python3.10/site-packages/scipy/linalg/tests/test_lapack.py::test_gges_tgexc[float32]
FAILED ../../build-install/lib/python3.10/site-packages/scipy/linalg/tests/test_decomp.py::TestQZ::test_qz_single

That requires backporting the relevant fix from gh-17057.
The doc build is failing on a single Matplotlib deprecation warning for set_tight_layout. Not sure why it's not erroring on main, but that one can be solved by pinning Matplotlib or updating the code with the suggested replacement.
I will have a look at the build failures and push fixes for them.

Eh, there are still meson build issues, but I've cleaned things up a little at least. I'm still not fully convinced on the safety of the backports vs. the degree of change around those backports, but I'll try to take another look tomorrow.

I think it's pretty close now. It is quite a bit of churn, but I don't see a good alternative for Python 3.11 unless we pull the 1.10.0 release way forward - which is likely a lot more work.

Okay, all the regular CI should work now, and I also pushed a change to CI triggering for wheels.yml, so the wheel builders are running now on this PR when you add [wheel build] to the commit message.
If this is all green, I think the PR is ready to merge, and after that it needs one more commit to set the version number to 1.9.2 and push the tag.

Interesting, did you fix the MacOS Python 3.11 certificate issue somehow or did that just go away with a dependency update somewhere?

Interesting, did you fix the MacOS Python 3.11 certificate issue somehow or did that just go away with a dependency update somewhere?

See https://github.com/scipy/scipy/pull/17132#discussion_r986682047

Can we get these two bug fixes in? https://github.com/scipy/scipy/pull/17132#issuecomment-1264786435

@mdhaber I may do those separately but will try to get them in--the diff here is getting close to 4,000 lines. Let me try to skim this PR over one more time then I'll probably merge it based on Ralf's recommendation/fixes.

Great, thanks!


Add python 3.7 to travis file

See test run:
https://travis-ci.org/jrobichaud/django-groups-cache/builds/509738105

If you wanted, Python 3.8 and Django 3.0-3.1 can now also be added to the matrix.

We might as well add django 4 and python 3.9, it is not going to be merged anytime soon at this rate. 🤷♂


feat: LANZ-3056 updated workflow to create version.json per scope - approach 1

tested as next:
previous behaviour still work ✔

do commit with scopes, no versioning enable: squash commit: https://github.com/ohpen/platform-repository-for-testing/commit/80f9497a04f69c844f0b7bb8a7e8cd8a40079d75
result commit on executing semver https://github.com/ohpen/platform-repository-for-testing/commit/5acfdec9b7bfe5b09375a52af7184b137fcec62e

introduce versioning for one scope ✔

squash commit where one introduces versioning in the app1 scope https://github.com/ohpen/platform-repository-for-testing/commit/2f9e3d267ff3e9bcf6a5f9fd93afa7dddd11ac1c
semver commit https://github.com/ohpen/platform-repository-for-testing/commit/11192cb04655965a2f51b5a9800b2b73f454bfb8

versioning enabled in two scopes✔

app2 has versioning enable while app1 already have it https://github.com/ohpen/platform-repository-for-testing/commit/f6acf98a44a10acd746b2df63ae5cf4162e9a812
semver commit https://github.com/ohpen/platform-repository-for-testing/commit/1d419189a174e0ea8a72b7096f171555ee0dea51


refactor(driver): remove one Result usage

I'm not sure whether we will change the implementation in the future, but it doesn't need to return Result now.

So... if I'm right, this io::Result was originally introduced by #149 because of a try_clone and later fixed by #306?

Yes. The return type wasn't changed to keep API stable.


create recipe list item

Must include:

[ ] general image
[ ] the name of the recipe
[ ] category


Translate documentation to English

Please consider translating the documentation to English

I'm going to translate it these days.

complete.


BUG: sparse: handle size-1 2D indexes correctly

Fixes #4917.
The issue was caused by sputils.isintlike checking for issequence but not ismatrix, which meant that isintlike(np.array([0])) is False, but isintlike(np.array([[0]])) is True. This lead to the strange edge-case errors noted in the linked issue.

This broke SageMath essentially due to https://github.com/numpy/numpy/pull/9691


Translation error with markup text

When translating the markup text via DeepL API, the newlines, \\n, are squeezed into the wrong tag (i.e., </c>). Please see the following example, where DE is the source and RU is the target :)
DE: Liste der Eigenschaften:\\n* <c id=\"f48c4591-9f64-4ac8-af6a-72228cd50793\">Kamera</c>\\n* <c id=\"882df0f7-39a5-4f99-ae8a-e23a485419ee\">Akku</c>\\n
RU: Список свойств:\\n* <c id=\"f48c4591-9f64-4ac8-af6a-72228cd50793\">Камера\\n*</c> <c id=\"882df0f7-39a5-4f99-ae8a-e23a485419ee\">Аккумулятор\\n</c>

The expectation would be that the 2nd and 3rd newlines still stay outside of the </c> tag, after translating.

We have raised your issue with the relevant team. Thank you for reporting! We'll keep you posted if we find anything.

hey @ChingYi-AX could you give us the exact request you've sent including the parameters etc?

@seekuehe @DeeJayTC Thank you very much for your help and sorry for the late reply! Here is the exact request with the parameters:
_BASE_PARAMS = {
    "split_sentences": "nonewlines",
    "tag_handling": "xml",
    "non_splitting_tags": "b,c",
}
auth_header = {"Authorization": OUR_DEEPL_API_KEY}
texts = ["Liste der Eigenschaften:\\n* <c id=\"f48c4591-9f64-4ac8-af6a-72228cd50793\">Kamera</c>\\n* <c id=\"882df0f7-39a5-4f99-ae8a-e23a485419ee\">Akku</c>\\n"]

data = {"source_lang": "DE", "target_lang": "RU", **_BASE_PARAMS, "text": texts}

response = requests.post(
    "https://api.deepl.com/v2/translate",
    timeout=20,
    headers=auth_header,
    data=data,
)


WIP: Custom encoder/decoder layer sequence.

Encoder/Decoder consisting of custom layers

Also:

Janet RNN
QRNN
Highway layers

Still WIP!
Pull Request Checklist

[ ] Changes are complete (if posting work-in-progress code, prefix your pull request title with '[WIP]'
until you can check this box.
[ ] Unit tests pass (pytest)
[ ] Were system tests modified? If so did you run these at least 5 times to account for the variation across runs?
[ ] System tests pass (pytest test/system)
[ ] Passed code style checking (./style-check.sh)
[ ] You have considered writing a test
[ ] Updated major/minor version in sockeye/__init__.py. Major version bump if this is a backwards incompatible change.
[ ] Updated CHANGELOG.md

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

thanks for taking a first look. There are still several cleanups necessary though (just as a warning).

What would it take to avoid having an int parameter representing the size of the length dimension in the calling methods of layer implementations? This could be a major step towards converting to hybrid Gluon blocks.
Currently we use seq_len as an argument to all top-level classes (encoder, decoder, attention etc.).
Back when we wrote it the first time, MXNet didn't have many operators and it forced us to know the sequence length to implement the symbolic graphs. However, since then many things have changed and there are operators such as slice_like, broadcast_like etc. that allow performing operations based on the size/axes of the input data.
I took a quick pass over encoder.py and decoder.py to see what blocks us from avoiding the int argument:

Transformers can be implemented fully without knowing the sequence length. We currently use it for the custom ops to create variable length biases, but thats easily avoidable if we know the max_seq_len, which we do at construction time of the classes.
RNNs: for encoders, we can follow this tutorial on control flow operators to implement RNN unrolling with a control flow operator. Some attention.
RNN attention/coverage types: some attention types (LocationAttention) require knowing the sequence length, but I think we can avoid that. GRUCoverage can also be implemented using control flow ops if still necessary.
CNN models: this is where I don't know if we can really do it. My impression is that it should be possible knowing max_seq_len and using ops such as slice_like.

This has implications on this PR, as it may change the signature of your basic Layer classes. What do you think?

Yeah, I think the main blockers were the RNNs. I'll check regarding CNNs. In general it would be really nice if we could get rid of the int parameter though.

Closing for now as this is needs more work to be applied to Sockeye 2.


bottombar item titels ....

Hello

bottombar item titels, half seen in my sony xperia api 22...
i only removed font and style and behavior from xlm file...
app:bb_behavior="shifting"
app:bb_titleTypeFace="fonts/GreatVibes-Regular.otf"
app:bb_titleTextAppearance="@style/CustomTitleTextAppearance"
please help me. I did everything that was on my mind.....

I found the problem
Actually, Settings font size affects only sizes in sp. So all You need to do - define textSize in dp instead of sp, then settings won't change text size in Your app.


Write documentation for how to manage qfRound in adminjs

@laurenluz  Asked me explain it to community team, so I need to prepare a doc first
JFYI @MoeNick

Qf Round
Create

Name name of round that we show in the UI
Is Active If we want qfRound be active we should check this option. Be careful we can just have one active qfRound, otherwise system would not work well in this state
Allocated Fund The amount of fund that we want to distribute in this round ( USD value)
Minimum Passport Score At the end of the round we just consider donations whose donor passport score is greater than or equal to this field
Begin Date Exact time of when we want to begin round
End Date Exact time of when round supposed to end be careful of this field, because when end date passes admins can not edit round anymore

List

Admins can see list of QF Rounds here
Show Single QF Round

You can see qf round detail and related projects of a qf round in this page
Add projects to an active QF round
Project list

You can select multiple project and add/remove them to existing active QF Round with these two buttons
Add To Qf Round and Remove From Qf Round
Project page

You can add/remove a project to existing active QF Round with these two buttons
Add Project To Qf Round and Remove Project From Qf Round
And also you can see related qfRound of a project in this page

@WhyldWanderer @NikolaCreatrix @maryjaf just tagging you so you know this is here


TagGroup followup items

Closes GH-2837
✅ Pull Request Checklist:

[x] Included link to corresponding React Spectrum GitHub Issue.
[x] Added/updated unit tests and storybook for this change (for new code or code which already has tests).
[ ] Filled out test instructions.
[ ] Updated documentation (if it already exists for this component).
[x] Looked at the Accessibility Practices for this feature - Aria Practices

📝 Test Instructions:

🧢 Your Project:

Apologies for the super rushed review, will do a in depth one Monday hopefully. Did some testing and noticed the following:

Esc and Space aren't triggering onRemove
The announcement for the removable tags is still "Tag 1 Remove Tag 1". Just wanna confirm that this is what accessibility ok'd

I will update the key press actions. 'Tag 1. Remove Tag 1' was 'okay'ed by someone in the guild accessibility channel


Feature request: allow multiple expressions in a single program

TLDR The following program should be a valid expr:
let x = 42
let y = 42
x * y

It should work like Ruby, where everything is an expression and the last expression is used as the result. Given that it works fairly well for Ruby, I guess expr-lang can be modeled just like it.
Currently what we do in Uptrace transformations, is just split the multi-line expressions into individual programs and then run them one by one. It works so far, but variables don't survive between programs and the performance is probably sub-optimal since each program requires a separate VM.
I believe OpenTelemetry does the same with multi-line OTTL so they would probably benefit as well.
A more realistic example what multi-line expressions can achieve:
let val = split(attr("foo"), "-")
setAttr("xxx", val[0])
setAttr("yyy", val[1])
deleteAttr("foo")

Well, actually this is possible right now as well if ; added at the let ends:
let x = 42;
let y = 42;
x * y

We can improve lexer and allow \n to be treated as ;.

Well, actually this is possible right now as well if ; added at the let ends:

Yes, I know, but the real program looks more like this:
let val = split(attr("foo"), "-")
setAttr("xxx", val[0])
setAttr("yyy", val[1])
deleteAttr("foo")

I guess I can rewrite it like this, but it is not as readable and debuggable:
let val = split(attr("foo"), "-"); setAttr("xxx", val[0]) && setAttr("yyy", val[1]) && deleteAttr("foo")

I see. So, this request to add statements to Expr. I think this is nice to add via option: expr.AllowStatments().

So, this request to add statements to Expr.

Maybe, but I explicitly say that "everything is an expression" so :) If we take switch in account,  would it be a statement or expression? I believe it should be an expression or it probably would not find into the purpose of the language.

Statements support(or using ; to simply discard expression output) would be very helpful indeed. I'm currently having the following usecase:
assert(status_code == 0);
assert(status_message == "");
// normal expr stuff
1 + 1

Currently it's possible to work around this by

Making assert return an any.

- func assert(condition bool)
+ func assert(condition bool) any // always returns nil

change the assert statement to assignments:

let _s1 = assert(status_code == 0);
let _s2 = assert(status_message == "");
// normal expr stuff
1 + 1

It seems that the only case that multiple statement is allowed is multiple variable definition like:
let z = x + y;
let w = x - y;
z * w

If I want to simply make multiple function calls it will fail.
func TestExprCustomFunction(t *testing.T) {
	env := map[string]any{
		"greet":   "Hello, %v!",
		"names":   []string{"world", "you"},
		"sprintf": fmt.Sprintf,
	}
	e, err := expr.Compile(`sprintf(greet, names[0]); sprintf(greet)`, expr.Env(env))
	if err != nil {
		panic(err)
	}

	out, err := expr.Run(e, env)
	if err != nil {
		panic(err)
	}

	fmt.Println(out)
	fmt.Println(reflect.TypeOf(out))
}


refactor: represetnting tx hahs as Fr

TxHash used to be representing as Buffer32 and it did not make sense as it's an Fr.

#10954  👈 (View in Graphite)
master

This stack of pull requests is managed by Graphite. Learn more about stacking.


function type inference doesn't work reliably with generic function wrappers

// correctly inferred as (arg: number) => number
const func = (arg: number) => arg * 2

const wrap = <T>(fn: T): T => fn

// correctly inferred as (arg: number) => number
const funcWrappedImplicitType = wrap<typeof func>(func)

// incorrectly inferred as (arg: number) => any
const funcWrapped = wrap(func)

I would expect that funcWrapped either would not be inferred at all or to be inferred fully. Currently it's kinda inferred half-way.

This is not what is see on the playground. something else is going on, can you share more context.

@mhegazy you are right, it appears that this is not a typescript issue


add SafeList destructor which calls maybe_cleanup() to prevent mem leak

Fix for  #53567 and  #53568

I'm so sorry I missed this. This change does make sense, thank you!

@akien-mga are you comfortable with this being merged or does it also need a review for core? I'm not core, but I did write this code so I think it's probably fine.

That's true. I was thinking about it, and I'd definitely rather leak memory than risk a use-after-free. Do you think a spin-loop waiting until iterators are destroyed would be too drastic? That's the "safest" thing from a memory perspective but a spin loop could cause a freeze for a user.

If we agree that it's an error that iterators live beyond the destruction of the list, we could to the folllowing:

release -> Spin until free to destroy
debug/release_debug -> Print error + Spin until free to destroy

The goal would be to give notice about the bug so it can be fixed, while offering at least a safe way to handle it instead of just running into UB or crash.

That sounds fantastic.
@RandomShaper Semantically, I think a spin-wait for all iterators to be destroyed is "correct". But I'm not sure it's worth risking a freeze in a release build. I'd almost rather just do the best-effort thing which is maybe_cleanup (exactly what this PR does). If there's an active iterator, memory will be leaked, and destructors on the leaked objects will never be called. I think I'd prefer to have that happen over a potential freeze from a spin-wait. That said, a spin-wait will terminate if the iterators are short-lived.
I think I will defer to you on this because I really don't know what the best thing is, and if you're not sure either we can ask reduz. :)

Makes sense. Then, my suggestion changes to the following:

release -> Leak
debug/release_debug -> Print error + Leak

maybe_cleanup() may return a true/false depending on if it could actually clean up or not, respectively, and then we'd have this (with maybe a better error message):
~SafeList {
#ifdef DEBUG_ENABLED
    if (!maybe_cleanup()) {
        ERR_PRINT("There are still iterators around when destructing a SafeList. Memory will be leaked. This is a bug.");
    }
#else
    maybe_cleanup();
#endif
}

Thanks for updating the PR @Klowner! Looks good from an audio perspective. Seems ready to merge IMO, after CI completes successfully.

I guess our approvals are enough, considering this is not as critical as other core stuff would be (memory management and the like).

Thanks!


Implemented CO2 support, tested with AZ7798

I have implemented support for the AZ-7798 CO2 Monitor.
In the log below you can see it does not send a device_class, so I used the ic value.
I don't know if this is the right solution, but it does work.
2020-09-30T19:45:09.611Z Tasmota:platform Discovered -> homeassistant/sensor/5D7CEB_AZ7798_CarbonDioxide/config Extech_CO210 AZ7798 CarbonDioxide {
  name: 'Extech_CO210 AZ7798 CarbonDioxide',
  stat_t: 'tele/extech_co210/SENSOR',
  avty_t: 'tele/extech_co210/LWT',
  pl_avail: 'Online',
  pl_not_avail: 'Offline',
  uniq_id: '5D7CEB_AZ7798_CarbonDioxide',
  dev: { ids: [ '5D7CEB' ] },
  unit_of_meas: 'ppm',
  ic: 'mdi:molecule-co2',
  frc_upd: true,
  val_tpl: "{{value_json['AZ7798']['CarbonDioxide']}}",
  tasmotaType: 'sensor'
}

@jeroenvermeulen Tks very much for this pull request, looks really good.
If the pattern of using the 'ic' field makes more sense as more device's / sensors are added I may change my underlying logic


pageserver: add shard indices to layer metadata

Problem
For sharded tenants, the layer keys must include the shard number and shard count, to disambiguate keys written by different shards in the same tenant (shard number), and disambiguate layers written before and after splits (shard count).
Closes: https://github.com/neondatabase/neon/issues/5924
Summary of changes
There are no functional changes in this PR: everything behaves the same for the default ShardIndex::unsharded() value.  Actual construct of sharded tenants will come next.

Add a ShardIndex type: this is just a wrapper for a ShardCount and  ShardNumber.  This is a subset of ShardIdentity: whereas ShardIdentity contains enough information to filter page keys, ShardIndex contains just enough information to construct a remote key.  ShardIndex has a compact encoding, the same as the shard part of TenantShardId.
Store the ShardIndex as part of IndexLayerMetadata, if it is set to a different value than ShardIndex::unsharded.
Update RemoteTimelineClient and DeletionQueue to construct paths using the layer metadata.  Deletion code paths that previously just passed a Generation now pass a full LayerFileMetadata to capture the shard as well.

Notes to reviewers:

In deletion code paths, I could have used a (Generation, ShardIndex) instead of the full LayerFileMetadata.  I opted for the full object partly for brevity, and partly because in future when we add checksums the deletion code really will care about the full metadata in order to validate that it is deleting what was intended.
While ShardIdentity and TenantShardId could both use a ShardIndex, I find that they read more cleanly as "flat" structs that spell out the shard count and number field separately.  Serialization code would need writing out by hand anyway, because TenantShardId's serialized form is not a serde struct-style serialization.
ShardIndex doesn't have to exist (we could use ShardIdentity everywhere), but it is a worthwhile optimization, as we will have many copies of this as part of layer metadata.  In future the size difference betweedn ShardIndex and ShardIdentity may become larger if we implement more sophisticated key distribution mechanisms (i.e. new values of ShardIdentity::layout).

Checklist before requesting a review

[ ] I have performed a self-review of my code.
[ ] If it is a core feature, I have added thorough tests.
[ ] Do we need to implement analytics? if so did you add the relevant metrics to the dashboard?
[ ] If this PR requires public announcement, mark it with /release-notes label and add several sentences in this section.

Checklist before merging

[ ] Do not forget to reformat commit message to not include the above checklist

Re get_shard_index(): will this be an immutable attribute of Timeline / Tenant/ ... ? I sure hope so, my approval to this review is contingent on that. I don't want to think about that value changing over the lifetime of an object.

Yes, it's immutable.  When splitting is implemented, it'll look like destroying the old Tenant/Timeline and creating new ones.

Splits will write out a fresh index_part for each child shard before their Tenant/Timeline objects are instantiated, so when loading index_part, each Timeline object only has to read metadata from its own TenantShardId prefix

Will the new Tenant / Timeline objects have a new generation number or continue to use the existing one?

Will the new Tenant / Timeline objects have a new generation number or continue to use the existing one?

From a correctness point of view, they could start with a new one.  It will probably be more convenient to use the existing one though, so that callers of a split API don't have to provide generation numbers for the children.  TBD.


Pagination on Dashboard Pages

⚠ Please verify that this feature request has NOT been suggested before.

[X] I checked and didn't find similar feature request

🏷 Feature Request Type
UI Feature
🔖 Feature description
in the Dashboard  it should have pagination option which will make the page load speed much faster and optimized.
✔ Solution
on the Dashboard page there should be option so that one could paginate the listings. It will look cool and make the page load and response faster.
❓ Alternatives
No response
📝 Additional Context
No response

Note that https://github.com/louislam/uptime-kuma/pull/3515 and a few other performance improvements like external mariadb were merged into the v2 release (see https://github.com/louislam/uptime-kuma/milestone/24 for the progress).
How far v2 scales is currently untested.

My concern is not about Maria DB or any other external DB or even DB. What I am concerned is that in the Dashboard Page, there should be a UI design to have pagination to server a long list in multiple pages instead of just one page which sometimes takes ages to fully load. And addition to that some filters would make life much easier as well on the same Dashboard.

As noted above, the loading issue for large monitors was likely resolved in #3515
Fetching a few thousand monitors might not be an issue from a transmitted data perspective.
Benchmarking of v2 is still outstanding; thus it is unclear if this is necessary.

some filters would make life much easier as well on the same Dashboard.

Are you refering to these filters?

Having few thousand of monitors on one page doesn't make sense. It's just not practical in UI/UX perspective.
Pagination of the status pages Dashboard I mean. Pagination there would be a must feature.

Pagination of the status pages Dashboard

What site are you referring to concretely?

Pagination there would be a must feature

I am going to add the question tag to this issue, and we will revisit this after the v2.0 release. I am currently not quite convinced that this is necessary.
How many monitors would you like to run at what retention and in which interval?

I am specifically talking about https://example.com/status/statuspage.
I have more than 120+ dashboards on that page and definitely I would like to have a nice pagination.
THANKS

So you are not talking about the dashboard, but the status page.
I have edited the issue to reflect that

Thank you.


fix(test): rewrite webhooks tests as unit tests.

Description
The webhook_suite_test.go originally test webhook validations with integrations test on Ginkgo. Which is slow because it setup a whole test environment to simulate Kubernetes cluster. This commit changes that rewriting the test as unit tests calling the validation function directly.
Fix #579

@jvanz I think you can merge this PR after you have rebased it against main


site not running on new (or old) URL / whitelisting IPs

://circuitseq.iwr.uni-heidelberg.de/ gives '404 Not Found' error this morning, even when accessed with a DKFZ IP address.
If required the DKFZ IP addresses for whitelisting are:
<IP_ADDRESS> (on VPN)
<IP_ADDRESS> (onsite at DKFZ but with VPN enabled)
<IP_ADDRESS> (onsite at DKFZ, not using VPN)

Now we have a domain name we can set up https, which is what I'm working on this morning (which is also why the website is down), will update here when this is done & everything is working again

IWR website working again for me
However, when using Docker on Windows host (ok, probably not the most likely deployment scenario) I generated cert.pem and key.pem in Ubuntu, pasted into the Docker directory but couldn't get Docker deployment to run:
Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/run/desktop/mnt/host/c/circuitSEQ/SSC_software/circuit_seq/cert.pem" to rootfs at "/circuit_seq_ssl_cert.pem": mount /run/desktop/mnt/host/c/circuitSEQ/SSC_software/circuit_seq/cert.pem:/circuit_seq_ssl_cert.pem (via /proc/self/fd/14), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
Possibly a Linux/Windows filesep parsing issue?  Or the keys should really reside inside a folder - in which case the readme might need an update

It could be that docker previously created a folder named cert.pem if this location didn't exist the first time docker tried to mount it, which could give this "mount a directory onto a file" error - if so deleting this folder and recreating the cert.pem file might help (or see https://stackoverflow.com/questions/45972812/are-you-trying-to-mount-a-directory-onto-a-file-or-vice-versa/45973133#45973133)

the stack overflow advice worked for me - the server then booted up fine with new cert.pem and key.pem files
I think there's still some confusion about where this will be hosted:

README_DEV.md suggests http://localhost:5173/
Docker output suggests  [1] [INFO] Listening at: https://<IP_ADDRESS>:8080 (1)

Neither worked for me when running local Docker on windows system, but this could just be documentation out of sync with the latest commits

Great! So there are two ways to run it described in README_DEV.md:

first way is with docker (README_DEV.md#run-locally-with-docker-compose), where the website is served at https://localhost/ (README_DEV.md#url)
second way is to run the development servers directly (README_DEV.md#run-locally-with-python-and-npm) where the website will be served at http://localhost:5173/

(What you see in the docker output with port 8080 is the rest api server port on the docker container where the server is running)
The docker way is the best way to try using it locally, the development servers way is more convenient if you want to make changes to the code & see the results without having to rebuild the docker containers with every change.
Hope that makes sense!

I did this with Docker and it works and the URL matches the documentation.
The current state of development means that the server in the Docker image reports that no more samples are available this week, but I guess this is due to you recently testing this feature

Great! Yes that's right - you can change the last day of sample submission in the admin settings.
Agree it's confusing for the user:

Maybe instead of saying "0 remaining" on thursday it should say something like

"Sample submission is closed for this week, opens again on Monday"

Alternatively we could allow sample submission after closing for the following week?

This would complicate some of the logic though
e.g. currently we can wait until submissions close then change the number of plate cols/rows
instead this would have to be a pending change to be applied at next close of submissions, or something similar


Move connection string details from config page to connection pool page

The https://postgrest.org/en/stable/references/configuration.html page is mixed with connection string details.
This can be moved to https://postgrest.org/en/stable/references/connection_pool.html to make it clearer.
A "connection string" section that explains libpq env vars, formats(uri-based vs key value), etc.

Also check other details that are on https://postgrest.org/en/stable/references/configuration.html#db-uri.

Configuration page is a bit simpler now https://postgrest.org/en/latest/references/configuration.html. I'll just link to  config from the connection pool.


 The repo itself has no go files at the root right now. To use the functions you should get the project via:
go get github.com/anthonynsimon/bild/...
Notice the '...' at the end, this is to signify that you want all the packages on that repo.
And then in your code import the specific package that you want to use, for example gaussian blur:
package main

import "github.com/anthonynsimon/bild/blur"

func main() {
    result := blur.Gaussian(img, 3.0)
}

I will update the README to clarify on this. Thank you for reporting it.


Enable libvirt debug logs under our e2e tests

Signed-off-by: Artyom Lukianov<EMAIL_ADDRESS>
What this PR does / why we need it:
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

NONE

Currently, we do not have any libvirt debug logs under the CI runs, it makes very hard to debug QEMU crashes(or libvirt audit failures).

@cynepco3hahue thanks for thinking about ways to improve our test infrastructure. It indeed needs more love.
I agree that debugLogs from QEMU and Libvirt are useful. I used them for debugging the migration errors and without them, it would be very hard to figure the issue.
What I am afraid of is the amount of verbosity Libvirt produces when debugLogs are enabled. In general, when I was not looking for Libvirt relevant issue,  the logs were not helpful. Moreover, when enabled it made it very hard to find any information within the logs. I spent hours looking into the logs and finding the right error. Therefore I do not see the value of enabling it for every test by default.
To leverage the power of debugLogs, the test infrastructure has to be able to analyze errors automatically and provide the summary. Otherwise, the information will make the life of normal debugging way harder.
Do we have any infrastructure in place for such an automatic analysis or is there a plan for it?
Thanks again for figuring out how out CI can be better.

What I am afraid of is the amount of verbosity Libvirt produces when debugLogs are enabled

I'm afraid of this as well. I think temporarely enabling debug logs only for the VMIs of the tests where you need more logs is better than enabling them for all.

@petrkotas @slintes We can have a failure under each test because it just some flaky test, also you have logs only for failures and for a short period of time, so it should not be a problem with the disk space. Regarding the usefulness, I believe you still can find relevant errors, just by error word, but you will have more information about why the error happened.

@cynepco3hahue thanks for taking the care. I am still afraid the logs will be cluttered. It is not about the disk space. The issue is with finding the right information.
I have consulted with my colleagues from oVirt. They agree the debugLogs are not useful in general as they have too much information which is usually not relevant.
We already have an option to enable the debugLogs where needed for each test.
In case of fully automatic log analytic, I would be more open to this change. Otherwise it will make our life harder when finding the errors.

/close


Special case AuthnContextClassRef config option for transparent RequestedAuthnContext

This issue is imported from pivotal - Originaly created at Jun 12, 2020 by Thijs Kinkhorst
In https://github.com/OpenConext/OpenConext-engineblock/pull/848 we introduced a feature where we copy the RequestedAuthnContext from the SP into our outgoing AuthnRequest to the IdP.
This turned out to be problematic to do unconditionally: #173266118
We need a more fine grained solution.
Engine will already have configuration of specific authncontextclassref's to include in the AuthnRequest to the IdP as part of this project. We want to add a special value which will not itself be sent literally, but means that EB will copy the RequestedAutnContext from the SP.
Proposed name: transparant_authn_context
On the 'return' from the IdP, if this was the requested AuthnContext, checks can be skipped: we will just be fully transparent and send the returned value to the SP for further processing (already happens now).

@thijskh Currently eduID supports three possible authncontextclassref\'s. Will the new metadata field `transparant_authn_context` be a list of supported values? Would it make sense to make it a boolean meaning every possible authncontextclassref\'s are passed to the IdP and the resulting authncontextclassref of the IdP will be sent transparently to the SP? (Okke Harsta - Jun 16, 2020)

The option means it's just transparant, nothing more. So you can send 100 different values if you like. Transparant is transparant. (Thijs Kinkhorst - Jun 16, 2020)

Sorry. Misread. Thought it was going to be a new metadata field, but it just an extra option in the enum of the mfaEntities in saml20_idp.schema.json. (Okke Harsta - Jun 16, 2020)

The behaviour described in the last paragraph is missing. The checks are not skipped so in this scenario for SP/IdP combination with this feature enabled:

SP sends requested authn context "urn:example:1" in authncontext
EB passes this indeed transparantly to IdP.
IdP returns "urn:example:1", or even "urn:example:2" in the assertion.
In both cases, EB presents "Fout - Multi-factor authenticatie mislukt" error. While it needs to let authentication succeed. (Thijs Kinkhorst - Aug 5, 2020)


common/types: add safe sub/add/mul for LayerID type

Motivation
closes: https://github.com/spacemeshos/go-spacemesh/issues/2414
Changes
LayerID Add/Sub/Mul operations will panic on wraparound.
Test Plan
Unit tests
TODO

[x] Explain motivation or link existing issue(s)
[x] Test changes and document test plan
[ ] Update documentation as needed

DevOps Notes

[x] This PR does not require configuration changes (e.g., environment variables, GitHub secrets, VM resources)
[x] This PR does not affect public APIs
[x] This PR does not rely on a new version of external services (PoET, elasticsearch, etc.)
[x] This PR does not make changes to log messages (which monitoring infrastructure may rely on)

In addition to the comment I added, which should save us a lot of casting, the purpose of the original issue was to prevent the possibility of overflows. The idea was to change the LayerID type from an alias of a uint64 to a struct that wraps a uint64 (that should not be exported). The way it's currently implemented doesn't prevent future developers to misuse the type and do calculations on it directly.

Making the underlying number in LayerDuration the same type as the underlying number in LayerID will save us some conversions. I can't think of any good reason to make LayerDuration any smaller than a uint32 (it won't save memory due to alignment, anyway).
In case you're asking "on a 64-bit system a uint64 and uint32 also take up the same memory, so why not go with uint64?" - it's because unlike LayerDuration, the LayerID is serialized and included in almost every message on the wire and in the mesh and there is potential for significant space savings there.
Let's just make both uint32.

To be honest feels like code becomes distinctly worse for almost no benefit.

What do you feel that makes the code after this change worse? The need to use .Before() and .After() instead of < and >? What else would change?

i disliked that i had to cast manually to LayerID where previously the type was just inferred from the definition. and the loops became a bit harder to read because of the After/Before. but I reviewed the code and from the second look it doesn't look as bad as it seemed to me initially

I think Noam is right here, I'm for explicitness and safety. This is an easy and obvious potential source of bugs. I've found a number of cases of unsafe layer arithmetic already.

I found one setback with xdr codec. It works using reflection and doesn't have support for extensions (e.g. fields that implement BinaryMarshal/BinaryUnmarshal methods). It is not hard to add such feature. However, for now I had to make Value of the LayerID public (see commit https://github.com/spacemeshos/go-spacemesh/pull/2489/commits/b667549c39754eb7fb4ee2f37fc8dec3cc4bacb2) which somewhat defeats the purpose of this refactoring.

bors try

@noamnelke yes xdr encodes it in the same way. in both cases, LayerID is encoded as 4 bytes big endian. i double-checked when debugging Test_VrfSignVerify. Note, there is still a minor tweak in that test, but that's because uint64 was changed to uint32.

I wish there was a cleaner solution to the XDR issue, but I can't think of one.

Here are a few options:

Make the Layer struct wrap an (exported) internal struct that stores the actual layer number. This adds one layer of indirection and makes it a bit less likely that a developer modifies the data directly.
Use custom encoders and decoders for the Layer type - they can marshal and unmarshal unexported struct members
Fork the xdr repo and make a slight change to marshal unexported fields - it looks like it would be a small change

I prefer the second option

Make the Layer struct wrap an (exported) internal struct that stores the actual layer number. This adds one layer of indirection and makes it a bit less likely that a developer modifies the data directly.

@lrettig can you elaborate, please? I am not sure that I follow. Let's say LayerID is stored like
type Block struct {
  Layer LayerID
}

Then we pass it to xdr encoder. When the wrapping will occur?

Use custom encoders and decoders for the Layer type - they can marshal and unmarshal unexported struct members

LayerID is usually not encoded separately. it is always a part of some bigger struct. Encoder recursively traverses the struct and encodes fields of the struct according to internal rules. I don't see how we can use encoder for our use case, maybe I am missing something

Fork the xdr repo and make a slight change to marshal unexported fields - it looks like it would be a small change

The common solution would be to check for an interface like BinaryMarshal/BinaryUnmarshal if we are talking about the fork. Encoding unexported fields may result unexpected behavior for other structs.

Encoding unexported fields is not an option - we rely on this behavior to store data that we don't want serialized on some types.

...check for an interface like BinaryMarshal/BinaryUnmarshal...

I like this solution from a clean code perspective, but I wonder if forking the XDR lib wouldn't defeat the purpose of using "battle tested" XDR instead of rolling our own encoding? cc: @antonlerner

I think we shouldn't fork the XDR just for this implementation, as Noam said we chose to rely on this code because it is battle tested. also generally I support moving to .x files which will make xdr encoding / decoding much more efficient so this could be done as part of that change #2545

LayerID is usually not encoded separately. it is always a part of some bigger struct. Encoder recursively traverses the struct and encodes fields of the struct according to internal rules. I don't see how we can use encoder for our use case, maybe I am missing something

Are you sure that, if we specify a custom encoder/decoder for the Layer/LayerID type, it won't be triggered (during the recursive traversal) when a struct it's embedded in is marshalled?

Are you sure that, if we specify a custom encoder/decoder for the Layer/LayerID type, it won't be triggered (during the recursive traversal) when a struct it's embedded in is marshalled?

it doesn't look like that you can register an Encoder for a type. You can just use it to encode fields separately

@noamnelke @lrettig let me know if you want to finish review before merge. otherwise I will try to merge it today

bors merge

bors merge

bors merge

bors merge

flake in systemtest-p2p. can't be related to this PR
bors merge

bors merge


Page needs to be updated for Windows Server 2019

This page needs to be updated for Windows Server 2019.

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

ID: 1fd9ac7b-b86a-2c8a-e984-1bcfedf94225
Version Independent ID: 1c63e4a8-b99f-99fa-2e02-9f54585be392
Content: Bring up - Windows drivers
Content Source: windows-driver-docs-pr/bringup/index.md
Product: windows-hardware
Technology: windows-devices
GitHub Login: @barrygolden
Microsoft Alias: bagold

@rossmpersonal, thanks for pointing out the outdated references to Windows Server 2012 and 2016.
I'm adding the feedback you've provided to an internal work item to update the Bring up guide topic.

@rossmpersonal, thanks for pointing out the outdated references to Windows Server 2012 and 2016.
I'm adding the feedback you've provided to an internal work item to update the Bring up guide topic.


Build mkcert for arm64 Linux

There isn't a build for arm64 Linux at the moment. This PR adds support for arm64. More details: https://github.com/golang/go/wiki/GoArm

I think it would be reasonable to add linux/arm binaries as well.


Disconnecting items from task

There is a need to allow disconnecting outcomes, resources and participants from tasks.
The best solution would be to drag the connected ones out, thus triggering a disconnect (a more complex solution would be to allow moving resources between tasks; example: moving a resource from one task into the other - disconnect from one and connect to the other).
First implementation could be a bit more simple, listing connected: participants, resources and outcomes within the task edit form and allowing to trigger the disconnection (this should not be related to the form itself and should be effective without the need for form submission).

Activity stream should be changed to handle these events natively, not understand these as an update to the Task (this is a useless clutter).

Current implementation seems to be feature complete and would do for now. It will most probably have to be enhanced in future.


RE #27: Handle INF & NAN numeric values

when INF is used (works in php) but not in json schema.  simply leave off the maximum in that scenario.
unless you found a reference on "inf" in json schema.  i couldn't find anything.

also, please update changelog

you can probably just leave off min/max on decimal and float altogether.

"minimum": -1 still present on decimal and float

looks like the decimal/float min/max got removed but so did the max config from strings...
    "provider": {
      "type": "string",
      "pattern": "^([\\w\\/-]|[\\w-][\\w\\/-]*[\\w-])$",
      "minLength": 0,
      "maxLength": 255,
      "pbj": {
        "type": "string",
        "rule": "single",
        "format": "slug"
      }
    },

previously was:
    "provider": {
      "type": "string",
      "pattern": "^([\\w\\/-]|[\\w-][\\w\\/-]*[\\w-])$",
      "minLength": 0,
      "maxLength": 20,
      "pbj": {
        "type": "string",
        "rule": "single",
        "format": "slug"
      }
    },


[Azure speech to text real-time] Disfluency removal

Currently I want to use the Disfluency removal function for Speech To Text real-time but I don't see any official documentation on how to configure it. So is this functionality released yet? Is it available for .NET use?
Thanks.

Hi, this feature should be enabled by default, and non-configurable. Do you see it not working in some conditions? Ref. https://learn.microsoft.com/azure/cognitive-services/speech-service/display-text-format?pivots=programming-language-csharp#disfluency-removal for the expected behavior.

Hi, this feature should be enabled by default, and non-configurable. Do you see it not working in some conditions? Ref. https://learn.microsoft.com/azure/cognitive-services/speech-service/display-text-format?pivots=programming-language-csharp#disfluency-removal for the expected behavior.

I have this enabled but the real-time speech-to-text from the microphone on .NET still doesn't remove all the non-fluent words, it still has words like "uh, umm, etc". It still doesn't work as I expected. Is there anything else I need to do?

@maivanchuong95 It seems this feature may need to be explicitly enabled after all - please apply the following setting before creating a recognizer
speechConfig.SetProperty(PropertyId.SpeechServiceResponse_PostProcessingOption, "TrueText");

(where speechConfig is a SpeechConfig object)
This property is described in https://learn.microsoft.com/dotnet/api/microsoft.cognitiveservices.speech.propertyid?view=azure-dotnet.

Closed as answered, please open a new issue if more support is needed.

Is there a method to disable Disfluency Removal via the Python swagger_client properties for any of the Azure AI Speech STT models for .mp4 batch or blob transcription?  My use case includes analyzing presentations for filler words (um, uh, er, hmm, etc.) which requires a verbatim transcript from Azure AI Speech.


Re-examine unit test tooling and patterns

For example, do we want to continue forward with enzyme, or is it worth the effort to add react-testing-library?

Hello @joshuarrrr, I think that's a good idea. The answers to why we need this and how we can migrate tests are pretty well described in the official react-testing-library documentation. In addition, it will also help us migrate to React v18. I think we need to follow the next plan to make the migration smoother:

[ ] Update jest and enzyme
[ ] Determine what functionality is not covered and what needs to be covered first
[ ] Setup react-testing-library
[ ] Cover new or uncovered functionality with tests using react-testing-library
[ ] Rewrite existing tests written with enzyme using react-testing-library

+1 I think its necessary mainly because enzyme is dead (Ref) If we want to move to Node 18, this is a necessary upgrade. Some of the initial investigation we need to do here is how many tests are we talking about? Based on the last CI run i see 3067 tests and 301 test suites. There are also 254 references of enzyme in the codebase.
My initial suggestion is the following steps:

[ ] Audit the common enzyme patterns used in the repo
[ ] Break the migration down into multiple chunks so that the PR's are manageable and the change can be validated.
[ ] Start migration

Since react 18 forced the hands of many libraries to do a similar migration, there are plenty of articles out there explaining each of their approaches. e.g. https://blog.sentry.io/2023/02/23/sentrys-frontend-tests-migrating-from-enzyme-to-react-testing-library/


Kraken Slayer model is not technically accurate

Jinx is shown in this image on the right side to be holding and fleeing with the Kraken Slayer, showing it to be a (potentially even ship mounted) harpoon gun used for fighting sea monsters. It's sleek and long to hold the entire harpoon.
Maybe something for a future update? Sorry if this sounds pedantic, I am very into the lore of these things. The other 3D models are great.

Not sure how to add labels

Also pictured, which have gotten obscure or no representation elsewhere, are Eclipse and Immortal Shieldbow among a few others.

Thanks for the image, it's nice to have something more to work with than just the ingame item icon. I'll make a change when I can.

Fixed for the next update.


[cluster mode] inconsistent errors

Cluster is created and then destroyed before and after the tests. So test runs are idempotent.
For some reason, sometimes redis cluster client instance doesn't have sendCommand on it and sometimes it does. I assume that context can be rewritten on retry or smth and become 'undefined'
Vitalys-MacBook-Pro:mservice-users vitaly$ npm test

><EMAIL_ADDRESS>test /Users/vitaly/projects/mservice-users
> BLUEBIRD_DEBUG=1 multi='list=- xunit=test-report.xml' ./node_modules/.bin/mocha -R mocha-multi --timeout 10000

20:06:56 users: connected to rabbit@Vitalys-MacBook-Pro v3.5.2
20:06:56 users: queue "amq.gen-HS1YKx5rwxfoVL6TOyEKiA" created
20:06:56 users: queue "amq.gen-HS1YKx5rwxfoVL6TOyEKiA" binded to exchange "test-mocha" on route "test.users.*"
  ․ actions#register() should fail on incorrect payload: 5ms
  ․ actions#register() should create user, activate it, no captcha specified: 51ms
  ․ actions#register() should reject creating user, because it already exists: 59ms
  ․ actions#register() should fail when invalid captcha is passed: 36ms

  4 passing (4s)

Vitalys-MacBook-Pro:mservice-users vitaly$ npm test

><EMAIL_ADDRESS>test /Users/vitaly/projects/mservice-users
> BLUEBIRD_DEBUG=1 multi='list=- xunit=test-report.xml' ./node_modules/.bin/mocha -R mocha-multi --timeout 10000

20:07:11 users: connected to rabbit@Vitalys-MacBook-Pro v3.5.2
20:07:11 users: queue "amq.gen-57pK5eobgqjeLt8s_IU7Cw" created
20:07:11 users: queue "amq.gen-57pK5eobgqjeLt8s_IU7Cw" binded to exchange "test-mocha" on route "test.users.*"
  ․ actions#register() should fail on incorrect payload: 6ms
  1) actions#register() should create user, activate it, no captcha specified
  2) actions#register() should reject creating user, because it already exists
  3) actions#register() should fail when invalid captcha is passed

  1 passing (22s)
  3 failing

  1) actions#register() should create user, activate it, no captcha specified:
     Uncaught TypeError: Cannot call method 'sendCommand' of undefined
  ---------------------------------------------
  ---------------------------------------------
  ---------------------------------------------
      at module.exports (lib/connectors/redis.js:12:21)
      at module.exports (lib/service.js:106:9)
      at Context.<anonymous> (test/register.js:56:52)
      at exithandler (child_process.js:656:7)
      at maybeClose (child_process.js:766:16)
      at Socket.<anonymous> (child_process.js:979:11)
      at Pipe.close (net.js:466:12)

  2) actions#register() should reject creating user, because it already exists:
     Error: timeout of 10000ms exceeded. Ensure the done() callback is being called in this test.

  3) actions#register() should fail when invalid captcha is passed:
     Error: timeout of 10000ms exceeded. Ensure the done() callback is being called in this test.

// connectors/redis.js
'use strict';

var redis = require('ioredis');
var instance;

module.exports = function (config) {
    if (instance) {
        return instance;
    }

    instance = new redis.Cluster(config.redis.hosts, config.redis.options || {});
    // forked version used with lazyConnect enabled
    return instance.connect();
};

Redis configuration at the point of running:
{
            hosts: [
                { host: 'localhost', port: 30001 },
                { host: 'localhost', port: 30002 },
                { host: 'localhost', port: 30003 },
                { host: 'localhost', port: 30004 },
                { host: 'localhost', port: 30005 },
                { host: 'localhost', port: 30006 }
            ],
            options: {
                friendlyStackTraces: true,
                lazyConnect: true
            }
        }

Connection sequence:
    before(function (done) {
        exec(createRedisCluster, [ 'start' ], { cwd: redisClusterCwd }, done);
    });

    before(function (done) {
        this.timeout(10000);
        exec(createRedisCluster, [ 'create' ], { cwd: redisClusterCwd }, done);
    });

    before(function () {
        this.service = require('../lib/service.js')(overwrite);
        return this.service;
    });

// tests...

    after(function () {
        return this.service.call('close');
    });

    after(function (done) {
        exec(createRedisCluster, [ 'stop' ], { cwd: redisClusterCwd }, done);
    });

    after(function (done) {
        exec(createRedisCluster, [ 'clean' ], { cwd: redisClusterCwd }, done);
    });
});

I assume that it would be this line that fails, though stack traces don't really give me anything no matter how I try
https://github.com/luin/ioredis/blob/master/lib/cluster.js#L296

Just to clarify - operations that I perform is basically setex, set, get, hmset, hsetnx, but doubt this is of any help

Seems like you are invoking commands before cluster is connected. I saw your pr and the changes you making would cause this error.

Well, how do I make sure that cluster is connected?
I've waited for 'ready' event, but it's emitted as soon as one node connects, but not the other.
In the pr what I basically do is add 'lazyConnect' to make sure that it actually connect, but it's one and the same with the 'ready' event.
Assume the following code:
var redis = require('ioredis');
var instance = new redis.Cluster(hosts, { lazyConnect: true });

instance.connect().then(function () {
   return instance.set(Date.now().toString(), 'somerandomvalue');
});

I bet if you do this it will eventually throw the same error. I have to emphasize that I do wait for the ready event / connect resolve on my code

In most cases, you don't need to make sure the cluster is connected since Redis.Cluster buffers all commands invoked before the cluster is connected. So the following codes works:
var instance = new redis.Cluster(hosts, { lazyConnect: true });
instance.set(Date.now().toString(), 'somerandomvalue');

If lazyConnect is enabled, Redis.Cluster wouldn't connect to the every node in the Cluster but a few(typical only one) of them just to get the cluster info. When a command is invoked and the target node hasn't been connected, ioredis will connent to it automatically.
ready event in Redis.Cluster simply means ioredis has gotten the info of the Cluster from one of the nodes.

I'll run more tests, but I still had the same results with the lazyConnect: false, its just random and seem dependant on whether it was able to connect to a node that holds needed slots or not before the event

Let me know if there's anything I can do :-)

I tried turning off the lazyConnect, and still it fails from time to time
instance = new redis.Cluster(config.redis.hosts, config.redis.options || {});
some redis commands

 Uncaught TypeError: Cannot call method 'sendCommand' of undefined

Ok, I've added logs to
Cluster.prototype.sendCommand = function (command, stream, node) {
  if (this.status === 'end') {
    command.reject(new Error('Connection is closed.'));
    return command.promise;
  }

  var targetSlot = node ? node.slot : command.getSlot();
  var ttl = {};
  var reject = command.reject;
  var _this = this;
  if (!node) {
    command.reject = function (err) {
      _this.handleError(err, ttl, {
        moved: function (node, slot, hostPort) {
          debug('command %s is moved to %s:%s', command.name, hostPort[0], hostPort[1]);
          _this.slots[slot] = node;
          tryConnection();
          _this.refreshSlotsCache();
        },
        ask: function (node, slot, hostPort) {
          debug('command %s is required to ask %s:%s', command.name, hostPort[0], hostPort[1]);
          tryConnection(false, node);
        },
        clusterDown: tryConnection,
        connectionClosed: tryConnection,
        maxRedirections: function (redirectionError) {
          reject.call(command, redirectionError);
        },
        defaults: function () {
          reject.call(command, err);
        }
      });
    };
  }
  tryConnection();

  function tryConnection (random, asking) {
    if (_this.status === 'end') {
      command.reject(new Error('Cluster is ended.'));
      return;
    }
    if (_this.status === 'ready') {
      var redis;
      if (node && node.redis) {
        redis = node.redis;
      } else if (_.includes(Command.FLAGS.ENTER_SUBSCRIBER_MODE, command.name) ||
                 _.includes(Command.FLAGS.EXIT_SUBSCRIBER_MODE, command.name)) {
        redis = _this.subscriber;
      } else {
        if (typeof targetSlot === 'number') {
          redis = _this.slots[targetSlot];
        }
        if (asking && !random) {
          redis = asking;
          redis.asking();
        }
        if (random || !redis) {
          redis = _this.selectRandomNode();
        }
      }
      if (node && !node.redis) {
        node.redis = redis;
      }
      // this is where redis is undefined and crashes the system
      redis.sendCommand(command, stream);
    } else if (_this.options.enableOfflineQueue) {
      _this.offlineQueue.push({
        command: command,
        stream: stream,
        node: node
      });
    } else {
      command.reject(new Error('Cluster isn\'t ready and enableOfflineQueue options is false'));
    }
  }
  return command.promise;
};

Also, here is the stack trace (finally managed to get it)
  1) actions#verify() "before all" hook: add a set of jwt tokens:
     Uncaught TypeError: Cannot call method 'sendCommand' of undefined
      at tryConnection (/Users/vitaly/projects/ioredis/lib/cluster.js:324:13)
      at Cluster.sendCommand (/Users/vitaly/projects/ioredis/lib/cluster.js:294:3)
      at Cluster.executeOfflineCommands (/Users/vitaly/projects/ioredis/lib/cluster.js:255:12)
      at Cluster.refreshListener (/Users/vitaly/projects/ioredis/lib/cluster.js:82:12)
      at /Users/vitaly/projects/ioredis/lib/cluster.js:227:15
      at /Users/vitaly/projects/ioredis/lib/cluster.js:404:5
      at run (/Users/vitaly/projects/ioredis/lib/utils/index.js:146:16)

Further debugging:

it check target slot, it's undefined
 if (typeof targetSlot === 'number') {
   redis = _this.slots[targetSlot];
   console.log('clause <target slot>');
 }

it selects random node, apparently still undefined. Do we have empty nodes array? Probably this is the only way random node will return undefined
if (random || !redis) {
  redis = _this.selectRandomNode();
  console.log('clause <random node>');
}

Whole trace:
clause <target slot>
clause <random node>
Trace
    at tryConnection (/Users/vitaly/projects/ioredis/lib/cluster.js:330:27)
    at Cluster.sendCommand (/Users/vitaly/projects/ioredis/lib/cluster.js:294:3)
    at Cluster.executeOfflineCommands (/Users/vitaly/projects/ioredis/lib/cluster.js:255:12)
    at Cluster.refreshListener (/Users/vitaly/projects/ioredis/lib/cluster.js:82:12)
    at Cluster.g (events.js:180:16)
    at Cluster.emit (events.js:92:17)
    at /Users/vitaly/projects/ioredis/lib/cluster.js:227:15
    at /Users/vitaly/projects/ioredis/lib/cluster.js:411:5
    at run (/Users/vitaly/projects/ioredis/lib/utils/index.js:146:16)
    at tryCatcher (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/util.js:24:31)
    at Promise.successAdapter (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/nodeify.js:22:30)
    at Promise._settlePromiseAt (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/promise.js:528:21)
    at Promise._settlePromises (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/promise.js:646:14)
    at Async._drainQueue (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/async.js:177:16)
    at Async._drainQueues (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/async.js:187:10)
    at Async.drainQueues (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/async.js:15:14)
    at process._tickDomainCallback (node.js:492:13)

Added keys listing to random nodes call, and as I've suspected, the nodes array is empty. Question is why.
random nodes from: localhost:30001, localhost:30002, localhost:30003, localhost:30004, localhost:30005, localhost:30006
clause 3
clause <target slot>
random nodes from:
clause <random node>
Trace
    at tryConnection (/Users/vitaly/projects/ioredis/lib/cluster.js:331:27)
    at Cluster.sendCommand (/Users/vitaly/projects/ioredis/lib/cluster.js:295:3)
    at Cluster.executeOfflineCommands (/Users/vitaly/projects/ioredis/lib/cluster.js:256:12)
    at Cluster.refreshListener (/Users/vitaly/projects/ioredis/lib/cluster.js:82:12)
    at Cluster.g (events.js:180:16)
    at Cluster.emit (events.js:92:17)
    at /Users/vitaly/projects/ioredis/lib/cluster.js:228:15
    at /Users/vitaly/projects/ioredis/lib/cluster.js:412:5
    at run (/Users/vitaly/projects/ioredis/lib/utils/index.js:146:16)
    at tryCatcher (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/util.js:24:31)
    at Promise.successAdapter (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/nodeify.js:22:30)
    at Promise._settlePromiseAt (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/promise.js:528:21)
    at Promise._settlePromises (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/promise.js:646:14)
    at Async._drainQueue (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/async.js:177:16)
    at Async._drainQueues (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/async.js:187:10)
    at Async.drainQueues (/Users/vitaly/projects/ioredis/node_modules/bluebird/js/main/async.js:15:14)
    at process._tickDomainCallback (node.js:492:13)

@luin I assume I know what happens. During the tests I create a new cluster each time with redis-trib.rb and then connect to it. It is possible that at a certain time when ioredis requests slot information - there is none, even though connection can be established. After that it deletes all nodes and crashes. Probably this case wont really happen in production unless the whole cluster dies/resets, but I think it should be handled as an error during refresh slot call

@AVVS That makes sense. At first glance ioredis should retry refreshing the cluster info(related option: clusterRetryStrategy) when none of the nodes are ready. I'm going on a trip today and will look into this issue on the plane. Thank you for the information

Should be fixed in 1.4.0

@luin I've actually tested it more and pinpointed that to response from cluster that is not fully initialized. During my tests I start the cluster with redis-trib util via spawn process, then allocate the slots and its completed by the timeout, which is, of course, far from ideal. Either way, when redis receives some weird / incomplete response from a cluster, which contains 0 nodes (they were not able to connect yet) and I suppose that would still be the case for completely degraded cluster - it will make the process crash with
Uncaught TypeError: Cannot call method 'sendCommand' of undefined

Yes, When the cluster slots command returns an empty array(see the below snippet), ioredis would raise the TypeError, which is obvious a bug.
<IP_ADDRESS>:8888> cluster slots
(empty list or set)

I submitted a pr to fix this issue. I'll check it again tomorrow and welcome to give it a try if you have time.


fix: patch build issue

:tada: This PR is included in version 1.1.11 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Include all doc components in left panel nav

The default antora UI theme includes nav links from just the current component. Change it so we include nav links from all the components.
This improves the coherence of the docs and helps to reveal the shortcomings of the current structure, which I want to try to improve in some future PRs.
Also remove some links from the nav.adoc in this repo, since a. they're no longer useful now that the same links are in the nav menu, and b. because they are duplicates of the main component link, they actually break the javascript interactive menu tree handling.
Also includes some custom CSS to tweak the size, spacing, and add some color to highlighted nav links.
Ref: https://issues.redhat.com/browse/EC-155

The navigation for each component is empty for me.


Diode2: typo in description

The description of Modelica.Electrical.Analog.Semiconductors.Diode2 includes "[In] includes ..."  The "In" should be "It".

Thanks for reporting.
Resolved in master and maint/3.2.2 branch.


html-snippets in php file

Hi Guys,
Pls help me config it to use in php file
Thanks

I create a pull request for the php support. This should fix the problem.

the pull has been merged and the changed pushed to version 0.0.17 sorry for delay been busy with other work.
thank you

Thank you so much!


Add limit for occupation of charging points

charging points shouldnt be occupied for longer than 24h.

Time should be set via config