Request query gets mangled/encoded

I'm using pact-jvm-consumer 4.0.2 (protocol version 2) to write some consumer-side pact logic and produce a JSON file.  If I specify a url/query like this:
                .uponReceiving("A request for favorite courses")
                .path(favoriteCoursesPath)
                .method("GET")
             .query("include[]=term&include[]=total_scores&include[]=license&include[]=is_public&include[]=needs_grading_count&include[]=permissions&include[]=current_grading_period_scores&include[]=course_image&include[]=favorites")
                .headers(DEFAULT_REQUEST_HEADERS)

I get this generated in the json contract file:
        "query": "include[]\u003dterm%2C+include%5B%5D%3Dtotal_scores%2C+include%5B%5D%3Dlicense%2C+include%5B%5D%3Dis_public%2C+include%5B%5D%3Dneeds_grading_count%2C+include%5B%5D%3Dpermissions%2C+include%5B%5D%3Dcurrent_grading_period_scores%2C+include%5B%5D%3Dcourse_image%2C+include%5B%5D%3Dfavorites"

(If I use encodedQuery() instead of query(), I get the same thing.)
This query isn't interpreted correctly by our server logic, so we don't get the right fields back in our result, so our pact tests fail.
When I was using version 3.5.12 of the pact-jvm-consumer, it just echoed my query verbatim to the json file.  How can I do that (i.e., avoid encoding) in v4.0.2?  (I had to move to 4.0.2 to get the fix for https://github.com/DiUS/pact-jvm/issues/958.)

Even worse is when something like this is output to the json file:

And that's another big problem that I'm encountering -- the manner of encoding is very unpredictable, and of questionable correctness.  Again, I really wish there was a way to specify "don't encode my query!".
For now, I am relying on a series of sed commands to undo all of the encoding in the json file that is produced.

Version 4.0.7 has been released with this change

Thank you!


Runtime safe app manifest

https://docs.saleor.io/docs/3.x/developer/extending/apps/manifest
ATM creating the app manifest is done manually by the app developer. Having a typed schema + helper function for creating one would be a handy thing that would minimize potential errors during the app install.

Maybe put this to sdk

@krzysztofwolski please evaluate

https://github.com/sinclairzx81/typebox
or Zod + https://www.npmjs.com/package/zod-to-json-schema

With this library we can achieve:

A constructor/factory of Manifest
... that will use a Type Factory (Zod or Typebox) under the hood, to validate in runtime
... and export type inferred from Type Factory
... and export statically (build-time) generated json-schema

Some quick stats:

zod-to-json-schema has 14k downloads (last version only 2.5k) in the last week. It's built and maintained by a single person.
ajv has 75 million downloads (last version 17.5 million) in the last week. It's built, maintained, and financially supported by huge corporations such as Mozilla and Microsoft.

Closing as low priority


Make a line chart

Create an app that takes data input and makes a line chart.

I would love to contribute to this!

Can I work on this issue under LGM-SOC?

@Amrutha1101 I already assigned you one issue. Please complete that first. Solve the issues one at a time :)

@Rizwan-S  Can you provide a ui for that? It will be better that way to imagine.

@RiyaGupta89 , you are free to design the ui in any way you like. I am keeping it open ended to avoid restricting the creativity of contributors.

Okay, i can work on this issue.

Hey @RiyaGupta89 are you able to solve this issue? My code is ready...

@joshi-kaushal You can push your code then if its ready.

@RiyaGupta89 Made a PR, have a look.
@Rizwan-S please tell me what exactly to remove I am not getting it.


THRIFT-4547 Add Swift cross tests

This is Work-in-progress implementation of Swift cross language test client and server.
I had to upgrade swift in docker image for the tests to work (to 5.1.4).
Only few tests are implemented so far both in client and in server. The goal now was to write at least some test so that I can see if it at least partially works.
Requires #2036, #2038, #2047 to work.
Server does not work yet (in linux command line app; they do work in iOS app), notifications are not delivered from NotificationCenter and I don't know how to setup it properly.
This obviously introduces a lot of failures to the cross tests.
Any comments/improvemets are welcome!

[ ] Did you create an Apache Jira ticket?  (not required for trivial changes)
[x] If a ticket exists: Does your pull request title follow the pattern "THRIFT-NNNN: describe my issue"?
[ ] Did you squash your changes to a single commit?  (not required, but preferred)
[ ] Did you do your best to avoid breaking changes?  If one was needed, did you label the Jira ticket with "Breaking-Change"?
[ ] If your change does not involve any code, add  [skip ci] at the end of your pull request to free up build resources.

Please cherty-pick only the first commit, the rest is not finished yet.

Please cherty-pick only the first commit, the rest is not finished yet. See #2050

I noticed. That's why I deleted my comment :-)


[WIP] Add an option to enable bitmap in IncrementalIndex during real time ingestion

Fixes #11301

Description

Choice of algorithms

If enableInMemoryBitmap is set to true in tuningConfig in the supervisor spec, a bitmap is maintained during the data is in incremental index for each dimension that uses bitmap in the schema, i.e., for a dimension, only if bitmap is to be created when creating the immutable segment during handoff, will a corresponding temporary in memory bitmap be created.
This in-memory bitmap is not serialized or reused during persistence to completely separate from the other bitmap created in the immutable segment for clean logic separation.
In terms of the implementation of this in-memory bitmap, currently user can't specify it anywhere and only Roaring bitmap is used as the default implementation. The PR doesn't add choices to pick other compressed bitmaps like Concise Bitmap because we don't see clear performance benefits to add other implementations at the moment.
In terms of the implementation of Roaring bitmap, there are 3 implementations available in the Roaring bitmap library: MutableRoaringBitmap, ImmutableRoaringBitmap and RoaringBitmap. RoaringBitmap is supposed to be more performant than the other two in this case because it doesn't need to maintain a byte buffer backend and byte buffer backend is only convenient if we need to do Mmap or if there's serde involved, which is the case for batch ingested immutable segments querying. However, the implementation in the PR tries reusing the logic in the current Java classes built for the batch ingested immutable segments, so the byte buffer backed implementation MutableRoaringBitmap is used to store row indexes for each new rows. During query time, a snapshot of the bitmap is needed so MutableRoaringBitmap is cast to ImmutableRoaringBitmap, which involves copying at one of the stages of the conversion. During the copy, for high cardinality dimensions, the number of row indexes for a given row value should be small so the copying overhead should be minimal; for low cardinality dimensions, supposedly there are more data to copy than the previous case, though we don't see obvious issue during testing and we can add metrics on the copying time and as long as the benefit outweigh the no bitmap full scan case, it should still be worthwhile.

Behavioral aspects. What configuration values are acceptable? How are corner cases and error conditions handled, such as when there are insufficient resources?

Enable in memory bitmap construction in supervisor spec
{
  "type": "kafka",
  "tuningConfig": {
    ...
    "enableInMemoryBitmap": true
    ...
  }
}

Class organization and design (how the logic is split between classes, inheritance, composition, design patterns)

The implementation tries piggybacking on the bitmap query related classes of batch generated immutable segment index (QueryableIndex and its support classes) as much as possible to reduce duplicate work.
Benchmark
Production Cluster Benchmark

Figure 1: Production cluster use case 1 P99 latency reduction on Middle Managers. The diagram shows Middle Manager P99 latency reduction (more than 30x) with the same middle manager capacity before and after enabling in memory bitmap for use case 1.

Figure 2: Production cluster use case 1 QPS on Middle Managers. The diagram shows the corresponding increase of QPS throughput before and after enabling in-memory bitmap for use case 1 in Figure 1.

Figure 3: Production cluster use case 2 P90 latency (ms) and infrastructure cost reduction on Middle Managers. The diagram shows a 10x reduction in Middle Manager P90 latency before and after enabling in-memory bitmap for use case 2. The diagram also shows a follow-up 68.89% host capacity reduction without impacting latency (the green to red line switch).
Unit Test Benchmark
Additional unit test benchmark result is also included in the comments of this PR: https://github.com/apache/druid/pull/11307#issuecomment-859209115
Correctness Validation
We added a query context flag that controls the broker to only return results from middle manager hosts (not included in the PR). We added a temporary query time flag useInMemoryBitmapInQuery that can control whether to use the in-memory bitmap index during query time even though the in-memory bitmap index is already created during ingestion (this flag is removed in the PR created because it doesn't serve any purpose other than validation during development). We stopped the Kafka producer temporarily and left some records in memory in the incremental index (~852,000 records, when reaching 1M, persistence will trigger) before persistence triggered to verify that the results are the same when useInMemoryBitmapInQuery is set to true or false.

Figure 4: Number of events ingested on Middle Managers for verification data source. The diagram shows the number of events ingested dropped to 0 and remained 0 as we stopped the Kafka producer.

Figure 5: Number of events in incremental index on Middle Managers for verification data source. The diagram shows the number of events in incremental index remained a little over 800k and temporarily not qualified for persistence threshold as we stopped the Kafka producer.
We ran the follow queries (some sensitive business related column name and filter value in the queries before are replaced with dummy value but they were issued with real value during the verification).
Query 1: aggregate sanity check. This query doesn't use in-memory bitmap in reality because no filter is there.
SELECT __time, SUM(spend)/1000000.00 as spend,
sum(paid_events) as paid_events,
sum(cnt) as cnt,
sum(cnt_gross) as cnt_gross
FROM verification_data_source
WHERE __time >= timestamp'2021-07-20 20:00:00'
GROUP BY __time
ORDER BY __time

Query 2: filter with random value. Column `advertiserid` has in-memory bitmap index created.
SELECT __time, SUM(spend)/1000000.00 as spend, sum(paid_events) as paid_events, sum(cnt) as cnt, sum(cnt_gross) as cnt_gross FROM verification_data_source WHERE advertiserid = '123' and __time >= timestamp'2021-07-20 20:00:00' group by __time

Query 3: filter on one of top 10 large advertisers. Column `advertiserid` and column `apptype` have in-memory bitmap index created.
SELECT __time, SUM(spend)/1000000.00 as spend, sum(paid_events) as paid_events, sum(cnt) as cnt, sum(cnt_gross) as cnt_gross FROM verification_data_source WHERE advertiserid = '123' and apptype = 3 and __time >= timestamp'2021-07-20 20:00:00' GROUP BY __time ORDER BY __time

Query 4: filter on one of top 10 small advertiser. Column `advertiserid` and column `apptype` have in-memory bitmap index created.
SELECT __time, SUM(spend)/1000000.00 as spend, sum(paid_events) as paid_events, sum(cnt) as cnt, sum(cnt_gross) as cnt_gross FROM verification_data_source WHERE advertiserid = '123' and __time >= timestamp'2021-07-20 20:00:00' GROUP BY __time ORDER BY __time

We verified that non empty results are return and they are the same whether useInMemoryBitmapInQuery is set to true or false for all the above queries.

This PR has:

[x] been self-reviewed.

[ ] using the concurrency checklist (Remove this item if the PR doesn't have any relation to concurrency.)

[ ] added documentation for new or modified features or behaviors.
[ ] added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
[ ] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
[x] added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
[ ] added integration tests.
[x] been tested in a test Druid cluster.

What's the motivation that an extra parameter useInMemoryBitmapInQuery is needed in query context ? I mean, if enableInMemoryBitmap is turned on, what is the case that useInMemoryBitmapInQuery should be false ?

What's the motivation that an extra parameter useInMemoryBitmapInQuery is needed in query context ? I mean, if enableInMemoryBitmap is turned on, what is the case that useInMemoryBitmapInQuery should be false ?

Hi Frank, good point. Once the feature is launched in production, I don't think we need to set useInMemoryBitmapInQuery to false again. The two knobs setting are more or less the remnant during our development to separate turning on writes and reads of this feature to be cautious. We first turned on the writes with the feature to monitor issues including task memory etc., then we found the system was stable and turned on reads with this feature to monitor potential query issues and the query performance and in case we found any issue, we would just update the query context which is faster than updating the supervisor spec in some way. On the other hand, assuming every user of this feature will verify this feature first in a dev cluster, we can also remove useInMemoryBitmapInQuery and leave just enableInMemoryBitmap, in which case even if we want to flip back to old behavior we can just update the supervisor spec again to set enableInMemoryBitmap to false, which is not much slower than using the query context and simpler than having two confusing knobs now. I can leave enableInMemoryBitmap if that's more desirable?

@wjhypo That makes senses to me.

BTW, do you have any performance report about:

how much it costs if enableInMemoryBitmap is turned on ?
how much it improves the performance if enableInMemoryBitmap is turned on ?

I also notice that enableInMemoryBitmap is designed in the supervisor spec, which means for each implementation of SeekableStreamXXX, they need to add this new switch.
Could this switch be a global switch so that every streaming indexing service don't care about it ? I don't have a strong opinion on it , I ask this question because I see there's a new streaming indexing service extension(#11240), if this switch is designed on supervisor spec, the new extension needs to make some change too.

BTW, do you have any performance report about:

how much it costs if enableInMemoryBitmap is turned on ?

I added enableInMemoryBitmap as one of the knob in IndexIngestionBenchmark.java, which is a benchmark to measure incremental index ingestion speed.
IndexIngestionBenchmark shows ~20% increase in ingestion latency when enableInMemoryBitmap is turned on. The time is spent updating a newly introduced duplicate copy of in memory rows (a map to help with point look up) and the new mutable bitmap.
Note that enableInMemoryBitmap is currently only added for onheap incremental index so the results involving offheap have no difference with or without enableInMemoryBitmap turning on (I saw that offheap index type was added in #10321 though not sure how widely that is used but can look into add the support to it as well)
Benchmark                        (enableInMemoryBitmap)  (indexType)  (rollup)  (rollupOpportunity)  (rowsPerSegment)  (schema)  Mode  Cnt       Score        Error  Units
IndexIngestionBenchmark.addRows                    true       onheap      true                 none             75000     basic  avgt   25  824005.256 ±  90887.658  us/op
IndexIngestionBenchmark.addRows                    true       onheap      true             moderate             75000     basic  avgt   25  825576.457 ±  32007.234  us/op
IndexIngestionBenchmark.addRows                    true       onheap      true                 high             75000     basic  avgt   25  999819.785 ±  82015.312  us/op
IndexIngestionBenchmark.addRows                    true       onheap     false                 none             75000     basic  avgt   25  690445.864 ±  46499.703  us/op
IndexIngestionBenchmark.addRows                    true       onheap     false             moderate             75000     basic  avgt   25  584969.426 ±  14600.701  us/op
IndexIngestionBenchmark.addRows                    true       onheap     false                 high             75000     basic  avgt   25  679140.388 ±  23986.906  us/op
IndexIngestionBenchmark.addRows                    true      offheap      true                 none             75000     basic  avgt   25  433357.104 ±  12639.080  us/op
IndexIngestionBenchmark.addRows                    true      offheap      true             moderate             75000     basic  avgt   25  571727.355 ±  34160.253  us/op
IndexIngestionBenchmark.addRows                    true      offheap      true                 high             75000     basic  avgt   25  708580.606 ±  46919.757  us/op
IndexIngestionBenchmark.addRows                    true      offheap     false                 none             75000     basic  avgt   25  431496.930 ±  22408.825  us/op
IndexIngestionBenchmark.addRows                    true      offheap     false             moderate             75000     basic  avgt   25  473382.222 ±  47553.284  us/op
IndexIngestionBenchmark.addRows                    true      offheap     false                 high             75000     basic  avgt   25  583791.170 ± 280729.090  us/op
IndexIngestionBenchmark.addRows                   false       onheap      true                 none             75000     basic  avgt   25  634348.944 ±  94976.337  us/op
IndexIngestionBenchmark.addRows                   false       onheap      true             moderate             75000     basic  avgt   25  673149.572 ±  83485.965  us/op
IndexIngestionBenchmark.addRows                   false       onheap      true                 high             75000     basic  avgt   25  804231.332 ±  51538.138  us/op
IndexIngestionBenchmark.addRows                   false       onheap     false                 none             75000     basic  avgt   25  538584.682 ±  82520.627  us/op
IndexIngestionBenchmark.addRows                   false       onheap     false             moderate             75000     basic  avgt   25  498543.767 ±  58939.061  us/op
IndexIngestionBenchmark.addRows                   false       onheap     false                 high             75000     basic  avgt   25  561594.170 ±  30065.589  us/op
IndexIngestionBenchmark.addRows                   false      offheap      true                 none             75000     basic  avgt   25  479489.156 ±  22592.577  us/op
IndexIngestionBenchmark.addRows                   false      offheap      true             moderate             75000     basic  avgt   25  592948.076 ±  41070.527  us/op
IndexIngestionBenchmark.addRows                   false      offheap      true                 high             75000     basic  avgt   25  779575.467 ±  85887.362  us/op
IndexIngestionBenchmark.addRows                   false      offheap     false                 none             75000     basic  avgt   25  431844.847 ±  17308.932  us/op
IndexIngestionBenchmark.addRows                   false      offheap     false             moderate             75000     basic  avgt   25  405176.768 ±  17160.792  us/op
IndexIngestionBenchmark.addRows                   false      offheap     false                 high             75000     basic  avgt   25  395044.934 ±   7471.592  us/op

Heap memory cost increase will be roughly linear to the number of rows in memory before reaching persistence threshold. The additional memory is pent to store the newly introduced duplicate copy of all the rows (a map to help with point look up) and the new mutable bitmap.

how much it improves the performance if enableInMemoryBitmap is turned on ?

I added enableInMemoryBitmap as one of the knob in IncrementalIndexReadBenchmark.java, which is a benchmark to measure incremental index read speed.
For IncrementalIndexReadBenchmark.read, there's not much gain because it doesn't resort to bitmap index and fall back to original scan behavior.
For IncrementalIndexReadBenchmark.readWithFilters, the benchmark latency is ~1% when enableInMemoryBitmap is turned on compared with not on. The performance gain ratio should in general be proportional to number of rows to scan when enableInMemoryBitmap is off.
Benchmark                                      (enableInMemoryBitmap)  (indexType)  (rollup)  (rowsPerSegment)  (schema)  Mode  Cnt       Score        Error  Units
IncrementalIndexReadBenchmark.read                               true       onheap      true            750000     basic  avgt    3  255934.582 ±  38680.227  us/op
IncrementalIndexReadBenchmark.read                               true       onheap     false            750000     basic  avgt    3  265250.412 ± 432313.943  us/op
IncrementalIndexReadBenchmark.read                               true      offheap      true            750000     basic  avgt    3  216499.188 ± 245267.860  us/op
IncrementalIndexReadBenchmark.read                               true      offheap     false            750000     basic  avgt    3  234943.134 ± 112352.936  us/op
IncrementalIndexReadBenchmark.read                              false       onheap      true            750000     basic  avgt    3  214170.637 ± 425769.753  us/op
IncrementalIndexReadBenchmark.read                              false       onheap     false            750000     basic  avgt    3  233857.140 ± 138967.586  us/op
IncrementalIndexReadBenchmark.read                              false      offheap      true            750000     basic  avgt    3  220245.179 ± 275535.572  us/op
IncrementalIndexReadBenchmark.read                              false      offheap     false            750000     basic  avgt    3  242299.919 ± 334551.380  us/op
IncrementalIndexReadBenchmark.readWithFilters                    true       onheap      true            750000     basic  avgt    3    1251.975 ±   6520.614  us/op
IncrementalIndexReadBenchmark.readWithFilters                    true       onheap     false            750000     basic  avgt    3    1116.205 ±    380.535  us/op
IncrementalIndexReadBenchmark.readWithFilters                    true      offheap      true            750000     basic  avgt    3  101979.792 ±  27837.794  us/op
IncrementalIndexReadBenchmark.readWithFilters                    true      offheap     false            750000     basic  avgt    3  127778.595 ±  32201.453  us/op
IncrementalIndexReadBenchmark.readWithFilters                   false       onheap      true            750000     basic  avgt    3  115779.478 ± 138832.848  us/op
IncrementalIndexReadBenchmark.readWithFilters                   false       onheap     false            750000     basic  avgt    3  126387.016 ±   8736.673  us/op
IncrementalIndexReadBenchmark.readWithFilters                   false      offheap      true            750000     basic  avgt    3  101549.458 ±  58495.230  us/op
IncrementalIndexReadBenchmark.readWithFilters                   false      offheap     false            750000     basic  avgt    3  125041.652 ± 142607.659  us/op

In sum, the infra cost is reduced because CPU is more expensive than memory. Essentially the trade off is we use some additional memory to save the CPU that does wasteful scan.

I also notice that enableInMemoryBitmap is designed in the supervisor spec, which means for each implementation of SeekableStreamXXX, they need to add this new switch.
Could this switch be a global switch so that every streaming indexing service don't care about it ? I don't have a strong opinion on it , I ask this question because I see there's a new streaming indexing service extension(#11240), if this switch is designed on supervisor spec, the new extension needs to make some change too.

I think it would be convenient to have a place to put the global switch but it seems hard now because either we put in tuningConfig or ioConfig, we will have to add a field in both KafkaXXXConfig and KinesisXXXConfig to capture the flag. Do you have a good place in mind?

when enable bitmap in IncrementalIndex during real time ingestion，have you considered adding vector query?

when enable bitmap in IncrementalIndex during real time ingestion，have you considered adding vector query?

Hi Mrxiashu, I have not visited the vector query part because the performance enhancement we got from enabling bitmap in incremental index was good enough for us at the time. However, vector query is a complementary optimization that we can further look into.

Mark this PR as WIP to work on 1) enhance description 2) resolve recent conflicts to master branch 3) improve unit test coverage and documentation

please don't close this.

@m-ghazanfar - Since it's a 2-year-old PR, you may not get a response back :) . Feel free to pick it up if you don't.

I kind of changed the world under this PR in the refactor of #12388, so quite a lot of things need to change to merge this, though some stuff might be a bit easier to implement now. After #12388, the right way to do this is to implement a ColumnIndexSupplier for the column indexers/incremental index stuff, hopefully it should be straightforward to do, but is quite a lot different than what things were when this PR was started. I'm happy to answer any questions or advise on how to move to that model.

I spoke to @wjhypo over mail and he mentioned the same thing. I think I'll create a completely different PR than this one.
Thanks @clintropolis - I will give this a try and maybe talk to you over slack if I have any question(which will likely be a lot)


Is conversion to arbitrary base supported?

Hello, excuse me.
Do you support converting the result to an arbitrary decimal result?
For example, Microsoft comes with Convert.ToString(x, 2), can output binary results, your project has a similar method? I'm not sure if it falls within the scope of the project

For decimals, it does not seem necessary to convert to any base (2,8,10,16). This function is required only for integers.


添加时间戳转换工具

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Duplicated with #106

您给发的信件已经收到！


Refactors HandleSpec to support Tuple-based handles

Continuing the advanture of enabling handles of tuples (and therefore joins).
This PR modifies the HandleSpec object to be able to represent handles that hold tuples. 2 major changes are done to achieve that:

HandleSpec holds multiple EntitySpecs now - this is needed as with handles of tuples there is no one "top-level" entity, but multiple ones.
HandleSpec holds the connection type, instead of the Singleton vs Collection and Entity vs Reference split, which are too rigid going forward.

Another implication of this change is that HandleSpec is no longer generically typed with the entity type.
I've decided to implement a "compatibility layer" for the HandleSpec, so that I can move the code using HandleSpecs gradually to this new universe. The compatibility layer allows instantiating and accessing data in the HandleSpec the way it was done previously.
This allows to finally properly code generate with schema2kotlin the code for particles (and test harness) using tuples. This PR cleans up a few temporary workarounds and solidifies the various ways to name a schema in schema2* and provides comments for what various names are for.

Thanks a lot Cameron!


Fix missing else-case in QueryPlanDPSize.executeBGPDataset

Fixes #119.

Just brought your change into master.
Thanks a lot.


Text selecting and quote rendering

Resolver when entering a project. Services are initialized before work space is shown.

Work space service to have all opened o selected documents in one service. Also al the quotes and codes.

Document Content Model which gadders all the info about the document screen distribution. Its pages, lines, quotes.

When documents are retrieved from the server its content is calculated. That means its pages, lines, and quotes.

When selecting text from the selected document ant pressing right click, a customized context menu is shown. If the first element of the menu is selected the quote is added to the document.

fixed some problems:

updating and deleting codes.
headers buttons wich should be visible only in workspace.
open only opened project's documents.
setting document's path not required at the API


Fix All Organisations filter

Trello:
https://trello.com/c/NE2xfVo8/539-bad-gateway-error-for-featured-documen
ts-in-whitehall-admin-1-day
Selecting All Organizations was leading to a server timeout and a
subsequent Bad Gateway error. This is probably due to the query which
is taking too long.
As a temporary solution we are inviting the user to insert a title or a
slug if “All organisations” is selected, to reduce the target scope.

Are there any JS tests for this feature?

This seems like an acceptable short term compromise in lieu of disabling the feature altogether.
We believe there's a user need to search by slug/title without knowing the organisation that published the original document (eg a child org).

@fofr unfortunately not, we couldn't work with js tests for this feature.

Closed because it wouldn't work for users with disabled Javascript.


NN-descent algorithm don't support save/load index?

From my evaluation of my testset, the performance (such as precision, search speed) of  NN-descent algorithm is similar. When I further use, I found that the NN-descent algorithm don't support save/load index feature.
So do nmslib have plan to support save/load index feature for NN-descent algorithm?
Thanks.

It's an old experimental version that was created before k-graph was open-sourced. So, definitely no saving index of this one. The current version of k-graph is much butter, but I believe that either SW-graph or HNSW should be either outperforming k-graph or have a comparable performance.


Buffer + tests

I've remapped the whole Buffer api and added tests for everything. I just miss on thing: enable >32bits integers for 4 write methods. Any hints? (it's commented in the code). Thanks!

Ok thanks to @alfonsogarciacaro I modified the code.

Question for @alfonsogarciacaro regarding TypedArray (again 😉 )
What the current support for : BigInt64Array(), BigUint64Array()? Thanks!

There's no support for native BigInt64Array yet. Fable uses a custom type for bigints. Apparently native support for bigints is already shipped in Chrome V8, but the ECMAScript proposal is not definitive yet (still in stage 3) and there's no core-js polyfill for it yet.
I'd say we should wait until the proposal is in stage 4 (so we know the API won't change) and there's a core-js polyfill, then we can replace our custom code with native support and rely on core-js to support old browsers. For now, we can keep using our custom code and ignore the native APIs that are using BigInt64Array, makes sense?

ok! Thanks for taking time to answer!


phoneUtils.getCountryCodeForRegion is not a function

In documentation presnt this function https://github.com/nathanhammond/libphonenumber#exports , but, unlucky, i can't use it. :( I install this lib through bower

It works, here is an example: https://jsfiddle.net/LwttLuz4/
Closing.

Thank you for answer.
Yes, realy, it work if i get your library from github, but don't work, if i use bower (bower i libphonenumber). Anycase thanx for this plugin.


Better webpack loader

We are using the loader below for webpack, it may be useful to mention it in the Webpack section:
https://github.com/s-panferov/awesome-typescript-loader

When I first wrote the guide, we discussed this and @s-panferov modestly suggested that ts-loader was a good default, but I agree. Recently I have seen a good number of people who've benefited from awesome-typescript-loader.

@newtack @DanielRosenwasser I still don't think that awesome-typescript-loader is a best default, but I don't mind about mentioning it as a possible choice.

Right, I should clarify that I'll mention that tip around that part of the tutorial or at the beginning. ts-loader is going to stay as the default.


refactor scorecard to be more testable

Description of the change:
This refactors the alpha scorecard cmd to be more easily testable by making a command struct to contain the various fields, and moving the arg validation into a validate method, and the execution into a run method.
Motivation for the change:
As per #3246 I'm going through the commands that will survive the KB integration and adding unit tests for the cmd layer. It is difficult to write unit tests for commands with global vars  and where the execution of the command is declared in-line in the cobra command declaration.

/cc @jmccormick2001 @varshaprasad96


Default to terminal foreground color for tilde, underline, colon and info

As suggested here

Thanks @spenserblack, and you're right s.fn instead fn(s) is indeed cleaner. I took inspiration from what you did and added the ColorizeOption but I don't think we need to override the whole Colorize interface.


Widget.js trick

http://www.techinfoknow.com/2014/07/remove-widgetsjs-blogger.html

This does make the js code easier manage but creates a lot of unused code in the dom.

This is also good for the window.jstiming script

In the starter template, this added about 76% unnecessary content and makes the base about 1.6Kib... :-1:


Oauth2 - Android Authentication - one-time-code flow

Im trying to implement oauth authentication (google) on my android app, instead of using custom devise authentication.
Im using the one time code flow : by sending one-time code to the server from my android app, server can fetch user informations.
Im not sure how : /:provider/callback route handle with one-time code flow.
The documentation shows that its easy to implement browser client oauth authentication.
Does this gem provide one time-code flow for an android app that authenticate with Oauth Provider?

+1

I'm also having issues with Facebook login from my iOS app.
Sending to auth/:provider simply puts it into this state:
INFO -- omniauth: (facebook_access_token) Request phase initiated.

+1

+1

Hi there @philippe3973 and @r0ckkhuya    ,
In an effort to cleanup this project and prioritize a bit, we're marking issues that haven't had any activity in a while with a "close-in-7-days" label. If we don't hear from you in about a week, we'll be closing this issue. Obviously feel free to re-open it at any time if it's the right time or this was done in error!
If you are still having the issue (especially if it's a bug report) please refer to our new Issue Template to provide some more details to help us solve it.
Hope all is well.


python37Packages.mysqlclient: 2.0.2 -> 2.0.3

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python37Packages.mysqlclient is: "Python interface to MySQL"
meta.homepage for python37Packages.mysqlclient is: "https://github.com/PyMySQL/mysqlclient-python"
meta.changelog for python37Packages.mysqlclient is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS

Warning: a test defined in passthru.tests did not pass

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 2.0.3 with grep in /nix/store/8pr6kpcy48k41937z0nlbqhixi40165k-python3.7-mysqlclient-2.0.3

directory tree listing: https://gist.github.com/dd298f2f7137d61555fdb705ae291c46

du listing: https://gist.github.com/5c696f0c331e2f18dc9de69aa3b451fe

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

22 total rebuild path(s)

7 package rebuild(s)

7 x86_64-linux rebuild(s)
4 i686-linux rebuild(s)
7 x86_64-darwin rebuild(s)
4 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
mlflow-server
python37Packages.mysqlclient
python37Packages.patator
python38Packages.mysqlclient
python38Packages.patator
python39Packages.mysqlclient
python39Packages.patator

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/8pr6kpcy48k41937z0nlbqhixi40165k-python3.7-mysqlclient-2.0.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

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

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/8pr6kpcy48k41937z0nlbqhixi40165k-python3.7-mysqlclient-2.0.3
ls -la /nix/store/8pr6kpcy48k41937z0nlbqhixi40165k-python3.7-mysqlclient-2.0.3/bin

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

1 package marked as broken and skipped:

mlflow-server

3 packages failed to build:

python37Packages.patator
python38Packages.patator
python39Packages.patator

3 packages built:

python37Packages.mysqlclient
python38Packages.mysqlclient
python39Packages.mysqlclient

Maintainer pings
cc @y0no for testing.

This is a semi-automatic executed nixpkgs-review which does not build all packages (e.g. lumo, tensorflow or torch)
If you find some bugs or got suggestions for further things to search or run please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 108195 run on x86_64-linux 1

1 package marked as broken and skipped:

mlflow-server

3 packages failed to build and are new build failures:

python37Packages.patator
python38Packages.patator
python39Packages.patator

3 packages built:

python37Packages.mysqlclient
python38Packages.mysqlclient
python39Packages.mysqlclient

ERROR: Could not find a version that satisfies the requirement psycopg2-binary (from patator)
ERROR: No matching distribution found for psycopg2-binary

This is a semi-automatic executed nixpkgs-review which does not build all packages (e.g. lumo, tensorflow or torch)
If you find some bugs or got suggestions for further things to search or run please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 108195 run on x86_64-linux 1

1 package marked as broken and skipped:

mlflow-server

3 packages failed to build and are new build failures:

python37Packages.patator
python38Packages.patator
python39Packages.patator

3 packages built:

python37Packages.mysqlclient
python38Packages.mysqlclient
python39Packages.mysqlclient

ERROR: Could not find a version that satisfies the requirement psycopg2-binary (from patator)
ERROR: No matching distribution found for psycopg2-binary


KAFKA-3147 : Memory records is not writable in MirrorMaker

Remove the batch from the RecordAccumulator once its closed while aborting batches. Make sure we don't accept new batch appends to RecordAccumulator while the producer is being closed.

LGTM.

@guozhangwang Maybe you can review this one? It has already been reviewed by @becketqin.

@MayureshGharat @becketqin LGTM. Though this PR itself does not completely solve the problem of MM, such that when the producer is forced to close, we can still throw IllegalStateException from the producer threads that are still trying to call send() on the producer, right? If that is the case could you file a separate JIRA as I merge it as is?

@guozhangwang I am just trying to think if the illegalStateException is fatal?

@MayureshGharat @becketqin Okay so just to clarify:

Let's say the producer client is being used by multiple threads, one thread call close() which then becomes a force close, then other threads are expected to see IllegalStateException?

And then for MM case, when the callback gets an error and force close producer according to the config, from the logs we will see IllegalStateException following a INFO("Closing producer due to send failure.") as the producer threads may be still sending messages after processed the callback?

@MayureshGharat @becketqin The JIRA for this PR has <IP_ADDRESS> as the "Fix Version". If that is still the plan, then it would help if Guozhang's questions were addressed.

Let's say the producer client is being used by multiple threads, one thread call close() which then becomes a force close, then other threads are expected to see IllegalStateException?
--> Yes.

And then for MM case, when the callback gets an error and force close producer according to the config, from the logs we will see IllegalStateException following a INFO("Closing producer due to send failure.") as the producer threads may be still sending messages after processed the callback?
---> Yes. I think that's right. I will have to test this. But from the first look at the code, this seems to be the behavior.

LGTM. Merged to trunk.

One question: do I understand it right that we are saying that Producer.close() is not meant to be idempotent (ie some callers of close may see an IllegalStateException)? Is this really what we want?

@ijuma @guozhangwang If thats the case, it would be nice to have something like isClosed() to check.

@guozhangwang  @ijuma @MayureshGharat
We patched <IP_ADDRESS> branch with this pull request. And tested patched version in our load test environment, after ~7 hours producer we have got same error:
java.lang.IllegalStateException: Memory records is not writable
at org.apache.kafka.common.record.MemoryRecords.append(MemoryRecords.java:93)
at org.apache.kafka.clients.producer.internals.RecordBatch.tryAppend(RecordBatch.java:69)
at org.apache.kafka.clients.producer.internals.RecordAccumulator.append(RecordAccumulator.java:168)
This always happens after next exceptions:
[kafka-producer-network-thread | audiLoadTest] WARN  org.apache.kafka.clients.producer.internals.Sender - Got error produce response with correlation id 2274005 on topic-partition mct-3, retrying (1 attempts left). Error: NETWORK_EXCEPTION


Make resolveMenuItem more easily reusable.

This permits reusing Cms Page resolveMenuItem with or without route persistence for the call to pageUrl().
The default behavior is unchanged as we default to false for route persistence.

Can you provide your usage example here along with why you needed routePersistence enabled for your use case?

@LukeTowers On the Project sub-section of this website, the menubar changes and all pages depend on the project slug, so their url is project/:slug/page (e.g. project/:slug/about, project/:slug/team, etc.)
In order to render the menu for those pages, the slug in their url needs to inherit the project slug, hence the route persistence.

With this PR, I can use the following in my component:
Event::listen('pages.menuitem.resolveItem', function ($type, $item, $url, $theme) {
    if ($type === 'cms-page' && str_starts_with($item->reference, 'project/')) {
        return \Cms\Classes\Page::resolveMenuItem($item, $url, $theme, true);
    }
}, 10000);

Without this PR, I need to duplicate the resolveMenuItem method in my component.


xcode 8 has problem to use WYMaterialButton

Hi I'm using the storyboard.
I got an error like this.
file:///Users/{user}/Documents/{dir}/{dir}/Base.lproj/CheckOut.storyboard: error: IB Designables: Failed to render and update auto layout status for CheckoutViewController (cXb-N2-E0w): dlopen(WYMaterialButton.framework, 1): Library not loaded: @rpath/pop.framework/pop
Referenced from: WYMaterialButton.framework
Reason: image not found
Anyone knows about this problem?
My xcode version is 8.1, using swift 2.3

Please update to Swift 3 and the problem should be solved~


Table is rendered with invalid widths

Version: f60219d
OS: Windows 11
Please check the attachment to compare rendered version and default (without the plugin)

This has been fixed in the dev branch.

Amazing! When do you expect to move it to main/master?

I just merged it. Can you check now?

Yes!!!!


Suffix temporary directory with unique path

Fixes #529
Reusing the temporary directory can cause issues with concurrent instances of Danger. By appending a unique identifier we can prevent race conditions when running Danger from concurrent processes.

Of course! Looks like I've broken all of the pipelines though :(

All set for review now @f-meloni, sorry for the CI spam!
When the runner is run, it creates a new temporary directory with a unique ID, for example:
/var/folders/86/1vtftp_j2rn_wdcq6232q_z80000gq/T/danger/4FE1BABB-D918-4FB6-9CCF-D27B45034149/

The temporary files are then created within this folder. Upon completion (either success or failure), then the unique folder is cleaned up leaving only the parent folder:
/var/folders/86/1vtftp_j2rn_wdcq6232q_z80000gq/T/danger/

One thing I'm unsure of though, is the dslJSONPath. I'm unsure where this is as it's passed from Danger JS, so I've left the cleanup for that as-is.

OK I don't think is quite there yet, I feel I'm missing some context. If we just delete the files individually, CI passes. If we remove the parent folder instead, half the CI runners fail. Perhaps I'm clearing these files up too soon?

Do I need to do anything else to get this merged in?

No, I thought I've merged it already, sorry

Thanks so much!

Bit of a long shot, but do you know how we can use this immediately on our pipeline? We tried pointing our Package.swift at the commit we need:
.package(name: "danger-swift", url: "https://github.com/danger/swift.git", .revision("263436d79c51bf32e21b960f387bac4ef2d05c34")

This failed though, as we also use Danger Xcode Summary, which relies on tagged versions of danger swift.


content(cms): create Tag "linked-open-data"

Automatically generated by Netlify CMS

going to close this as it seems to have gone stale. feel free to reopen, or create a new one, if this is still needed.


Add recommended ruleset to the usage example

for #9

it would be great if a version could be published to include the recommended ruleset so these docs will match latest

any chance this could get pulled in? it would be great to at least get a version bump so the recommended ruleset was included in a released version


Hero: allow to show tool tip with caption and credit

It seems this is not implemented for any of the hero options: https://ilo-ui-react.netlify.app/?path=/docs/components-content-hero--overview
See designs to see how tooltip should be displayed in each of templates. Examples:

Portal
Event

Hey @inesdgomes, I don't think it's possible to place the tooltip icon with precision next to the Hero Card. The HeroCard has variable width that depends on several different factors.
Instead we could position it in the right or left corner of the hero image like WFP does (depending on whether or not the Hero Card is right or left aligned). Would this work?

@justintemps Ok, but I guess then the only option is to right align it because it can't be left aligned when the hero card is left aligned to the edge of the page. If we right align it, could you then swap the orientation of the dark grey rectangle, like this:


Notify upload error to backend

While using the tusd library for Go, I'd like to receive a notification whenever an upload fails. For example, user starts uploading a file and closes the browser tab. The logs will show ERR_UNEXPECTED_EOF: server expected to receive more bytes, but how can I know that an error occurred? I was expecting it to push to the NotifyTerminatedUploads channel, but this probably isn't termination but an error.

There is no hook to notify you when an upload is interrupted. You could use the lack of post-receive events as an indication that an upload has either been interrupted or finished. post-terminate is emitted when the upload is deleted using the termination extension.
In short, there is no easy way to achieve what you are asking for. Do you mind explaining more what your intention with such a hook would be?

Hi Marius, my use case is that whenever an upload is initiated, an entry in the database is created, which is updated whenever the upload succeeds. When it fails, there is no way to know except for a timeout.
Perhaps I could only add the database entry whenever the upload has succeeded.

When it fails, there is no way to know except for a timeout.

In general, there is no reliable way to determine at the moment of the upload interruption whether the upload has failed permanently and the client will not attempt to resume it or whether the upload interruption is just temporary and the client will resume the upload. So we cannot provide a hook for definite upload failures. I recommend you to design your application without needing this information. But a timeout is a good heuristic to decide whether an upload can be cleaned up or not.

Thanks for the response, you're right there's no way to know.


cni: logic to determine "should add iptables" is flawed

apiVersion: apps/v1
kind: Deployment
metadata:
  name: istio-ingressgateway
  namespace: istio-ingress
spec:
  selector:
    matchLabels:
      istio: ingressgateway
  template:
    metadata:
      annotations:
        # Select the gateway injection template (rather than the default sidecar template)
        inject.istio.io/templates: gateway
      labels:
        # Set a unique label for the gateway. This is required to ensure Gateways can select this workload
        istio: ingressgateway
        # Enable gateway injection. If connecting to a revisioned control plane, replace with "istio.io/rev: revision-name"
        sidecar.istio.io/inject: "true"
    spec:
      containers:
      - name: istio-proxy
        image: auto # The image will automatically update each time the pod starts.
      - name: other
        image: alpine

This will install iptables. The logic currently is just "has istio-proxy and >1 container".
I am assigning to myself as I am working on a wider change that will overlap with the fix

gRPC not impacted due to "DISABLE_ENVOY" env var

seems like we either need a hack to look for args: [proxy, router, ...] or a new annotation/env var... I don't like either option much. I went with the args for https://github.com/istio/istio/pull/44835 but not attached to it.
cc @jacob-delgado @jwendell  if you have opinions.


Motion detecting sensitivity

Describe the bug
I need to be very close to the camera to motion to be detected.
To Reproduce
Normal movement is not detected.
Expected behavior
People in the room should detect motion.
Environment

Homebridge Version: v1.4.0beta4
Camera UI Version: v5.08

How to adjust sensitivity?
Edit: In the web interface under settings, cameras, I can select cameras but no settings to adjust.

Describe the bug I need to be very close to the camera to motion to be detected.
To Reproduce Normal movement is not detected.
Expected behavior People in the room should detect motion.
Environment

Homebridge Version: v1.4.0beta4
Camera UI Version: v5.08

How to adjust sensitivity?
Edit: In the web interface under settings, cameras, I can select cameras but no settings to adjust.

Oh can you open the page in a web browser please. And if it fails again to open the site, there should be an error in the browser console which i need to fix this issue

It’s the same on my Mac. Tried both in Safari and Chrome. Homebridge is installed in Docker on my Synology.

It’s the same on my Mac. Tried both in Safari and Chrome. Homebridge is installed in Docker on my Synology.

Google Chrome has a Dev Console
Press Command + Option + J (Mac) or Control + Shift + J (Windows, Linux, Chrome OS)
After than, refresh the page. „Console“ Tab should show an error and/or in the network you will see a request which has failed (it should be red)
Can you post the error pls

Here you have the errors.

Can you do a hard reload and see if the page is then displayed
Hold down Shift and click the Reload button.
Or Hold down Command, Shift and click the ‘R’ key.

After hard reload.

After hard reload.

Can you click on the link after the Line „Type Error: …“ - it starts with „app.d989….“
That should show me the error in the code. (The output should be minified, the console will let you format the code to display it readable).

            navigator.serviceWorker.addEventListener("controllerchange", (function() {

Is this what you need? Line 1982. Or do you need more?

            navigator.serviceWorker.addEventListener("controllerchange", (function() {

Is this what you need? Line 1982. Or do you need more?

This should be enough, thank you very much! I'll take a look

@onkelfarmor
v5.0.9-beta.0 is online, can you give it a try pls. It should hopefully fix the issue for you (maybe also clear the browser cache after installation/hb restart)
sudo npm i -g<EMAIL_ADDRESS>

Upgraded but still no settings. But the errors are gone in the developer console.
Anyway I can see the settings in another way?

Upgraded but still no settings. But the errors are gone in the developer console. Anyway I can see the settings in another way?

cleared browser cache? which browser?

Yes cleared - Chrome. Also tried in Inkognito.

very weird... is it possible to try it with an another device?

Have tried it on my phone as well and booted up an old windows machine as well, as I thought it was a Mac problem.
But another problem, whenever I open the web interface (port 8081) it opens up the start page. I just changed url to "/dashboard" to go to the web interface, as I can't get further in start.

ah you skipped the /start page?

Yes, don't know what to do there, I created a new user. But, maybe that is just what to do - it is not in English ... When I log in with the user then I don't reach the start page but settings. But the user can't see any settings too and the user has all rights.

Wait, now this error

Wait, now this error

The error seems to be a due to a chrome extension? do you have tried another browser? safari maybe?

https://www.akashmittal.com/unchecked-runtime-lasterror-message-port-closed/

I have tried Chrome and Safari on Mac, Safari on iPhone and Chrome on a windows pc with the same result.

This can be ignored, it has no effect on the page

Removed the folder. Restarted HB.
When opening camera ui I reach the start page and login with master/master. Afterwards I get the 3 page flow where I create a user. The flow ends with this error and start from the beginning.

I can then change the url to /dashboard and I am in.
My cameras are stille there but I still have no settings on the camera page.

Ok, i think there is something wrong with your config.json, can you post the config.json here pls

{
"name": "CameraUI",
"port": 8081,
"atHomeSwitch": true,
"debug": true,
"mqtt": {
"active": false
},
"http": {
"active": false
},
"smtp": {
"active": false
},
"ftp": {
"active": false
},
"ssl": {
"active": false
},
"cameras": [
{
"name": "Kitchen Homebridge",
"motion": true,
"switches": true,
"motionTimeout": 16,
"unbridge": true,
"hsv": true,
"prebuffering": true,
"prebufferLength": 4,
"videoConfig": {
"source": "-i rtsp://<IP_ADDRESS>/live0",
"subSource": "-i rtsp://<IP_ADDRESS>/live0",
"rtspTransport": "tcp",
"maxStreams": 2,
"maxWidth": 0,
"maxHeight": 0,
"maxFPS": 0,
"forceMax": true,
"vcodec": "copy",
"acodec": "libfdk_aac",
"stimeout": 10,
"audio": true
},
"videoanalysis": {
"active": true
}
},
{
"name": "Living Room Homebridge",
"motion": true,
"switches": true,
"motionTimeout": 15,
"unbridge": true,
"hsv": true,
"prebuffering": true,
"prebufferLength": 4,
"videoConfig": {
"source": "-i rtsp://<IP_ADDRESS>/live0",
"rtspTransport": "tcp",
"maxStreams": 2,
"maxWidth": 1920,
"maxHeight": 1080,
"maxFPS": 20,
"vcodec": "copy",
"acodec": "libfdk_aac",
"stimeout": 10,
"audio": true,
"debug": true
},
"videoanalysis": {
"active": true
}
}
],
"platform": "CameraUI"
}
],

very weird... everything seems to be ok...
Is it just the "settings/cameras" page that doesn't work?
It would also be interesting to know what triggered the "404" error (in the browser console/network tab it should say which request led to a 404 error)

hm i couldnt reproduce this issue, created everything from scratch.. hmm

How about the other pages?

only other page is Cameras in main navigation. I have two cameras but here are a lot cameras shown, my two cameras or shown again and again and again ....

only other page is Cameras in main navigation. I have two cameras but here are a lot cameras shown, my two cameras or shown again and again and again ....

Ok that will cause the error, i need to figure out why this is happening

Can you change the camera names in your config.json and restart homebridge pls

and try again then

No change :-(

can you reinstall v5.0.9-beta.1 pls
sudo npm i -E -n -g<EMAIL_ADDRESS>

No change ...

can you post your database pls
(homebridge folder where config.json is located > camera.ui > database > camera.ui.database.json)

{   "version": "1.0.9-beta.1",   "firstStart": true,   "cameras": [     {       "name": "Kitchen_HB",       "recordOnMovement": false,       "motionTimeout": 16,       "prebuffering": true,       "videoConfig": {         "source": "-i rtsp://<IP_ADDRESS>/live0",         "subSource": "-i rtsp://<IP_ADDRESS>/live0",         "rtspTransport": "tcp",         "maxStreams": 2,         "maxWidth": 0,         "maxHeight": 0,         "maxFPS": 0,         "forceMax": true,         "vcodec": "copy",         "acodec": "libfdk_aac",         "stimeout": 10,         "audio": true,         "debug": true,         "stillImageSource": "-i rtsp://<IP_ADDRESS>/live0"       },       "mqtt": {         "source": "-i rtsp://<IP_ADDRESS>/live0",         "subSource": "-i rtsp://<IP_ADDRESS>/live0",         "rtspTransport": "tcp",         "maxStreams": 2,         "maxWidth": 0,         "maxHeight": 0,         "maxFPS": 0,         "forceMax": true,         "vcodec": "copy",         "acodec": "libfdk_aac",         "stimeout": 10,         "audio": true,         "debug": true,         "stillImageSource": "-i rtsp://<IP_ADDRESS>/live0"       },       "smtp": {         "email": "Kitchen_HB"       },       "videoanalysis": {         "active": true       }     },     {       "name": "Living_Room_HB",       "recordOnMovement": false,       "motionTimeout": 15,       "prebuffering": true,       "videoConfig": {         "source": "-i rtsp://<IP_ADDRESS>/live0",         "rtspTransport": "tcp",         "maxStreams": 2,         "maxWidth": 1920,         "maxHeight": 1080,         "maxFPS": 20,         "vcodec": "copy",         "acodec": "libfdk_aac",         "stimeout": 10,         "audio": true,         "debug": true,         "subSource": "-i rtsp://<IP_ADDRESS>/live0",         "stillImageSource": "-i rtsp://<IP_ADDRESS>/live0"       },       "mqtt": {         "source": "-i rtsp://<IP_ADDRESS>/live0",         "rtspTransport": "tcp",         "maxStreams": 2,         "maxWidth": 1920,         "maxHeight": 1080,         "maxFPS": 20,         "vcodec": "copy",         "acodec": "libfdk_aac",         "stimeout": 10,         "audio": true,         "debug": true,         "subSource": "-i rtsp://<IP_ADDRESS>/live0",         "stillImageSource": "-i rtsp://<IP_ADDRESS>/live0"       },       "smtp": {         "email": "Living_Room_HB"       },       "videoanalysis": {         "active": true       }     }   ],   "notifications": [     {       "id": "9d458f61ee",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-9d458f61ee-1642356787_c_CUI.mp4",       "name": "Living_Room_Homebridge-9d458f61ee-1642356787_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:13:07",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "df0c726118",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-df0c726118-1642356971_c_CUI.mp4",       "name": "Living_Room_Homebridge-df0c726118-1642356971_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:16:11",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "ebc99d415a",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-ebc99d415a-1642357172_c_CUI.mp4",       "name": "Living_Room_Homebridge-ebc99d415a-1642357172_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:19:32",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "8ee1ee8f79",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-8ee1ee8f79-1642357388_c_CUI.mp4",       "name": "Living_Room_Homebridge-8ee1ee8f79-1642357388_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:23:08",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "e05e44ec20",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-e05e44ec20-1642357569_c_CUI.mp4",       "name": "Living_Room_Homebridge-e05e44ec20-1642357569_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:26:09",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "c1be16ced0",       "camera": "Kitchen Homebridge",       "fileName": "Kitchen_Homebridge-c1be16ced0-1642357673_c_CUI.mp4",       "name": "Kitchen_Homebridge-c1be16ced0-1642357673_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:27:53",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "ec0983a08c",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-ec0983a08c-1642357751_c_CUI.mp4",       "name": "Living_Room_Homebridge-ec0983a08c-1642357751_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:29:11",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "822e028fee",       "camera": "Kitchen Homebridge",       "fileName": "Kitchen_Homebridge-822e028fee-1642357852_c_CUI.mp4",       "name": "Kitchen_Homebridge-822e028fee-1642357852_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:30:52",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "2cc1ab3c08",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-2cc1ab3c08-1642357978_c_CUI.mp4",       "name": "Living_Room_Homebridge-2cc1ab3c08-1642357978_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:32:58",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "7439dff2b2",       "camera": "Kitchen Homebridge",       "fileName": "Kitchen_Homebridge-7439dff2b2-1642358115_c_CUI.mp4",       "name": "Kitchen_Homebridge-7439dff2b2-1642358115_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:35:15",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "0f8b95c8c1",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-0f8b95c8c1-1642358160_c_CUI.mp4",       "name": "Living_Room_Homebridge-0f8b95c8c1-1642358160_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:36:00",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "89d8e971c8",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-89d8e971c8-1642358344_c_CUI.mp4",       "name": "Living_Room_Homebridge-89d8e971c8-1642358344_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:39:04",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "1c70509063",       "camera": "Kitchen Homebridge",       "fileName": "Kitchen_Homebridge-1c70509063-1642358496_c_CUI.mp4",       "name": "Kitchen_Homebridge-1c70509063-1642358496_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:41:36",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "9deda3ee03",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-9deda3ee03-1642358677_c_CUI.mp4",       "name": "Living_Room_Homebridge-9deda3ee03-1642358677_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:44:37",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "f8a8eb8bec",       "camera": "Living Room Homebridge",       "fileName": "Living_Room_Homebridge-f8a8eb8bec-1642358856_c_CUI.mp4",       "name": "Living_Room_Homebridge-f8a8eb8bec-1642358856_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:47:36",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "f100530b68",       "camera": "Living_Room_HB",       "fileName": "Living_Room_HB-f100530b68-1642359163_c_CUI.mp4",       "name": "Living_Room_HB-f100530b68-1642359163_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:52:43",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "c92b94e3e3",       "camera": "Living_Room_HB",       "fileName": "Living_Room_HB-c92b94e3e3-1642359261_c_CUI.mp4",       "name": "Living_Room_HB-c92b94e3e3-1642359261_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:54:21",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "92feadd61b",       "camera": "Living_Room_HB",       "fileName": "Living_Room_HB-92feadd61b-1642359526_c_CUI.mp4",       "name": "Living_Room_HB-92feadd61b-1642359526_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 19:58:46",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "8cfe18d75f",       "camera": "Living_Room_HB",       "fileName": "Living_Room_HB-8cfe18d75f-1642359653_c_CUI.mp4",       "name": "Living_Room_HB-8cfe18d75f-1642359653_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 20:00:53",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "4a29b70704",       "camera": "Living_Room_HB",       "fileName": "Living_Room_HB-4a29b70704-1642359749_c_CUI.mp4",       "name": "Living_Room_HB-4a29b70704-1642359749_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 20:02:29",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "d0e786701d",       "camera": "Living_Room_HB",       "fileName": "Living_Room_HB-d0e786701d-1642359881_c_CUI.mp4",       "name": "Living_Room_HB-d0e786701d-1642359881_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 20:04:41",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     },     {       "id": "cb03aa7811",       "camera": "Living_Room_HB",       "fileName": "Living_Room_HB-cb03aa7811-1642359947_c_CUI.mp4",       "name": "Living_Room_HB-cb03aa7811-1642359947_c_CUI",       "extension": "mp4",       "recordStoring": true,       "recordType": "Video",       "trigger": "custom",       "room": "Standard",       "time": "2022-01-16 20:05:47",       "timestamp":<PHONE_NUMBER>,       "label": "Custom"     }   ],   "users": [     {       "id": 1,       "username": "morten",       "password": "hidden",       "sessionTimer": 14400,       "photo": "no_img.png",       "permissionLevel": [         "admin"       ]     }   ],   "settings": {     "aws": {       "active": false,       "accessKeyId": "",       "secretAccessKey": "",       "region": "",       "contingent_total": 5000,       "contingent_left": 5000,       "last_rekognition": ""     },     "cameras": [       {         "name": "Kitchen_HB",         "room": "Standard",         "resolution": "1280x720",         "pingTimeout": 1,         "streamTimeout": 60,         "audio": false,         "telegramType": "Snapshot",         "alexa": false,         "webhookUrl": "",         "privacyMode": false,         "camview": {           "favourite": true,           "live": true,           "snapshotTimer": 60         },         "dashboard": {           "live": true,           "snapshotTimer": 60         },         "rekognition": {           "active": false,           "confidence": 90,           "labels": []         },         "videoanalysis": {           "dwellTimer": 60,           "sensitivity": 75,           "difference": 5,           "regions": [             {               "finished": true,               "coords": [                 [                   0,                   100                 ],                 [                   0,                   0                 ],                 [                   100,                   0                 ],                 [                   100,                   100                 ]               ]             }           ]         }       },       {         "name": "Living_Room_HB",         "room": "Standard",         "resolution": "1280x720",         "pingTimeout": 1,         "streamTimeout": 60,         "audio": false,         "telegramType": "Snapshot",         "alexa": false,         "webhookUrl": "",         "privacyMode": false,         "camview": {           "favourite": true,           "live": true,           "snapshotTimer": 60         },         "dashboard": {           "live": true,           "snapshotTimer": 60         },         "rekognition": {           "active": false,           "confidence": 90,           "labels": []         },         "videoanalysis": {           "dwellTimer": 60,           "sensitivity": 75,           "difference": 5,           "regions": [             {               "finished": true,               "coords": [                 [                   0,                   100                 ],                 [                   0,                   0                 ],                 [                   100,                   0                 ],                 [                   100,                   100                 ]               ]             }           ]         }       }     ],     "general": {       "atHome": false,       "exclude": [],       "rooms": [         "Standard"       ],       "automation": {         "active": false,         "atHome": false,         "exclude": [],         "startTime": "08:00",         "endTime": "17:00"       }     },     "notifications": {       "active": false,       "removeAfter": 3,       "alexa": {         "active": false,         "domain": "",         "serialNr": "",         "message": "",         "startTime": "00:00",         "endTime": "23:59",         "auth": {           "cookie": "",           "macDms": {             "device_private_key": "",             "adp_token": ""           }         },         "proxy": {           "port": 9494         }       },       "telegram": {         "active": false,         "token": "",         "chatID": "",         "message": ""       },       "webhook": {         "active": false       }     },     "recordings": {       "active": false,       "type": "Snapshot",       "timer": 10,       "path": "/homebridge/camera.ui/recordings",       "removeAfter": 7     },     "webpush": {       "publicKey": "hidden",       "privateKey": "hidden",       "subscription": false     },     "widgets": {       "options": {         "locked": false       },       "items": []     }   } }

{
"version": "1.0.9-beta.1",
"firstStart": true,
"cameras": [
{
"name": "Kitchen_HB",
"recordOnMovement": false,
"motionTimeout": 16,
"prebuffering": true,
"videoConfig": {
"source": "-i rtsp://<IP_ADDRESS>/live0",
"subSource": "-i rtsp://<IP_ADDRESS>/live0",
"rtspTransport": "tcp",
"maxStreams": 2,
"maxWidth": 0,
"maxHeight": 0,
"maxFPS": 0,
"forceMax": true,
"vcodec": "copy",
"acodec": "libfdk_aac",
"stimeout": 10,
"audio": true,
"debug": true,
"stillImageSource": "-i rtsp://<IP_ADDRESS>/live0"
},
"mqtt": {
"source": "-i rtsp://<IP_ADDRESS>/live0",
"subSource": "-i rtsp://<IP_ADDRESS>/live0",
"rtspTransport": "tcp",
"maxStreams": 2,
"maxWidth": 0,
"maxHeight": 0,
"maxFPS": 0,
"forceMax": true,
"vcodec": "copy",
"acodec": "libfdk_aac",
"stimeout": 10,
"audio": true,
"debug": true,
"stillImageSource": "-i rtsp://<IP_ADDRESS>/live0"
},
"smtp": {
"email": "Kitchen_HB"
},
"videoanalysis": {
"active": true
}
},
{
"name": "Living_Room_HB",
"recordOnMovement": false,
"motionTimeout": 15,
"prebuffering": true,
"videoConfig": {
"source": "-i rtsp://<IP_ADDRESS>/live0",
"rtspTransport": "tcp",
"maxStreams": 2,
"maxWidth": 1920,
"maxHeight": 1080,
"maxFPS": 20,
"vcodec": "copy",
"acodec": "libfdk_aac",
"stimeout": 10,
"audio": true,
"debug": true,
"subSource": "-i rtsp://<IP_ADDRESS>/live0",
"stillImageSource": "-i rtsp://<IP_ADDRESS>/live0"
},
"mqtt": {
"source": "-i rtsp://<IP_ADDRESS>/live0",
"rtspTransport": "tcp",
"maxStreams": 2,
"maxWidth": 1920,
"maxHeight": 1080,
"maxFPS": 20,
"vcodec": "copy",
"acodec": "libfdk_aac",
"stimeout": 10,
"audio": true,
"debug": true,
"subSource": "-i rtsp://<IP_ADDRESS>/live0",
"stillImageSource": "-i rtsp://<IP_ADDRESS>/live0"
},
"smtp": {
"email": "Living_Room_HB"
},
"videoanalysis": {
"active": true
}
}
],
"notifications": [
{
"id": "9d458f61ee",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-9d458f61ee-1642356787_c_CUI.mp4",
"name": "Living_Room_Homebridge-9d458f61ee-1642356787_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:13:07",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "df0c726118",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-df0c726118-1642356971_c_CUI.mp4",
"name": "Living_Room_Homebridge-df0c726118-1642356971_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:16:11",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "ebc99d415a",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-ebc99d415a-1642357172_c_CUI.mp4",
"name": "Living_Room_Homebridge-ebc99d415a-1642357172_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:19:32",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "8ee1ee8f79",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-8ee1ee8f79-1642357388_c_CUI.mp4",
"name": "Living_Room_Homebridge-8ee1ee8f79-1642357388_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:23:08",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "e05e44ec20",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-e05e44ec20-1642357569_c_CUI.mp4",
"name": "Living_Room_Homebridge-e05e44ec20-1642357569_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:26:09",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "c1be16ced0",
"camera": "Kitchen Homebridge",
"fileName": "Kitchen_Homebridge-c1be16ced0-1642357673_c_CUI.mp4",
"name": "Kitchen_Homebridge-c1be16ced0-1642357673_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:27:53",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "ec0983a08c",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-ec0983a08c-1642357751_c_CUI.mp4",
"name": "Living_Room_Homebridge-ec0983a08c-1642357751_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:29:11",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "822e028fee",
"camera": "Kitchen Homebridge",
"fileName": "Kitchen_Homebridge-822e028fee-1642357852_c_CUI.mp4",
"name": "Kitchen_Homebridge-822e028fee-1642357852_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:30:52",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "2cc1ab3c08",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-2cc1ab3c08-1642357978_c_CUI.mp4",
"name": "Living_Room_Homebridge-2cc1ab3c08-1642357978_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:32:58",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "7439dff2b2",
"camera": "Kitchen Homebridge",
"fileName": "Kitchen_Homebridge-7439dff2b2-1642358115_c_CUI.mp4",
"name": "Kitchen_Homebridge-7439dff2b2-1642358115_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:35:15",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "0f8b95c8c1",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-0f8b95c8c1-1642358160_c_CUI.mp4",
"name": "Living_Room_Homebridge-0f8b95c8c1-1642358160_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:36:00",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "89d8e971c8",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-89d8e971c8-1642358344_c_CUI.mp4",
"name": "Living_Room_Homebridge-89d8e971c8-1642358344_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:39:04",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "1c70509063",
"camera": "Kitchen Homebridge",
"fileName": "Kitchen_Homebridge-1c70509063-1642358496_c_CUI.mp4",
"name": "Kitchen_Homebridge-1c70509063-1642358496_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:41:36",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "9deda3ee03",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-9deda3ee03-1642358677_c_CUI.mp4",
"name": "Living_Room_Homebridge-9deda3ee03-1642358677_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:44:37",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "f8a8eb8bec",
"camera": "Living Room Homebridge",
"fileName": "Living_Room_Homebridge-f8a8eb8bec-1642358856_c_CUI.mp4",
"name": "Living_Room_Homebridge-f8a8eb8bec-1642358856_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:47:36",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "f100530b68",
"camera": "Living_Room_HB",
"fileName": "Living_Room_HB-f100530b68-1642359163_c_CUI.mp4",
"name": "Living_Room_HB-f100530b68-1642359163_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:52:43",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "c92b94e3e3",
"camera": "Living_Room_HB",
"fileName": "Living_Room_HB-c92b94e3e3-1642359261_c_CUI.mp4",
"name": "Living_Room_HB-c92b94e3e3-1642359261_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:54:21",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "92feadd61b",
"camera": "Living_Room_HB",
"fileName": "Living_Room_HB-92feadd61b-1642359526_c_CUI.mp4",
"name": "Living_Room_HB-92feadd61b-1642359526_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 19:58:46",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "8cfe18d75f",
"camera": "Living_Room_HB",
"fileName": "Living_Room_HB-8cfe18d75f-1642359653_c_CUI.mp4",
"name": "Living_Room_HB-8cfe18d75f-1642359653_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 20:00:53",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "4a29b70704",
"camera": "Living_Room_HB",
"fileName": "Living_Room_HB-4a29b70704-1642359749_c_CUI.mp4",
"name": "Living_Room_HB-4a29b70704-1642359749_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 20:02:29",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "d0e786701d",
"camera": "Living_Room_HB",
"fileName": "Living_Room_HB-d0e786701d-1642359881_c_CUI.mp4",
"name": "Living_Room_HB-d0e786701d-1642359881_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 20:04:41",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
},
{
"id": "cb03aa7811",
"camera": "Living_Room_HB",
"fileName": "Living_Room_HB-cb03aa7811-1642359947_c_CUI.mp4",
"name": "Living_Room_HB-cb03aa7811-1642359947_c_CUI",
"extension": "mp4",
"recordStoring": true,
"recordType": "Video",
"trigger": "custom",
"room": "Standard",
"time": "2022-01-16 20:05:47",
"timestamp":<PHONE_NUMBER>,
"label": "Custom"
}
],
"users": [
{
"id": 1,
"username": "morten",
"password": "hidden",
"sessionTimer": 14400,
"photo": "no_img.png",
"permissionLevel": [
"admin"
]
}
],
"settings": {
"aws": {
"active": false,
"accessKeyId": "",
"secretAccessKey": "",
"region": "",
"contingent_total": 5000,
"contingent_left": 5000,
"last_rekognition": ""
},
"cameras": [
{
"name": "Kitchen_HB",
"room": "Standard",
"resolution": "1280x720",
"pingTimeout": 1,
"streamTimeout": 60,
"audio": false,
"telegramType": "Snapshot",
"alexa": false,
"webhookUrl": "",
"privacyMode": false,
"camview": {
"favourite": true,
"live": true,
"snapshotTimer": 60
},
"dashboard": {
"live": true,
"snapshotTimer": 60
},
"rekognition": {
"active": false,
"confidence": 90,
"labels": []
},
"videoanalysis": {
"dwellTimer": 60,
"sensitivity": 75,
"difference": 5,
"regions": [
{
"finished": true,
"coords": [
[
0,
100
],
[
0,
0
],
[
100,
0
],
[
100,
100
]
]
}
]
}
},
{
"name": "Living_Room_HB",
"room": "Standard",
"resolution": "1280x720",
"pingTimeout": 1,
"streamTimeout": 60,
"audio": false,
"telegramType": "Snapshot",
"alexa": false,
"webhookUrl": "",
"privacyMode": false,
"camview": {
"favourite": true,
"live": true,
"snapshotTimer": 60
},
"dashboard": {
"live": true,
"snapshotTimer": 60
},
"rekognition": {
"active": false,
"confidence": 90,
"labels": []
},
"videoanalysis": {
"dwellTimer": 60,
"sensitivity": 75,
"difference": 5,
"regions": [
{
"finished": true,
"coords": [
[
0,
100
],
[
0,
0
],
[
100,
0
],
[
100,
100
]
]
}
]
}
}
],
"general": {
"atHome": false,
"exclude": [],
"rooms": [
"Standard"
],
"automation": {
"active": false,
"atHome": false,
"exclude": [],
"startTime": "08:00",
"endTime": "17:00"
}
},
"notifications": {
"active": false,
"removeAfter": 3,
"alexa": {
"active": false,
"domain": "",
"serialNr": "",
"message": "",
"startTime": "00:00",
"endTime": "23:59",
"auth": {
"cookie": "",
"macDms": {
"device_private_key": "",
"adp_token": ""
}
},
"proxy": {
"port": 9494
}
},
"telegram": {
"active": false,
"token": "",
"chatID": "",
"message": ""
},
"webhook": {
"active": false
}
},
"recordings": {
"active": false,
"type": "Snapshot",
"timer": 10,
"path": "/homebridge/camera.ui/recordings",
"removeAfter": 7
},
"webpush": {
"publicKey": "hidden",
"privateKey": "hidden",
"subscription": false
},
"widgets": {
"options": {
"locked": false
},
"items": []
}
}
}

can you open an editor and change on line 2 "firstStart": true to "firstStart": false restart HB and try again pls (also clear the browser cache)

Removed the startup page, but everything ells is unchanged.

With everything else you mean the cameras and settings page?

Yep

other pages works as expected?

Describe the bug I need to be very close to the camera to motion to be detected.
To Reproduce Normal movement is not detected.
Expected behavior People in the room should detect motion.
Environment

Homebridge Version: v1.4.0beta4
Camera UI Version: v5.08

How to adjust sensitivity?
Edit: In the web interface under settings, cameras, I can select cameras but no settings to adjust.

Can you open the console again and then switch the camera here and see if errors appear in the browser?

and are there more than just your 2 defined cameras in the list?

On the Camera page in main navigation, when page loads I get these errors in console:

And when I scroll down, I get more and more errors. The page looks like this:

When opening settings, cameras, nothing happens in the console, but only two cameras in the list.

Can you update to v5.0.9-beta.2 pls, maybe there is something corrupted

No change

Remove on camera from config.json and restart hb and try again

no change, the camera page just shows the one camera a lot of times and still no change at settings, cameras.

Wtf.. thats so weird
Can you remove _ from your camera name and try again with only one camera pls
from Living_Room_HB to Test Camera

No change, tried uninstalling camera ui, deleting the folder, reinstall, add a Test Camera. Also tried changing mDNS advertiser til Bonjour HAP in HB settings.

Ok can you pls update to v5.0.9-beta.3
And any errors in the homebridge log so far?
which node version?

Tried uninstalling and get this error in the log, which I might have to remove first:
[Homebridge UI] [homebridge-camera-ui] ENOENT: no such file or directory, open '/homebridge/node_modules/homebridge-camera-ui/homebridge-ui/public/index.html'

Try with
sudo npm uninstall -g homebridge-camera-ui
And then install again through config ui x

https://user-images.githubusercontent.com/34152761/149678279-d528911f-8b09-4a65-aa94-085986ea2fa3.MOV

Startup flow is translated to English.
Still get the 404 error and manually type /dashboard.
I now only get one camera on the camera page, but I get this in the console and each second a new line Is written (like the last). There is also a spinner in the middle of the page.

Under settings, cameras nothing has changed - still only show the camera but no settings.

Startup flow is translated to English. Still get the 404 error and manually type /dashboard. I now only get one camera on the camera page, but I get this in the console and each second a new line Is written (like the last). There is also a spinner in the middle of the page.

Under settings, cameras nothing has changed - still only show the camera but no settings.

Ok good so far, i added this to debug it better, can you also open the settings > cameras page

Nothing happens in console when opening settings > camera page.

Nothing happens in console when opening settings > camera page.

Hm Nothing at all? It does not have to be an error

Nothing at all

Hi again, saw in your video, that you run camera ui as child bridge - I changed to the same, and now I see the settings!

Hi again, saw in your video, that you run camera ui as child bridge - I changed to the same, and now I see the settings!

What??! Thats very weird 😑, how about the cameras page?

This also works fine now - I see my Cameras with pictures and no spinning wheel.

This also works fine now - I see my Cameras with pictures and no spinning wheel.

Hmmm... maybe it was a caching issue from Homebridge? I could not reproduce it, no matter with or without child bridge...
Well luckily it works now, I'll close the issue, but will note the error and see if I can reproduce it someday 👍

Thanks for the fantastic support!


[NT-0] refac: Enable macOS binaries for Unity Editor Apple Silicon

This change should allow users of the Unity CSP package to run CSP within a Unity Editor Apple Silicon versions. Previously this was only possible for Unity Editor Intel versions.
This is what the change will look like on the macOS library's metadata.
Before:

After:

Tested locally by modifying metadata settings in-editor.
Now CSP appears to work as expected when running on a Unity client in both scenarios:

CSP running on Unity Editor Intel (via Rosetta) as before
CSP running on Unity Editor Apple Silicon

If there is a way to test the TC build scripts locally as well, please let me know. Thank you.
connected-spaces-platform Pull Request
For the reviewer

[ ] If required, are the changes covered by appropriate tests?
[ ] Are any public-facing API changes well documented?
[ ] Is the code easily readable and extensible and/or follow existing conventions?

TC builds can be tested by generating a patch file locally (using Git, a Git client, or a merge/diff tool) and submitting it as a personal build.

Thank you, are there docs on how to set this up locally and test it ? Would you need me to test this with local TC build before merging ?

@lyubomirlichev has shared additional info on how he has validated this change in Slack over here.


Remove LinkCloseMode

We will add this type back once there are multiple modes to support.

Looks good. But, no docs or test changes needed?

Nope, we didn't have any samples or anything demonstrating this option.


move source folder inside the docs folder

Hi @jeff-regier , would you prefer having source sphinx files inside docs/ or separated?
In this branch, we can edit documentation inside docs/source and run make github to compile all necessary html files into the docs/

Hi @zzhaozhe-profolio , I think the new way is better, with source under docs. I was trying to rebase on master and created a lot of merge conflicts in the process. Would you mind opening a new PR the changes?

Hi @zzhaozhe-profolio , I think the new way is better, with source under docs. I was trying to rebase on master and created a lot of merge conflicts in the process. Would you mind opening a new PR the changes?


Issue with Rendering JSONSchema Due to Special Characters in Reference Names

Description
We are encountering a rendering issue in our application related to processing a JSONSchema. The specific problem arises with the reference name that contains special characters (specifically a slash /). This issue is evident in the reference to tfc::observable<units::quantity<speed,nm/s,int64_t>>, where the slash in nm/s seems to interfere with the proper indexing and parsing of the schema.
Details

Schema Portion with Issue:
"tfc::observable<units::quantity<speed,nm/s,int64_t>>": {
    "type": ["integer"],
    "minimum": -9223372036854775808,
    "maximum":<PHONE_NUMBER>854775807,
    "x-tfc": {
        "unit": {
            "unit_ascii": "nm/s",
            "unit_unicode": "nm/s"
        },
        "dimension": "speed",
        "required": true
    }
}

Problematic Reference:
"$ref": "#/$defs/tfc::observable<units::quantity<speed,nm/s,int64_t>>",

Impact
The presence of the slash (/) in the reference name seems to be causing issues with the JSONSchema rendering in our application. This is likely due to the way JSON pointers are interpreted, where a slash typically signifies a new nested level in the JSON object.
Possible Solutions

Encoding Special Characters: Consider encoding special characters in the reference names. For example, replacing / with %2F might resolve the issue.

Schema Adjustment: If possible, adjust the schema to avoid using special characters in reference names.

Custom Parsing Logic: Implement custom parsing logic in the application to correctly handle these special characters in reference names.

Please advise @jbbjarnason

@SindriTh we should not support something that does not make sense, let's remove slashes from defs on the backend side.
Furthermore, statically assert in backend, so it won't compile if this occurs again.


Running plugin in case of apk splits.

I had a problem to run plugin when using abi splits.
Added a parameter that when defined filters list of all variants to provided name. Tested locally only and seems to work correctly.

Been having this issue for a while, there are workarounds mentioned in other threads, but a solid solution like this is welcome
LGTM


Added error context helper to help with tests. Also wrote unit tests for it.

What does this PR do?
I plan on using this PR in some tests I am writing. It creates a new type of error that has an error code associated with it. There is also an 'ErrorContext', which makes sure you don't accidentally create errors with codes that have no meaning. The ErrorContext also keeps statistics, which gives a nice metric for negative test coverage.
Which TC components are affected by this PR?
This affects nothing yet. Later it will affect new tests.
I have no plans to include this with traffic ops or other components.
What is the best way to verify this PR?
Run the unit test and read the code. I am hoping it is somewhat understandable from reading the code, however it might be a little more obscure since I'm only running negative tests and not showing how I'd use it. Below are a few snippets of snippets + pseudocode showing how I might use it.
package cache_config

const (
    COMMON_BASE            = 10
    NOT_ENOUGH_ASSIGNMENTS = iota + COMMON_BASE
    BAD_ASSIGNMENT_MATCH   = iota + COMMON_BASE
)

const (
    A_BASE                  = 40
    INVALID_ACTION_LABEL    = iota + A_BASE
    INVALID_ACTION          = iota + A_BASE
    INVALID_RESP_TO_COOKIES = iota + A_BASE
    INVALID_PIN_IN_CACHE    = iota + A_BASE
    INVALID_REVALIDATE      = iota + A_BASE
    INVALID_TTL_IN_CACHE    = iota + A_BASE
)

// scoped to the package name
var ErrorContext *test.ErrorContext

func init() {
    // *_BASE constants are not error codes in themselves, but can be used to
    // determine if an error code exists within a certain 'class' of errors
    errorCodes := []uint{
        INVALID_ACTION_LABEL,
        INVALID_ACTION,
        INVALID_RESP_TO_COOKIES,
        INVALID_PIN_IN_CACHE,
        INVALID_REVALIDATE,
        INVALID_TTL_IN_CACHE,
        NOT_ENOUGH_ASSIGNMENTS,
        BAD_ASSIGNMENT_MATCH,
    }
    // Not many mappings are made since most error messages have additional information
    ErrorContext = test.NewErrorContext("cache config", iterableErrorCodes)
    ErrorContext.AddMapping(NOT_ENOUGH_ASSIGNMENTS, "not enough assignments in rule")
    ErrorContext.TurnPanicOn()
}

package cache_config

func matchAssignmentThenDoXXX(token string) {
    if token does not contain '=' {
        return ErrorContext.NewError(BAD_ASSIGNMENT_MATCH, "could not match yyy assignment")
    }
    // do XXX with match result
}

func matchRuleThenDoXXX(config string) {

    if tokens in config is < 2 {
        return ErrorContext.NewError(NOT_ENOUGH_ASSIGNMENTS)
    }
    matchAssignmentThenDoXXX( config_tokens[0] )
    // continue...
}

Currently the only documentation I have is in the comments. To whoever is reading this, do you think it needs a README?
Check all that apply

[x] This PR includes tests
[ ] This PR includes documentation updates
[ ] This PR includes an update to CHANGELOG.md
[x] This PR includes all required license headers
[ ] This PR includes a database migration (ensure that migration sequence is correct)
[ ] This PR fixes a serious security flaw. Read more: www.apache.org/security

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/trafficcontrol-PR/2985/
Test PASSed.


Is Next.js 10 supported?

I see on the README it supports Next.js 9.5. Does it support Next.js 10?

Yes, Next.js 10 is supported 🙂
v9.5+ is the minimal supported version. It's a bit confusing, but what I mean here is >=v9.5.


Enable GENESIS_URL option for demo agents

Codecov Report

Merging #309 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #309   +/-   ##
=======================================
  Coverage   87.36%   87.36%
=======================================
  Files         236      236
  Lines       11075    11075
=======================================
  Hits         9676     9676
  Misses       1399     1399

@swcurran It's failing on trying to register the DID there, because it hasn't been given a LEDGER_URL to do the registration. I think this setting only works with the Alice agent because it doesn't need a public DID.