Fixed #32172 -- Adapted signals to allow async handlers.

Proposed implementation for ticket https://code.djangoproject.com/ticket/32172
I tried different options:

Make adoption inside of "send" method.
In this case  implementation became very complex. We need to send information about what kind of call (sync or async) we expect, and we can do that only through kwargs. However kwargs are preserved for signal needs, and adding new one possibly can clash with names on django-based projects. So I decided to make separate implementation.

Parallel execution.
In asyncio way it will be logical to run all receivers in parallel to get full power of asyncio. However, as sync_to_async creates a thread for every sync handler in receivers, it possibly can create much of threads that can completely kill performance.

So finally - that is separate method with almost same logic, adapted for asyncio.

FYI @carltongibson

Hi @kozzztik, yes I've seen it thanks — I was taking the weekend off though, and haven't got round to this just yet. 😀
@andrewgodwin Can I ask for your initial thoughts here?

I guess we do want to the send() call to be awaitable, so we can hand off control
Do we want to allow (existing sync) send() to be able to handle either type of handler too (like middleware)?

Yup, the format of send_async() there looks good - matches the convention we're going for of name_async, and we can't override pure send() for obvious reasons.
I would like to see both send() and send_async() handle both kinds of receivers, though, that's for sure. I'd also like to make sure we do some performance testing on this, as signals have been a performance bottleneck in the past.

@carltongibson @andrewgodwin I added support of async receivers to sync methods too (both send and send_robust)

@carltongibson @andrewgodwin do we need anything else?

HI @kozzztik — I haven't had a chance to look at this yet. Will get to you as soon as I can. Thanks for your patience.

@andrewgodwin added documentation. However I'm not native speaker, so feel free to correct this changes.

Hi @kozzztik — thanks for this, it looks good. I'm looking at tweaks to the documentation now.
Whilst I have you and @andrewgodwin here though, I wanted to quickly point to the response.close() call in send_response() that dispatches request_finished:
https://github.com/django/django/blob/9f72b0970db4be76d14bd7be5a21582d2cc484bc/django/core/handlers/asgi.py#L262
This would be a separate ticket but, @andrewgodwin do you have thoughts here? (Do we need a close_async() as well? 😬) — I ask since I'm keen to see if we can get to fully async request-response pathway, and that looks like the last blocker. (Yes, you have to remove all sync signals, and middleware, but it would be available at least.)
Then there's this:

I'd also like to make sure we do some performance testing on this, as signals have been a performance bottleneck in the past.

At the least we need to verify we're not slowing down the WSGI pathway… 🧐

I guess we need close_async as it hides signals.request_finished.send inside. Dream to have AsyncHttpResponse, but that is too much )
Who can do performance check (or share me info how to do it, but not sure it will be faster)? I don't know how it usually done.

@kozzztik I was just pondering that.
I think just a simple app that creates several hundred objects in a view, just logging in handlers..., then deleting them.
Run with timeit. Make sure it's not slower vs master.
I think that would be enough.
Happy to help on a simple app if you want?

@carltongibson, hah, just suggested there is known way to do such tests ) Ok, don't worry, I will build an small app for that.

Super. Thanks for your input @kozzztik 🏅

I've done performance tests and thats crazy.
Tests are here? and results are here
There are 3 types of tests:

Pure signal test. Create a signal, with 100 recievers and measure time needed for send.
Full cycle WSGI. Create Django wsgi instance and execute simple empty view. 100 recievers added for request start and close signals. Time for request measured.
Same as 2, but by ASGI application.

All test was run on master and this branch to compare. Each test configuration (test+branch+options) was run in 5 series with 1000-10000 requests.
In summary:

Pure send became twice (2.05-2.27) times slower. That is expected, it is always a trade, and that is a place that should became slower, in favor of all working faster. I tried to replace receivers cycle with huge generator expression in send, It became better (2.18), but not much.
WSGI with sync handlers became 1.47 times slower with 100 receivers. As it is not real expected case to have so much signals communication, I reduced number of signals to 10 (20 calls together on start and close request). It became better, 1.10, but still is notable.
ASGI. Here everything became worse. At first, it just stucks in 50% cases. I can't even stop it in debugger to analyze deadlock. If it even works I decreased number of requests from 100k to 10k and after that it gives comparable timings of with WSGI, so it is finally about 10 times slower even for master branch. Also timings may vary very much, it is seen on deltas between measures and average value. And thats not all...
When I switched to async receivers everything became 10 times more slower. I inspected what is going on and found this line
So blocking=false and time.sleep gives no chance for performance ) I see that was fixed while I done tests, so I will try to repeat with new version.

Finally, even it became better, I'm not sure that wrapping sync-async inside of django internals is good idea. Its eating performace very much. But profit is not obvious. For example, revciever can be sync, but have no blocking operations inside. Guess that happens very often. On my project almost everytime. But wrapper with create a thread for it. Current implementations works faster, as it wraps with thread only one time - on send. This new implementation do it on every receiver, that is overkill.
I'm think better to not wrap anything and just run sync code "as-is" even on async implementation. Developers can use wrappers themselves if they are actually needed.

Unfortunately we have to think about safety - just running sync code "as is" will break any previous assumptions developers may have made about connections and the blocking nature of things.
One thing we could try - do a single sync_to_async call that wraps all sync code, and vice-versa for async handlers? It's not going to be a massive improvement, but it'll help.
The main thing we need to be sure of performance-wise is that the synchronous case is not really much slower (i.e. existing projects); I'm curious where the 1.10 multiplier you mentioned in this case comes from. Do you think it's literally the extra call to if asyncio.iscoroutinefunction(receiver): doing it, or something else?

@andrewgodwin yep, it comes from this call. As originally send is just similar to map operation, it is very cheap. Adding anything to its logic significally increases its complexity and looks like asyncio.iscoroutinefunction is not so cheap operation which is done on every receiver call. If you have empty application that actually does nothing, this calls became notable.  Also, finally I don't understand what sense does it have to write async receivier for signal that send in sync way. It wouldn't work async finally, even after async_to_sync. It will just make it work while finally it shouldn't.
What assumptions can be broken? When I write blocking application I assume that everything is not thread safe. If I have shared resource, I should care about safety by myself. But otherwice, when when I write async code everything is run in one thread (if you woudn't call separate thread by yourself), and between two await calls code is thread safe "just because", thats why it is so cool to write on asyncio - you can forget about all thread safe problems. No locks, no treads, and thats gives a performance. But in current implementation, code may behave not obvious. If you will call sync send and write sync receiver, async_to_sync will run it in parallel thread, making it not thread safe.
In addition, if you have async code, and just forgot to send signal in async way. Async view, async reciever, and sync send. In this case your async reciever will be run in separate loop and thread, what is very unexpected behavior, as there is finally no reason for that. And it will break its work - it will be impossible in receiver to await any future from original loop (for example reuse existing connection), it will raise exception. And it is hidden, you wouldn't find it until something wouldn't be broken.
That is enough in developing async application to take care all the time to not do blocking things, as it kills perfomance. This sync/async transitions add few new ways to shoot a leg.

As originally send is just similar to map operation, it is very cheap. Adding anything to its logic significally increases its complexity and looks like asyncio.iscoroutinefunction is not so cheap operation which is done on every receiver call. If you have empty application that actually does nothing, this calls became notable.

@kozzztik  Why can't we run the asyncio.iscoroutinefunction check at the time of signal registration here and store this information for later use by send?
https://github.com/kozzztik/django/blob/3f73f1b71a263ec6d3f7c9b295456a6cf39dc50b/django/dispatch/dispatcher.py#L56

Also, finally I don't understand what sense does it have to write async receivier for signal that send in sync way. It wouldn't work async finally, even after async_to_sync. It will just make it work while finally it shouldn't.

Agreed, there's no performance gain at all and I believe the end-developer may have done that by mistake. But it may very well be possible that some registered receivers for that signal are sync and others async. That case is a bit tricky, IMO, since we can't expect developers to update their usage everywhere. So I guess that check needs to be there, even if it's redundant in terms of performance.

Hey )
I found performance very interesting subject, so I decided to make it more carefully, and got intersting results. I wrote new test, that is much more accurate and checks performance in additional situations.
Test runs django app in separate process to be sure, that testing code would not affect original performance. Also it uses a network protocol abstraction that gives possibility to correctly test different WSGI/ASGI implementations in same environment so they can be correctly compared. Both sides - test client and server works on asyncio to make possible use of efficient parallel requests.
I run tests for following implementations:

WSGI(multithread) - emulates WSGI server for Django WSGI app. to support parallel requests, every request is put under loop.run_in_executor, so it have thread pool as normal WSGI server have.
WSGI(single thread) - that is "control" implementation that do not use loop.run_in_executor, and just handles request as-is blocking server loop for response. Idea of implementation to check, how much performance required to support thread pool.
ASGI - Django ASGI implementation. Run in server loop through await as it is usually done by ASGI server.
FAST_ASGI. As I had some concerns about general ASGI handler solution, I wrote alternative handler implementation. It have no middleware adoption (just raises exception if middleware does not support async) and not uses sync_to_async for sending signals. So, finally, it have only one adoption - loop.run_in_executor for running sync view. Idea is same as with single thread WSGI - what performance effect all this staff have.

For this implementations I run four type of tests. Each test makes is 10 000 requests by view URL with 200 signal receivers added. Each receiver have its own call counter to check that everything works correct. Test is repeated 10 times to check that it gives similar timings each time. For tests, that run too long (~10 minutes) it is run only 3 times. In tests I used asgiref package with fixed freeze problem. Test types:

Calling async view in one thread
Calling sync view in one thread
Calling async view in 100 parallel threads. View makes 0.05 async sleep to emulate blocking operation.
Calling sync view in 100 parallel threads. View makes 0.05 blocking sleep to emulate blocking operation.
All tests run for master and this branch. That gives 4 implementations * 4 test types * 2 branches = 32 test results.
Also I run all tests for current branch again, but with async signal recievers. That gives 48 test situations in total. For parallel tests, as they have "sleeps" inside, I calculated "pure timings" to get pure implementation overhead similar with tests without sleeps. It is calculated as timing -0.05s * 10000 requests / 100 threeads.

Tests results are here on "parallel" page.
Results summary:

For master branch:

After asgiref fix, ASGI implementation became stable. However something is still wrong with async_to_sync transition, it still have freezes. Not sure, but looks like it is platform specific problem asyncio itself. But that just a guess.
Even if async_to_sync not freezes, it is doesn't works under server loop. Everything is fine in "normal" WSGI, as it uses separate threads for requests, but in single threaded implementation does not works with any async staff. That is not a problem itself as it is just test implementation, but creates strange assumptions on WSGI server implementation that it should not have an active loop in request thread. More interesting starts when we add async signal receivers. Only ASGI implementation correctly works with it, and only on one signal - request_started. In all other situations exception rised. As I understand, originally idea of async_to_sync was to run async receivers in any sync environment, but looks like it is not so good on practice.
WSGI implementation is slow on processing async requests (12 seconds over 7.6s ASGI processing sync requests), Guess if freeze problem will be fixed, that will became better too.
Adoptions eat performance very much. Implementation without adoptions about 1.5-2 times faster on both sync and async requests.
On parallel execution ASGI implementation extremely slow on sync views. In timings its slower that single thread blocking WSGI implementation. I found that problem finally in this line https://github.com/django/asgiref/blob/ee967d2e3be77bb4c5082542a538e1c77a37a031/asgiref/sync.py#L278 . This creates only one thread for processing sync views. As I understand, idea here is in thread safety. But finally that makes ASGI just single threaded blocking thing completely killing all both threading and async performance profits.

On this branch:

On one threaded tests performance much slower in all implementations, about +30% to timings.
On ASGI implementation this branch x15 slower with sync receivers. Problem is in bottleneck described above + thread task creating for every signal receiver call. Also that is makes async "break point" that returns flow control to loop on every call.
What really strange, is that on parallel execution performance is a liitle bit faster (<1%). I don't know why parallel execution have such effect, while single threaded much slower. May be some python internal optimizations triggered, or some optimization in modern processors (i run it on one of last Ryzen CPU), but something "eats" all overhead. It works even on "fast asgi" implementation that is pure asyncio, and fully single threaded, what means that there is no really "parallel" calls. I can only guess that reason is that in single threaded test server sleeps between calls waiting client to receive answer and send next request. That activates context switching and maybe reason somewhere there. But that is only a guess. Very strange thing, I checked three times to get sure that code is from correct branch is loaded, but that is true.

@shivanshs9 - good idea! I will make more - try to make adoption for both sync and async on signal connection stage. That should have minimum overhead.
However, looks like mixing both sync and async together is not good idea. That is opposite ideas that is not mean to work together. What do you think guys, on alternative idea: on sync signal send call only sync receivers, and on async call - async receivers. In that way you can write correct signal reaction implementation for sync and async if you not sure how signal will be send, and connect both. Only needed one will be called.

Hi @kozzztik — thanks for the investigation here — really useful and interesting. I will sit down with it and have a proper look over the Christmas period. 🥇

I've opened a new PR here to pick up where this left off: https://github.com/django/django/pull/16547


SOLR-14457: Fix closing of malformed GZIPInputStream

https://issues.apache.org/jira/browse/SOLR-14457
Cleaned up the way that GZIPInputStream objects are created, since I think the current manner doesn't work when GzipDecompressingEntity.getContent() is called multiple times after having read parts of the data.
I plan on adding a test before committing.

Sorry for joining late to the PR but I think that removing the interceptor entirely would be a better solution. The current HTTP Client version handles the compression itself when the right headers are present in the response, handling also the errors properly.
What do you think if I open a new improvement issue to remove that piece of code completely? (less code to maintain 😀)

@samuelgmartinez , Thanks for the input! I think that would be great to go as a new improvement ticket, and we will probably shoot for 9.0 (not 8.x) if we decide to go that direction.


I would like to contribute to this project. Is there any guidelines? Also where should I get started?

Hi @phoenix-1024 . Thanks for reaching out! We are still in the process of consolidating our guidelines and process for contributing. We hope to have that up over the weekend.
While we prepare that, we would love to know more about you and hear your ideas about contributing. We have regular calls for that. I'll update this issue with details about the next call. You can also follow us on twitter to learn when we have the next call

Thanks, Bro @soham96. I am free on weekends, So we can have a call then. Also, I don't need a literal guideline. Just point me at what needs to be done and I'll work on that. I am skilled at PyTorch but am willing to work with Keras. I have some experience building NN but have never refined(making them tiny) them.


Api key is sent with a leading whitespace

For some reason when testing out an API, the request made has an extra leading space in the api key set in the authentication section at the beginning of the page.
This happens both for api keys set in the header as well as for api key set in the query string.
You can try it out on the example: https://mrin9.github.io/RapiDoc/examples/example100.html#get-/pet/-petId-
And then making a request.
Even the generated curl code has the extra leading space:
curl -X GET "https://petstore.swagger.io/v2/pet/1234" \
 -H "Accept: application/json" \
 -H "api_key:  foo"
              ^

thanks for the report ... was able to create it on my end, will provide a fix with patch release soon as it has potential to effect many customers

Please release a new version, this is a critical fix


CMILib vs Slimefun BUG

server version: git-Pufferfish-27 (MC: 1.20.1)
CMILib <IP_ADDRESS>
Slimefun: Slimefun vDEV - 1104 (git c977454e)
image: https://prnt.sc/1GmSFjyV42ub
CMILib <IP_ADDRESS>  ( this downward version is working normally )

Should be resolved


Assert MAC address

Coverage decreased (-0.4%) to 72.945% when pulling a29104b0f44ddf280ad651b4bb0299c5bc886370 on feat/assert-mac-address into 79e438d9941388ab3c06cc91c30908a862251ddd on master.


Roll Engine from 67591c224585 to f45e6a865f4f (2 revisions)

https://github.com/flutter/engine/compare/67591c224585...f45e6a865f4f
2021-01-15<EMAIL_ADDRESS>Roll Skia from 7f81cb6901ae to 70ea0d97c1c5 (1 revision) (flutter/engine#23712)
2021-01-15<EMAIL_ADDRESS>Roll Dart SDK from 82cec4d65743 to c262c3e0d9d2 (1 revision) (flutter/engine#23711)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Commit queue failed; closing this roll.

Commit queue failed; closing this roll.


repository-azure: repository_verification_exception

ES 6.1.1
repository-azure 6.1.1
Since February, we have been using ES 6.1.1 w/ repository-azure 6.1.1 successfully in all dev lanes and production to take snapshots.  About a week or two ago, we started receiving errors on our nightly attempts to take snapshots in our production environment only.  Here's what we see:
Request:
PUT _snapshot/es-2018-05?pretty=true
{
  "settings": {
    "container": "elasticsearch-backups",
    "base_path": "es-2018-05",
    "compress": true,
    "chunk_size": "64mb"
  },
  "type": "azure"
}

Response:
{
  "error": {
    "root_cause": [
      {
        "type": "repository_verification_exception",
        "reason": "[es-2018-05] path [es-2018-05] is not accessible on master node"
      }
    ],
    "type": "repository_verification_exception",
    "reason": "[es-2018-05] path [es-2018-05] is not accessible on master node",
    "caused_by": {
      "type": "i_o_exception",
      "reason": "Can not write blob master.dat-temp",
      "caused_by": {
        "type": "storage_exception",
        "reason": "storage_exception: The specified resource does not exist."
      }
    }
  },
  "status": 500
}

I saw here Azure-keystore credentials not set that @russcam was seeing the same thing when the credentials weren't set so I went and removed and re-added the azure.client.default.account and azure.client.default.key values on each node in my 3 node cluster in case they had somehow become corrupted but to no avail.  I did not restart my instances after assuming the plugin just reads them on each request.  One thing I can't do is get it to show me the values I believe I'm entering (ie. since keystore add doesn't show the input on the screen) but I've done it the same way on each system and, again, it had been working just fine previously.
I have no idea why it should, of a sudden, stop working when it was working just fine for 3 months.  I did verify that the key had not changed.  I can access the storage account w/ the CloudBerry Explorer just fine.  The elasticsearch-backups container exists (as it has from the beginning) and the above PUT has always caused that folder to be created if it didn't already exist.  As I was saying, this continues to work in my lower dev lane's clusters so I'm stumped.

As I was saying earlier, I had not restarted any of my instances so I decided to embark on a rolling restart just to see if that'd resolve my issue.  After I had restarted two of the nodes, the one that was master and previously had all the primary replicas had moved the responsibility to node I hadn't yet restarted.  So, I decided to go ahead and try the request shown above again just to see if it was perhaps something node specific.  Sure enough, it worked.  So, I'm left to assume that the node that had become the master and received all the primaries from previous restarts (windows OS updates, etc.) was misconfigured (perhaps I fat fingered the key?) and that, if now it was to become so again, it would be properly configured and the snapshots would continue as expected.  I remain unsure if updating the keystore requires a restart.

Glad to hear that you got it resolved @tdoman. I believe repository-azure plugin reads credentials from the keystore only on first usage, @dadoonet is this correct?

This is correct. But I saw some recent changes where we are going to support hot reloading of credentials.
It's possible though to create a new client with new credentials and use that new client by recreating the repository. That should read the new credentials I believe.


validates_with_block is broken when passing in an option hash

in lib/dm-validations/validators/block_validator.rb:53
options = fields.last.is_a?(Hash) ? fields.last.pop.dup : {}

It seems the intention is actually
 options = fields.last.is_a?(Hash) ? fields.pop.dup : {}

without last, since Hash does;t have a pop method

@ywen Current master is a complete rewrite of dm-validations. Could you provide a test case so we could check if the problem still exists?

https://github.com/datamapper/dm-validations/pull/40 same issue, by the way.

Sorry. would you mind checking the issue# 45 where I provide a pull request with tests?  I will close this one. Sorry about the confusion


Calculator Mode results don't line up.

Start a calculator session with /calculator

the results do not line up.

Hey @Ghoughpteighbteau Thank for filling the issue and Good job figuring it out!
If it's not too much trouble, would you consider submitting a pull request to rectify the issue?


Example to ingest the data over REST

Is there any example available to ingest the data over REST?

I think the answer is no, though I think setting up a REST endpoint is probably the harder part of the example. Kafka (or something like it) is probably the more natural way to provide data at the moment, where timely reads from sources of input (e.g. local files). Kafka has a REST interface, so if you use it as the intermediary you could write at a Kakfa queue that has been connected to a timely dataflow computation.

Hi @tsk70! We are actively working on adding REST endpoints and quality-of-life improvements for interfacing with timely and differential at this moment. We'll ping this issue when we have something that you can try out.

If you'd like an example of reading data out of Kafka, the kafkaesque subproject previously only had examples for serialized timely dataflow data. I've added a fairly simple method for a Kafka topic and an arbitrary "from bytes" user-supplied closure. It lacks a great many things (e.g. dealing with partitioned streams, committing offsets, other things that you would want in a real system).
https://github.com/TimelyDataflow/timely-dataflow/blob/master/kafkaesque/src/kafka_source.rs

Thanks @rjnn and @frankmcsherry for the quick response. I have tried to build the sub project and got the below error.
thread 'rustc' panicked at 'index out of bounds: the len is 4 but the index is 7', /rustc/146aa60f3484d8267e085e80611969f387eca068/src/libcore/slice/mod.rs:2545:14
note: Run with RUST_BACKTRACE=1 environment variable to display a backtrace.
error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
note: rustc 1.34.0-nightly (146aa60f3 2019-02-18) running on x86_64-apple-darwin
note: compiler flags: -C debuginfo=2 --crate-type lib

That looks fun!
I recommend using the stable compiler for the moment (the error above says that you are using the nightly compiler), unless you want to help the Rust folks out with debugging their compiler issues (a nice thing to do, but maybe not the first thing to get working). I can try and repro and file an issue on the rustc repository for you, but for me at the moment the stable rust compiler is building things just fine. Let me know if that works for you!

Yup, looks like currently nightly Rust crashes building rdkafka. Current stable release has no problem, though, at least on my machine. @tsk70 would you like the honor of reporting this as an issue on the Rust repo, or should I do that?

Thanks Frank. Current stable release works fine. I will log the issue on the rust repo.

Hi @frankmcsherry,
Do you know when will the support for partitioned streams, committing offsets etc. be available in kafkaesque? If there is no ETA available, then what’s your recommendation for listening live stream.  Can we use TCPListener instead? If answer is yes, how does it work in a cluster environment since each worker will listen to different port. I am assuming that client (some proxy) has to write it into different port based on the number of workers and sharding key.

Hello!
I think there is no ETA on adding Kafka features. If you have specific problems, we could look in to supporting solutions for them.
Kafka partitioned streams should "work" in that (as I understand it) rdkafka will round-robin the parts among the consumers. What doesn't "work" is that Kafka doesn't propagate watermark information, and as soon as a stream is partitioned it is no longer a "sequence" but rather a set of sequences and it gets a bit harder to have each source understand what the least timestamps are. What timely does here when it uses Kafka is to manually partition topics into streams topic-1, topic-2, ... which isn't great, but at least allows the consumers to provide correct progress information. You can see this in the capture-send.rs example.
My guess is that there is no ETA on committing offsets; this relies on the durability properties of the timely dataflow computation between the Kafka queues, and if you have a program which must maintain persistent state but doesn't, you shouldn't commit the offsets until the state is persisted.
As far as recommendations, it depends on where you are getting your data from and what information it has in it. If you have a sequence of in-order (by timestamp) data I would probably put it in a single Kafka topic (and advance input capabilities as records move past). If you want to partition the stream, make sure each part gets watermark/progress information, and I would personally use several single-part topics (per the example above). You can also use TcpListeners, which is how the capture_{send,recv}.rs examples in the timely repository work.
Does this help?

Thanks for the quick response.
We get some of the data comes from Kafka but events may come out of order. In most cases the topic with multiple partition exist and don't have much control on the producer side.
But some of the data comes from other system where the external java client can push the data to long running timely dataflow. Do you think TcpListeners will be a good fit in this case?
How do we make the capture_recv as long running process and keeps listening infinitely to the income data? Loop or stdin after the worker.dataflow is not working. Also I need to push the data from non-timely code instead of using capture_send code.
The working sample will be great.

The problem I see is that with a multiple part Kafka stream, especially when data come out of order, someone will need to determine when it is no longer the case that you'll see certain timestamps again. At least, this information is needed if you want to communicate it to timely operators that may want to block for complete data. You could invent some rules, like perhaps that data are no more than 10 seconds out of order, which would allow you to downgrade the source capability to time - 10s whenever you see time. But, this would just be a guess without further information from the input source.
A TcpListener should work fine, though at that point I might consider not using replay_into, as it requires a certain format. Instead, you can write a source operator that polls its TcpStream for new data (a bit like the Kafka example operator does) and produces output and downgrades its capabilities as appropriate.


New device Aqara curtain motor

Sorry, due to inactivity, I can't merge this PR. Feel free to reopen a new one


Gutenberg improvements

Went full on with Gutenberg in my other project rolle.design where I made the site dynamic using the latest version of Air-light. Noticed many things incomplete in our Gutenberg setup.
This major Gutenberg update will focus on following:

gutenberg.css is now gutenber-editor-styles.css (comes from the official .editor-styles- class that WordPress has. It's easier to separate that these are only meant for editor outputted admin only.
Fonts have been splitted to _font-family.scss and _font-sizes.scss. Only _font-family.scss is on editor side so we only need to define separate paths for Gutenberg editor side and then use the same variables than in front end. Earlier we were forced to add all variables twice.
Gutenberg blocks have now their own files in sass/gutenberg/blocks/. Each block is imported in _blocks.scss which is imported by both front end and editor. Now we don't have to add blocks to multiple places (there were 3 different options before to be exact... messy!)
Alignwide and alignfull didn't act as expected because of too specific :not selectors. Cleaned up all nots and replaced them with better options.
We didn't have styles for all blocks, tested them separately and added sample gutenberg blocks to demo site (please note, not active there before this PR gets merged but just for you to know)
Added reframe.js for embeds (fitvids equivalent but tiny Vanilla JS)
Lots of general fixes
gutenberg-helpers.js still produced breaking error, fixed it

This fixes #81.


Regression: extrafiles can't be strings

The change for src/Pyrus/Package/Creator.php introduced in efc3a883cbcf5512d03602e9aa8dcdc42bbbe620 made it impossible to use strings as values for extrafiles (it requires you to pass a \pear2\Pyrus\Package, aka. \Pyrus\PackageInterface in the current code).
Therefore, it is not possible to embed files not present in package.xml the way the PEAR manual suggests to (see http://pear.php.net/manual/en/pyrus.commands.package.php#pyrus.commands.package.extrasetup).

See the pull request.


added image loader &&  feature extractor

Image Loader + Feature extractor
I created an image loader to load a batch of images and extract some of the features, here's a short breakdown

The code walks through the given directory and extracts every file with a specific ending (like .jpg or .png etc.).

The function "extract_image_details" extracts some valuable features, which are:

uuid
File path
Average color (RGB, others are transformed to RGB)
Average Brightness
Resolution
DPI (if given)
File Size
File Type
Meta Data (if given)

The next function is a simple generator which allows to choose a batch size. It also uses tqdm to show the loading progress.

note:
The code works locally for a batch of images: it needs to be adjusted in order to handle data from external hard drive.
The extracted features might not be everything we need - please suggest if you have any ideas.

Looks good!


chore(deps): update tubenhirn/semantic-release-gitlab docker tag to v4.1.5

This PR contains the following updates:

Package
Update
Change

tubenhirn/semantic-release-gitlab
patch
v4.1.4 -> v4.1.5

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

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


2020.2.29.r0.ssc.237

Merge 2020.2.29 public release into patch

Sorry looks like there are conflicts now


problems with jupyter notebook - TuriCreate.

I have a problem, it happens that I download jupyter notebook and install them from cmd, everything is very normal, then I went to use TuriCreate but I realized that for Windows it had to be done through Ubuntu so I installed it and after that I had to install again the jupyter notebook and also the TuriCreate but it happens that when opening the Ubuntu notebok jupyter which is the one that TuriCreate has, only a folder called venv appears to me, and I don't know where the path to upload files is, because when I look in ubuntu it appears the path / Home / User.
In the windows cmd jupyter notebook it does not allow me to open the Turicreate, the ubuntu one does, but I do not have the path to upload csv files to it.
someone who can help me how to solve? I thank you very much, so far I am learning.

@Flotero7 - I'm not sure I understand the problem. It sounds like you are using TuriCreate on Window via WSL. You got TuriCreate and Jupyter notebook working in your Ubuntu environment. However you can't figure out how to get files from outside of your Ubuntu environment into your Ubuntu environment. Is all that correct?

I have not heard back here, so I'm going to close the issue. If you can get back to me with the requested information, I'm happy to look into it more.


Break in yabai 4.0

Any clue what is happening here?
see https://github.com/koekeishiya/yabai/blob/the-future/CHANGELOG.md
And https://github.com/koekeishiya/yabai/issues/923

Hello :)
I exactly met the same error.

The output from the query system has changed. See https://github.com/koekeishiya/yabai/blob/master/doc/yabai.asciidoc#query

Got the same problem on Monterey. I made some quick changes to workaround this issue.
Headscracher/simple-bar@bd1454fa13f332244078de75439acbda0a4d8c9e
It's not perfect, but at least no error messages are thrown around.
The undefined if statement needed to be added since yabai sometimes would give me any visible spaces.

Hi @Headscracher , thank you for your work. I tried your fork and the error indeed stoped and it shows me the correct number of spaces.
But it still doesn't highlight the current space. And the current process widget is disappeared. I also noticed that I could not toggle the preference window when pressing cmd + ,.
Just want to confirm that if you also have these problems (or it is some bug due to my setting)? I'm on M1 MacOS 12.0.1 .

Yeah thats right. Was just a quick patch to get rid of the errors. I didnt use this repo before and encountered this problem. So I dont know how a default installation should look and work like. If I get around the other problems I'll let you know.

I have updated following the output from yabai v4.0.0. It's still not updated completely (e.g: for multiple display detection) but essential features worked. Please checkout here

I haven't updated yabai yet but I'll look into it today.

I have updated following the output from yabai v4.0.0. It's still not updated completely (e.g: for multiple display detection) but essential features worked. Please checkout this fork

I confirm that the fork works.

I have updated following the output from yabai v4.0.0. It's still not updated completely (e.g: for multiple display detection) but essential features worked. Please checkout this fork

With this fork the initial error appears again. With @Headscracher fork at least the spaces are shown properly.

I'm working on making simple-bar supports both yabai v3 and yabai v4. It should be ready soon. :)

Master is now supporting both yabai v3 and yabai v4. Please let me know if you see anything unusual. I have everything working fine on Intel Monterey.

Okay, I'll try to reproduce tomorrow, I don't have a 2nd display at home. :)

@Jean-Tinland now It works on the main/active display as @Headscracher mentioned and on the second display there is still the error with currentSpace.index
Thank you so far!

Should be better now!

Now it's working. Thanks a lot.

Thank you! Perfect.


Kimera VIO ROS build fail

Description:
Dear developers,
I have a problem with building. I followed all instructions from scratch, used fresh and clear Ubuntu 18 with latest ROS Melodic, but get theses errors (links to screeshots are provided below)
I tried to compile with catkin build kimera_vio_ros -j 4
It did not help.
I installed C++ Boost library and all other Prerequisities according to manual.
Any ideas how to fix it ?
Command:
# replace this line with the command(s) you used

Console output:
                 from /home/mark/catkin_ws/src/Kimera-VIO/tests/testLogger.cpp:28:
/home/mark/catkin_ws/devel/include/gtsam/geometry/Rot3.h:124:17: note: candidate: static gtsam::Rot3 gtsam::Rot3::Random(boost::random::mt19937&)
     static Rot3 Random(boost::mt19937 & rng);
                 ^~~~~~
/home/mark/catkin_ws/devel/include/gtsam/geometry/Rot3.h:124:17: note:   no known conversion for argument 1 from ‘std::mt19937 {aka std::mersenne_twister_engine<long unsigned int, 32, 624, 397, 31,<PHONE_NUMBER>, 11,<PHONE_NUMBER>, 7,<PHONE_NUMBER>, 15,<PHONE_NUMBER>, 18,<PHONE_NUMBER>>}’ to ‘boost::random::mt19937& {aka boost::random::mersenne_twister_engine<unsigned int, 32, 624, 397, 31,<PHONE_NUMBER>, 11,<PHONE_NUMBER>, 7,<PHONE_NUMBER>, 15,<PHONE_NUMBER>, 18,<PHONE_NUMBER>>&}’
/home/mark/catkin_ws/src/Kimera-VIO/tests/testLogger.cpp: In member function ‘virtual void VIO::LoopClosureDetectorLoggerFixture_logOptimizedTraj_Test::TestBody()’:
/home/mark/catkin_ws/src/Kimera-VIO/tests/testLogger.cpp:410:31: error: no matching function for call to ‘gtsam::Rot3::Random(std::mt19937&)’
       gtsam::Rot3::Random(rng_), gtsam::Point3::Random());
                               ^
In file included from /home/mark/catkin_ws/devel/include/gtsam/geometry/Pose3.h:24:0,
                 from /home/mark/catkin_ws/devel/include/gtsam/geometry/CalibratedCamera.h:23,
                 from /home/mark/catkin_ws/devel/include/gtsam/geometry/CameraSet.h:22,
                 from /home/mark/catkin_ws/devel/include/gtsam/slam/RegularImplicitSchurFactor.h:10,
                 from /home/mark/catkin_ws/devel/include/gtsam/slam/SmartFactorBase.h:25,
                 from /home/mark/catkin_ws/devel/include/gtsam_unstable/slam/SmartStereoProjectionFactor.h:23,
                 from /home/mark/catkin_ws/devel/include/gtsam_unstable/slam/SmartStereoProjectionPoseFactor.h:23,
                 from /home/mark/catkin_ws/src/Kimera-VIO/include/kimera-vio/backend/VioBackEnd-definitions.h:26,
                 from /home/mark/catkin_ws/src/Kimera-VIO/tests/testLogger.cpp:28:
/home/mark/catkin_ws/devel/include/gtsam/geometry/Rot3.h:124:17: note: candidate: static gtsam::Rot3 gtsam::Rot3::Random(boost::random::mt19937&)
     static Rot3 Random(boost::mt19937 & rng);
                 ^~~~~~
/home/mark/catkin_ws/devel/include/gtsam/geometry/Rot3.h:124:17: note:   no known conversion for argument 1 from ‘std::mt19937 {aka std::mersenne_twister_engine<long unsigned int, 32, 624, 397, 31,<PHONE_NUMBER>, 11,<PHONE_NUMBER>, 7,<PHONE_NUMBER>, 15,<PHONE_NUMBER>, 18,<PHONE_NUMBER>>}’ to ‘boost::random::mt19937& {aka boost::random::mersenne_twister_engine<unsigned int, 32, 624, 397, 31,<PHONE_NUMBER>, 11,<PHONE_NUMBER>, 7,<PHONE_NUMBER>, 15,<PHONE_NUMBER>, 18,<PHONE_NUMBER>>&}’
/home/mark/catkin_ws/src/Kimera-VIO/tests/testLogger.cpp:412:31: error: no matching function for call to ‘gtsam::Rot3::Random(std::mt19937&)’
       gtsam::Rot3::Random(rng_), gtsam::Point3::Random());
                               ^
In file included from /home/mark/catkin_ws/devel/include/gtsam/geometry/Pose3.h:24:0,
                 from /home/mark/catkin_ws/devel/include/gtsam/geometry/CalibratedCamera.h:23,
                 from /home/mark/catkin_ws/devel/include/gtsam/geometry/CameraSet.h:22,
                 from /home/mark/catkin_ws/devel/include/gtsam/slam/RegularImplicitSchurFactor.h:10,
                 from /home/mark/catkin_ws/devel/include/gtsam/slam/SmartFactorBase.h:25,
                 from /home/mark/catkin_ws/devel/include/gtsam_unstable/slam/SmartStereoProjectionFactor.h:23,
                 from /home/mark/catkin_ws/devel/include/gtsam_unstable/slam/SmartStereoProjectionPoseFactor.h:23,
                 from /home/mark/catkin_ws/src/Kimera-VIO/include/kimera-vio/backend/VioBackEnd-definitions.h:26,
                 from /home/mark/catkin_ws/src/Kimera-VIO/tests/testLogger.cpp:28:
/home/mark/catkin_ws/devel/include/gtsam/geometry/Rot3.h:124:17: note: candidate: static gtsam::Rot3 gtsam::Rot3::Random(boost::random::mt19937&)
     static Rot3 Random(boost::mt19937 & rng);
                 ^~~~~~
/home/mark/catkin_ws/devel/include/gtsam/geometry/Rot3.h:124:17: note:   no known conversion for argument 1 from ‘std::mt19937 {aka std::mersenne_twister_engine<long unsigned int, 32, 624, 397, 31,<PHONE_NUMBER>, 11,<PHONE_NUMBER>, 7,<PHONE_NUMBER>, 15,<PHONE_NUMBER>, 18,<PHONE_NUMBER>>}’ to ‘boost::random::mt19937& {aka boost::random::mersenne_twister_engine<unsigned int, 32, 624, 397, 31,<PHONE_NUMBER>, 11,<PHONE_NUMBER>, 7,<PHONE_NUMBER>, 15,<PHONE_NUMBER>, 18,<PHONE_NUMBER>>&}’
/home/mark/catkin_ws/src/Kimera-VIO/tests/testLogger.cpp:414:31: error: no matching function for call to ‘gtsam::Rot3::Random(std::mt19937&)’
       gtsam::Rot3::Random(rng_), gtsam::Point3::Random());
                               ^
In file included from /home/mark/catkin_ws/devel/include/gtsam/geometry/Pose3.h:24:0,
                 from /home/mark/catkin_ws/devel/include/gtsam/geometry/CalibratedCamera.h:23,
                 from /home/mark/catkin_ws/devel/include/gtsam/geometry/CameraSet.h:22,
                 from /home/mark/catkin_ws/devel/include/gtsam/slam/RegularImplicitSchurFactor.h:10,
                 from /home/mark/catkin_ws/devel/include/gtsam/slam/SmartFactorBase.h:25,
                 from /home/mark/catkin_ws/devel/include/gtsam_unstable/slam/SmartStereoProjectionFactor.h:23,
                 from /home/mark/catkin_ws/devel/include/gtsam_unstable/slam/SmartStereoProjectionPoseFactor.h:23,
                 from /home/mark/catkin_ws/src/Kimera-VIO/include/kimera-vio/backend/VioBackEnd-definitions.h:26,
                 from /home/mark/catkin_ws/src/Kimera-VIO/tests/testLogger.cpp:28:
/home/mark/catkin_ws/devel/include/gtsam/geometry/Rot3.h:124:17: note: candidate: static gtsam::Rot3 gtsam::Rot3::Random(boost::random::mt19937&)
     static Rot3 Random(boost::mt19937 & rng);
                 ^~~~~~
/home/mark/catkin_ws/devel/include/gtsam/geometry/Rot3.h:124:17: note:   no known conversion for argument 1 from ‘std::mt19937 {aka std::mersenne_twister_engine<long unsigned int, 32, 624, 397, 31,<PHONE_NUMBER>, 11,<PHONE_NUMBER>, 7,<PHONE_NUMBER>, 15,<PHONE_NUMBER>, 18,<PHONE_NUMBER>>}’ to ‘boost::random::mt19937& {aka boost::random::mersenne_twister_engine<unsigned int, 32, 624, 397, 31,<PHONE_NUMBER>, 11,<PHONE_NUMBER>, 7,<PHONE_NUMBER>, 15,<PHONE_NUMBER>, 18,<PHONE_NUMBER>>&}’
make[2]: *** [CMakeFiles/testKimeraVIO.dir/tests/testLogger.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/testKimeraVIO.dir/all] Error 2
make: *** [all] Error 2
cd /home/mark/catkin_ws/build/kimera_vio; catkin build --get-env kimera_vio | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -
...................................................................................................
Failed     << kimera_vio:make                 [ Exited with code 2 ]
Failed    <<< kimera_vio                      [ 8 minutes and 49.7 seconds ]
Abandoned <<< kimera_vio_ros                  [ Unrelated job failed ]
[build] Summary: 7 of 9 packages succeeded.
[build]   Ignored:   7 packages were skipped or are blacklisted.
[build]   Warnings:  5 packages succeeded with warnings.
[build]   Abandoned: 1 packages were abandoned.
[build]   Failed:    1 packages failed.
[build] Runtime: 25 minutes and 7.4 seconds total.

# remove this line and paste your console output HERE - no screenshots please

Additional files:
Please attach all the files needed to reproduce the error.
https://sun9-25.userapi.com/c857332/v857332646/143666/Vrt7VfdeIjM.jpg
https://sun9-69.userapi.com/c857332/v857332646/143670/SQCCAy149rQ.jpg
Please give also the following information:

SparkVio branch, tag or commit used
GTSAM version used:
OpenGV version used:
OpenCV version used: 3.2.0
Operating system and version (e.g. Ubuntu 16.04 or Windows 10): Ubuntu 18.04 with last updates
Did you change the source code? (yes / no):

Have you sloved the issue? I also meet the same problem. that is so bad...

Have you sloved the issue? I also meet the same problem. that is so bad...

Unfortunately, no. Several weeks ago i managed to build the whole project and this problem did not occur. Probably developers have updated some libs and now it comes

try to cd the KImera-VIO and git reset to previous version???

Before build, try cd to gtsam folder. then
git checkout develop

then go back to workspace/src
catkin build

See if it works

Before build, try cd to gtsam folder. then
git checkout develop

then go back to workspace/src
catkin build

See if it works

Yes, i have checked it. Still not working

Another thing you can try is to disable the test when compiling
catkin build -DBUILD_TESTS=OFF

I have success to build the gtsam by "git checkout develop; catkin build",;
but when I build the opencv3, something error....
`Starting  >>> glog_catkin
Finished  <<< glog_catkin                                  [ 0.2 seconds ]

Errors     << opencv3_catkin:make /home/tangming/catkin_ws/logs/opencv3_catkin/build.make.008.log
make[3]: 警告: 子 make 中强制 -jN: 关闭 jobserver 模式。
CMake Warning at cmake/OpenCVFindLAPACK.cmake:29 (message):
LAPACK(OpenBLAS): CBLAS/LAPACK headers are not found in
'/usr/include/openblas'
Call Stack (most recent call first):
cmake/OpenCVFindLAPACK.cmake:97 (ocv_lapack_check)
CMakeLists.txt:635 (include)
-- Found Ceres compiled with miniglog substitute for glog, beware this will likely cause problems if glog is later linked.
CMake Warning at /home/tangming/catkin_ws/build/opencv3_catkin/opencv3_src/cmake/OpenCVDownload.cmake:190 (message):
xfeatures2d/boostdesc: Download failed: 28;"Timeout was reached"
For details please refer to the download log file:
/home/tangming/catkin_ws/build/opencv3_catkin/opencv3_build/CMakeDownloadLog.txt
Call Stack (most recent call first):
/home/tangming/catkin_ws/build/opencv3_catkin/opencv3_contrib_src/modules/xfeatures2d/cmake/download_boostdesc.cmake:22 (ocv_download)
/home/tangming/catkin_ws/build/opencv3_catkin/opencv3_contrib_src/modules/xfeatures2d/CMakeLists.txt:8 (download_boost_descriptors)
In file included from /home/tangming/catkin_ws/build/opencv3_catkin/opencv3_src/modules/stitching/include/opencv2/stitching.hpp:49:0,
from /home/tangming/catkin_ws/build/opencv3_catkin/opencv3_build/modules/python_bindings_generator/pyopencv_generated_include.h:65,
from /home/tangming/catkin_ws/build/opencv3_catkin/opencv3_src/modules/python/src2/cv2.cpp:30:
/home/tangming/catkin_ws/build/opencv3_catkin/opencv3_src/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录
compilation terminated.
make[5]: *** [modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o] Error 1
make[4]: *** [modules/python2/CMakeFiles/opencv_python2.dir/all] Error 2
make[3]: *** [all] Error 2
make[2]: *** [opencv3_src-prefix/src/opencv3_src-stamp/opencv3_src-build] Error 2
make[1]: *** [CMakeFiles/opencv3_src.dir/all] Error 2
make: *** [all] Error 2
cd /home/tangming/catkin_ws/build/opencv3_catkin; catkin build --get-env opencv3_catkin | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -
....................................................................................................
Failed     << opencv3_catkin:make                          [ Exited with code 2 ]
Failed    <<< opencv3_catkin                               [ 1 minute and 52.7 seconds ]
Abandoned <<< kimera_rpgo                                  [ Unrelated job failed ]
Abandoned <<< kimera_vio                                   [ Unrelated job failed ]
Abandoned <<< kimera_vio_ros                               [ Unrelated job failed ]
Finished  <<< gtsam                                        [ 4 minutes and 25.1 seconds ] `
I try to modify the CMakeLists.txt in the /home/tangming/catkin_ws/build/opencv3_catkin/opencv3_src/modules/stitching by adding "INCLUDE_DIRECTORIES("/home/tangming/catkin_ws/build/opencv3_catkin/opencv3_contrib_src/modules/xfeatures2d/include")", but the problem sitll exist.

I met similar problem before.
The ceres solver will lead the GLOG to other location.
Try uninstall cares solver.  I have tried to downloads these files such as "
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
And put them into the folder "/home/tangming/catkin_ws/build/opencv3_catkin/opencv3_build/downloads". What it happend???

Another thing you can try is to disable the test when compiling
catkin build -DBUILD_TESTS=OFF

Managed to build successfully after deleting everything and repeating whole process once again with develop branch. Thanks much! hope developers will add all changes to origin branch soon

I met similar problem before.
The ceres solver will lead the GLOG to other location.
Try uninstall cares solver. Go to your ceres-solver/build
Then
sudo make uninstall

Then rebuild Kimera

I``ve faced the problem with no ability to see triangle mesh in Rviz while launching kimera-VIO-ros on Euroc dataset. So i follow the instruction but in Rviz i see only TFs and raw picture from both camers. Yes Ive installed special plugins for rviz. So i have Mesh and IMU plugins as add-ons in rviz. Using rostopic echo, ive found out that mesh topic does not post anything.
Any ideas why i happens ?

I'm pretty sure step 3 is what worked for me, but what I did in order was:

Uninstall gtsam then re-install and build from source
Make sure I was working on 'develop' branch (git checkout develop)
First build kimera-vio (catkin build kimera_vio) then build kimera_vio_ros (catkin build kimera_vio_ros)

/home/wangxiaoyuan/catkin_ws/src/gtsam/gtsam/geometry/Quaternion.h:85:22: error: ‘omega’ was not declared in this scope
_Scalar theta2 = omega.dot(omega);
How can I solve the problem?

@calmelo this seems to be a separate issue from the one in this thread and as such, I would recommend opening a new issue as you may be assisted more promptly then- that being said, the scope errors that I encounter usually happen when I forget to source my devel/setup.bash file of the catkin workspace I'm working in.

~/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:673:20: fatal error: boostdesc_bgm.i: No such file or directory
I still meet some problem.. I have tried to downloads these files such as "
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
And put them into the folder "/home/tangming/catkin_ws/build/opencv3_catkin/opencv3_build/downloads". What it happend???

Have you solve the problem? I meet the problem too.

~/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:673:20: fatal error: boostdesc_bgm.i: No such file or directory
I still meet some problem.. I have tried to downloads these files such as "
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
And put them into the folder "/home/tangming/catkin_ws/build/opencv3_catkin/opencv3_build/downloads". What it happend???

Have you solve the problem? I meet the problem too.

@zhaozhongch
I fail to compile gtsam when catkin build, other success, did you meet before?
src/gtsam/gtsam/3rdparty/Spectra/Util/SimpleRandom.h:32:20: error: ‘Index’ in namespace ‘Eigen’ does not name a type
typedef Eigen::Index Index;
^
/home/xhy/catkin_ws/src/gtsam/gtsam/3rdparty/Spectra/Util/SimpleRandom.h:75:29: error: ‘Index’ does not name a type
Vector random_vec(const Index len)

@zhaozhongch
I fail to compile gtsam when catkin build, other success, did you meet before?

src/gtsam/gtsam/3rdparty/Spectra/Util/SimpleRandom.h:32:20: error: ‘Index’ in namespace ‘Eigen’ does not name a type
typedef Eigen::Index Index;
^
/home/xhy/catkin_ws/src/gtsam/gtsam/3rdparty/Spectra/Util/SimpleRandom.h:75:29: error: ‘Index’ does not name a type
Vector random_vec(const Index len)


Fix #3088: Link all classes that are mentioned in signatures and types

A couple of questions I have w.r.t. this:

What about field types?
Do we need to benchmark this (or do we not have a choice anyways)?

What about field types?

One thing we could do is add their references to each constructor in the class. A bit of a hack, but that will ensure that their types are only reached if the class hasInstances.

Do we need to benchmark this (or do we not have a choice anyways)?

We could choose to avoid populating referencedClasses (in Infos) if IR-checking is disabled. We could also always disable it in the Refiner.

Higher level comments are still unresolved:

Fields: Putting them in constructors needs more work due to the caching in the Refiner (might be doable, need to check).
Benchmarking: I assume you have seen the analysis on #3558, so I'll try and investigate what makes the emitter slow.

I have simply added field types as a separate info. This seemed easier and notably didn't result in a strange caching situation in the refiner. Speed investigation still pending.

With and without this change, it seems helloworld and reversi fast opts do not change (at all).

Updated. Still investigating the speed issue.

More benchmarking:

Observation: A significantly larger amount of time seems to be taken while emitting trees to the JS builder.

Observation: A significantly larger amount of time seems to be taken while emitting trees to the JS builder.

It could be the mere fact of iterating through the set of all linked classes, then going to the caches of its constituents, even if at the end of the day there's nothing to actually emit ?

It could be the mere fact of iterating through the set of all linked classes, then going to the caches of its constituents, even if at the end of the day there's nothing to actually emit ?

Yes, that's what I thought as well. Also we are sorting all linked classes. However, the "emit trees" only contains this code. So all the JS trees have already been built.

Hum. What's generatedClasses.size before and after the change? Is it significantly bigger?
Is the final .js file actually the same before and after the change? Or did we perhaps actually introduce more code in the output?

You will love this. Size of generatedClasses
master: 3243
reach-types: 3283
No difference in fastOptJS file.

Indeed, it does look like good results. But that means it's not enough to explain the increased emission time.

I was being sarcastic... It does not explain the increased emission times at all... :(
Btw. this makes me think if we need to worry about codebases that have much more JS types. Because these are basically the ones we reach now and we didn't before...

At this point I'd try hacking up Refiner not to reach the referencedClasses, and see if that has an impact on the Emitter.

I have tested two more things:

filter-empty filter unneeded LinkedClasses at the beginning of the Emitter.
partial-reach do not reach referenced classes in the Refiner

Benchmarks:

Size of generatedClasses
master: 3243
reach-types: 3283
filter-empty: 3021 (seems the refiner has a bug?)
partial-reach: 3243
I'm a bit at a loss of how to make sense of this. Feels a bit like a cop out to blame it on the JIT...

Yeah, the bump in "Emit trees" since master doesn't make sense, given the reported sizes of generatedClasses.
I guess we just have to live with it, then. And given the benchmarks, I would keep the reach-types variant.

Rebased.


Pass image ID for testing

When running test/run use image ID instead of IMAGE_NAME. This allows parallel testing of images (for example parallel testing of PRs in Jenkins).
This is similar PR as for sclorg/mariadb-container#14. @hhorak Please take a look.

Approach used in this PR is not possible for s2i based images (running s2i build in tests fails - using image ID instead of tag is not supported). So am closing this PR (and similar PRs for other container images) to keep building scripts same s2i based and non-s2i based images.
As mentioned in sclorg/postgresql-container#155, different approach could be used, so I will try to prepare something. But it would be helpful to have shared build scripts as mentioned in sclorg/postgresql-container#138.


Improve error messaging around missing dynamic=True flag

What is the expected enhancement?
When submitting dynamic circuit jobs to backend.run() it is a relatively simple mistake to forget to add the dynamic=True flag to the call. This currently results in the not-so-clear error: TypeError: Object of type QuantumCircuit is not JSON serializable. It would be much clearer if the circuit was checked for dynamic circuit features and then an error something like Error: Circuit with dynamic features sent to the static path. Did you forget to specify dynamic=True in your backend.run() call?

We should have a utility function to determine whether the input circuit is dynamic and choose the program id accordingly.

fixed by #616


mastodon: 4.2.10 -> 4.2.11

Description of changes
Updata package to version 4.2.11.
Changelog

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[x] sandbox = true

[x] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Thanks, can you please add the link to the changelog to the commit message? https://github.com/mastodon/mastodon/releases/tag/v4.2.11

Thanks, can you please add the link to the changelog to the commit message? https://github.com/mastodon/mastodon/releases/tag/v4.2.11

Update.


Support Addendums

From https://github.com/metanorma/metanorma-iso/issues/1150
Require a new ISO identifier type, Addendum. They will be identical for the purposes of identifiers to Amendments and Corrigenda, built on top of a pre-existing ISO standard identifier:
described_class.create(
            type: :add, number: 1, year: 2021,
            base: described_class.create(number: 20, year: 2019, language: "en"))
            .to_s(format: format) == "ISO 20:2019/Add. 1:2021"

As you will see in the source ticket, there is a Russian version of such identifiers: "ИСО 20:2019/Доп. 1:2021".
You will also see that in those old documents (addenda ceased after 1997), years are delimited in the identifier by dash and not colon. I would not do that in this implementation: just keep using colon.

Oh, you've already implemented this! OK, great.


update summary text to reflect currently hidden variables

Closes #130
prettier's screwing up again.  half the files had double quotes and half single quotes when i started.
anywho, files i actually touched are these:

src/codebook/data/makeSummary.js
src/codebook/settings/functionality/updateHidden.js
src/codebook/summaryTable/updateSummaryText.js

Expected Outcome: Altering the number of columns that show in the codebook will be reflected in the data summary statement above the charts
Result: Pass

Resolves #134


⚠ Jenkins Plugins Artifactory has degraded performance

In 3c1188e, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1183 ms

Resolved: Jenkins Plugins Artifactory performance has improved in b7c3a6e after 12 minutes.


Constraints in LayoutBuilder sometimes zero

I was experiencing crashes on a Samsung Galaxy S21 running Android 13 (sometimes the system would report that the app is buggy, other times it would just crash outright). I did not experience this on a number of other devices including a Pixel 7, Pixel 2, Samsung Tab S5e, Samsung S9+. This stacktrace is printed to the console:

Original Stacktrace
E/AndroidRuntime(16076): java.lang.IllegalArgumentException: Cannot round NaN value.
E/AndroidRuntime(16076): 	at o4.c.a(Unknown Source:15)
E/AndroidRuntime(16076): 	at o4.a.a(Unknown Source:0)
E/AndroidRuntime(16076): 	at i3.q.t(Unknown Source:124)
E/AndroidRuntime(16076): 	at i3.q.p(Unknown Source:112)
E/AndroidRuntime(16076): 	at i3.q.c(Unknown Source:0)
E/AndroidRuntime(16076): 	at i3.p.b(Unknown Source:8)
E/AndroidRuntime(16076): 	at k2.z.run(Unknown Source:25)
E/AndroidRuntime(16076): 	at android.os.Handler.handleCallback(Handler.java:942)
E/AndroidRuntime(16076): 	at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(16076): 	at android.os.Looper.loopOnce(Looper.java:226)
E/AndroidRuntime(16076): 	at android.os.Looper.loop(Looper.java:313)
E/AndroidRuntime(16076): 	at android.app.ActivityThread.main(ActivityThread.java:8757)
E/AndroidRuntime(16076): 	at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(16076): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
E/AndroidRuntime(16076): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)

Which is obfuscated so not terribly helpful. Luckily, the google play console pointed me to the culprit: this line in MobileScanner.kt, which would turn out to become NaN when being rounded. After doing some more debugging, it turns out to be a result of the Size of the constraints in the layout builder being set to 0.0. Then, while calculating the window, there is a division by this size resulting in the NaN value.
A possible solution to this error: setting the size to a minimum of 1 would prevent the error, but this would only work if the LayoutBuilder automatically rebuilds when its constraints change (that is, once the actual Widget is rendered, it is recalculated), and I'm not sure how that works.
Let me know your thoughts. Thanks :)

After testing a bit with the "solution" I proposed above, it seems like the 1x1 size is never updated once the actual Widget is displayed, and as a result I'm not able to scan codes during that "run".
My MobileScanner is located in a CustomPaint (for the overlay) in a Stack in a SafeArea in the Scaffold.body.

Interesting find. AFAIK some devices only report an initial display size after the first frame, but I don't think that this could be the issue. What if we just return "false" for that check if the incoming sizes are zero ?


New plugin added

https://github.com/allanmcarvalho/DataTables

This is already in https://github.com/FriendsOfCake/awesome-cakephp/wiki#plugins-waiting-to-be-added until the necessary requirements/standards are met.
In this case basic test cases.

Contributions should be one per PR, otherwise they conflict with each other when on hold.

Are there any plans to migrate your plugin and efforts with https://github.com/ypnos-web/cakephp-datatables ?
Could be useful to have a good team behind one plugin of that specific kind.
I will close this for now, feel free to reopen with one of the two being ready for addition.


Sonoff TH16: temperature unknown

My config:
sonoff:
  scan_interval: '00:05:00'
  force_update: temperature
  sensors: temperature
  username<EMAIL_ADDRESS>  password: mysuperpassword
  mode: local
  reload: always
  devices:
    100XXXXXXX:
      name: Sonoff TH16
      force_update: True

Home Assistant always shows "unknown" value for sensor.sonoff_100XXXXXXX_temperature

I've been having same trouble before changing it to currentHumidity, currentTemperature as found in sonoff.json

I've been having same trouble before changing it to currentHumidity, currentTemperature as found in sonoff.json

Please tell detailed where you made your changes.

sure,bro,
sonoff:
  username: blaa
  password: blabla
  force_update: [currentTemperature, currentHumidity, voltage_00]
  scan_interval: '00:05:00'  # (optional) default 5 minutes
  sensors: [currentTemperature, currentHumidity, voltage_00, rssi]
  reload: always
  mode: local

after in device section:
devices:
    1xxxxxxxx:
      device_class: switch
      name: Sonoff TH10
      devicekey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      sensors: [currentTemperature, currentHumidity, rssi]

after that it works fine even in local mode which makes me happy )
For TH16 double check name in sonoff.json, but I bet it will be the same

Wow!!! Many thanks!

You are welcome, не забудь закрыть тикет)


Mounted filesystem doesn't get updated

What is your rclone version (eg output from rclone -V)
1.33

Which OS you are using and how many bits (eg Windows 7, 64 bit)
OS X 10.11.6

Which cloud storage system are you using? (eg Google Drive)
Google Drive, crypted Google Drive

The command you were trying to run (eg rclone copy /tmp remote:tmp)
rclone -q mount gdrive: mnt
or
rclone -q mount crypt: mnt

Mounting is working perfectly, but the content doesn't get updated, easy to reproduce:
rclone mkdir gdrive:test
rclone copy test1 gdrive:test/
rclone mount gdrive: mnt
cd mnt/test
ls -l test1 # <- this gives a correct result
rclone copy test2 gdrive:test/
ls -l test2 # <- no such file (even after waiting for over an hour)
I can understand that the meta-information is cached, but there should be a timeout for this; maybe something in the range of about 10-15 minutes.

Yes I need to put some metadata caching timeouts in you are right. I'll add it to the list.
Thanks
Nick

can you please make the cache timeout value settable?

I'd find it very useful to be able to manually trigger the metadata to be updated, rather than having to wait for the cache to expire.

I'd love to see an default timeout (60s or so), overridden by an option (example: --cache-timeout=10m)

I've fixed that in: http://beta.rclone.org/v1.33-71-ga02edb9/ (uploaded in 15 mins)
With a new flag --dir-cache-time which has a default of 5 minutes.  It seems to work well in my testing.
@talisto re manual trigger of cache flush - I suggest you make another ticket with about that.

Thx!


No download for fanfox.net

Bug report
Environment (please complete the following information):

Description
Data

OS
Archlinux

Python version
3.7.2

Pip version
18.1

Manga-py version
<IP_ADDRESS>

URL
http://fanfox.net/manga/we_broke_up/

To Reproduce:
Steps to reproduce the behavior:
manga-py http://fanfox.net/manga/we_broke_up/
Additional context
I get multiple JSONDecodeErrors:
[JSONDecodeError('Extra data: line 1 column 2831 (char 2830)')]...
(I suppose for each chapter)

Please wait some more.
Now my life is quite intense, but I will soon return to normal :-)

Please, check manga-py 1.5.3

Works OK for me :+1:

Component
Value

OS
Ubuntu 16.04.6 LTS

Python version
Python 3.5.2

Pip version
pip 18.1

Npm version
3.5.2

Manga-py version
1.5.3

URL
http://fanfox.net/manga/we_broke_up/

Works for me as well. Thank you very much for fixing this!


Create API for /setting/ line number

There is a desire to /set/ line numbers on XML nodes. This is for constructed nodes.
Please see downstream discussion at https://github.com/rubys/nokogumbo/issues/53#issuecomment-309504802
Related, also see discussion on libxml and line numbers greater than 65535 (and workarounds) at:

https://github.com/rubys/nokogumbo/issues/53#issuecomment-309504802
https://github.com/rubys/nokogumbo/pull/55
https://github.com/sparklemotion/nokogiri/issues/533

PR coming

PR added at https://github.com/sparklemotion/nokogiri/pull/1658

@fulldecent you seem to be bringing up two distinct issues here:

a feature request, to set line numbers on nodes.
a bug report about line numbers being limited to a short int, which is unfortunately a limitation in libxml2's data structure; Nokogiri here is behaving exactly as the libxml2 maintainers wish/constrain it to.

The first is being addressed in your PR at #1658, which is where I'd like to focus the conversation about that feature request.
The second has been discussed in the issue you reference, and so unless there's new information or a concrete suggestion on how to address this behavior (I don't see one here?), I'd prefer to not reopen that discussion.
So, I'm going to close this issue out -- let's continue the API conversation at #1658.

Got it. I understand the short int issue and am not looking to rock the boat on libxml.


Bump dependencies

@zudov It would be really cool if you could release purescript-var with psc-0.10 compatible version bounds as purescript-localstorage depends on this lib.

Is there anything holding up merging this?

Looks good. Thanks for the bump.
Sorry for a delay, I'll wrap a release today.

Thanks @zudov Any chance you could bump your websockets lib deps too?
Thanks a lot for all the hard work on this stuff. It's great!


[FR] Better Cert Manager

I missing the Function to renew certificates and csr signing.

Can be closed when #3234 is in ...

@mimugmail I'll close it when finished

In my plan, renew certificate is not included in #3234.

close due to timeout then, nobody is planning to work on it, no need to keep it open forever.


New lines are submitted as '/n' and then not rendered correctly in the editor

I would expect the '/n' to be rendered as a newline.

You got the character wrong, its \n, not /n

Ah sorry, it's automated, I just mistyped /n.
Let me be more clear.
When I include a enter-key style line break. It SAVES IN THE DATABASE as a \nand then is rendered \n when I return to the input form.

Hmm, I'm having quite to opposite problem. I was expecting enter-key line breaks to include \n but they dont. They contain white spaces

I have the same issue of @justuseapen


Set-SPOSite : You do not have required licenses to perform this operation. Please read here for licensing related requirements :  https://docs.microsoft.com/en-US/sharepoint/authentication-context-example

I am try run Set-SPOSite to set ConditionalAccessPolicy AuthenticationContext on SharePoint site but I am receiving the following error-
"Set-SPOSite : You do not have required licenses to perform this operation. Please read here for licensing related requirements :  https://docs.microsoft.com/en-US/sharepoint/authentication-context-example"
I am using a user with Global Admin role in Azure AD and Microsoft 365 E5 Developer (without Windows and Audio Conferencing) valid license. Interestingly, I used the same account and ran the same command about a month ago and it was working then!
I do think I have the proper license and it was working just fine. Any idea what may have changed with Set-SPOSite?

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

ID: 2c62bf4a-ac47-96ce-33fb-0d5ea9b178ae
Version Independent ID: 301586d3-ec04-c42d-4681-0bb59443d35c
Content: Set-SPOSite (SharePointOnlinePowerShell)
Content Source: sharepoint/sharepoint-ps/sharepoint-online/Set-SPOSite.md
Service: sharepoint-powershell
GitHub Login: @trent-green
Microsoft Alias: trgreen

@yogkumgit- any update on this issue?

This issue has been resolved, I can use set-sposite command with Microsoft 365 E5 Developer (without Windows and Audio Conferencing) license. This issue can be closed.
Just to share the info, I have stayed away from using authentication context as it impacted other processes and  Microsoft is yet to catch up with the impacted resources.

Similar to @ostolawork, I've attempted to run...
Set-SPOSite -Identity https://[mytenant].sharepoint.com/sites/[mysite] -BlockDownloadPolicy $true -ExcludeBlockDownloadPolicySiteOwners $true
...but am continually receiving the 'You do not have required licenses to perform this operation' error.
I've attempted to run this query with an unlicensed / E3 licensed / E5 licensed Global Admin account, and have left days between running the query after each license change but still my query fails. As well, I've installed the latest version of Microsoft's SharePoint PowerShell module on a second device but this hasn't fixed the issue.
@yogkumgit, sorry to drag up an old thread but are you able to share any information or advice regarding this issue please?
Thank you in advance 👍


ORC-755: Added OrcFilterContext that accomplishes the following:

Change the filter from Consumer to Consumer
OrcFilterContext has findVector method that allows cached determination of ColumnVectors from name
OrcFilterContext offers utility methods for null determination on the vector branch
Refactors ParserUtils to introduce TypeWalker and VectorWalker to centralize the walk logic
Tests have been modified to support the new interface

What changes were proposed in this pull request?

Change the filter from Consumer to Consumer
Add the following convenience methods

OrcFilterContext has findVector method that allows cached determination of ColumnVectors from name
OrcFilterContext offers utility methods for null determination on the vector branch

Refactors ParserUtils to introduce TypeWalker and VectorWalker to centralize the walk logic

Why are the changes needed?
The changes are needed to allow easy access to ColumnVectors by name as part of [ORC-744]
How was this patch tested?
Unit tests were added to the project.

@omalley Thanks for your suggestions on the findColumnVector method, I think I incorporated all of them here
@pgaref Thanks for your suggestions on reusing the findSubType method, I have included that into this PR.


feat: add activation_block method for Ethereum hardforks

Should close #5707.

cc @mattsse @tcoratger alloy_chains is now merged as of #5952

great!
I only rearranged the hardfork match arms

Thanks :)


Test that TransformAction cannot be from a custom classloader

@bot-gradle test and merge

I've triggered a build for you. Click here to see all failures if there's any.

Your PR is queued. See the queue page for details.

@bot-gradle cancel

Pre-tested commit build failed. Click here to see all build failures.

@bot-gradle test and merge

I've triggered a build for you. Click here to see all failures if there's any.

I've cancelled the pre-tested commit build.

I've triggered a build for you. Click here to see all failures if there's any.

Pre-tested commit build failed. Click here to see all build failures.

@bot-gradle test and merge

I've triggered a build for you. Click here to see all failures if there's any.


Doesn't even start

I'm trying to use in my UnitTests (netcore 3.1):
            _eserializer = new ConfigurationContainer()
                .UseAutoFormatting()
                .Create();
            var res = _eserializer.Serialize(new { Test = "test" });

and getting Sprache.ParseException: 'Parsing failure: unexpected '<'; expected letter (Line 1, Column 1); recently consumed: . What I do wrong?
I tried different options with ConfigurationContainer with the same result. I don't believe that it doesn't work at all.

Hi @yan-oreshchenkov thank you for writing in... I will have to look into this but I do not believe we support dynamic objects as I believe you are attempting to do here.  It looks like it got far enough to serialize it, and even that is remarkable to me. 😆
I will see if I can poke around with this sometime tomorrow when I have more time but I am pretty sure this is an unsupported scenario.  However, it might be possible to support using an extension if you wanted to do so.

Alrighty... I looked into this and this is definitely not a supported scenario at the moment.  We can improve the developer experience by providing a better exception message, but outside of that it will require additional work which is outside the limits of my time, unfortunately.


Updated osmosis-std to v14

What is the purpose of the change
Update to the latest osmosis-std. Should we wait for the v15 release for this?
Brief Changelog
...
Testing and Verifying
all tests pass
Documentation and Release Note

Does this pull request introduce a new feature or user-facing behavior changes? (yes / no)
Is a relevant changelog entry added to the Unreleased section in CHANGELOG.md? (yes / no)
How is the feature or change documented? (not applicable   /   specification (x/<module>/spec/)  /  Osmosis docs repo   /   not documented)

No point in doing this now. We can update to v15 later


help(Sidenav): TypeError: Converting circular structure to JSON using Jest

What are you trying to do?
I am trying to configure tests with angular/material.
There is some error with <mat-drawer>  that I can't resolve.
Type error in console:
● Test suite failed to run

    TypeError: Converting circular structure to JSON
        --> starting at object with constructor 'Object'
        |     property 'element' -> object with constructor 'Object'
        |     property 'componentProvider' -> object with constructor 'Object'
        --- property 'parent' closes the circle
        at stringify (<anonymous>)

If I remove line with <mat-drawer>  all tests will be happy.
Maybe I missed something?
Environment

Angular:

Angular CLI: 12.1.4
Node: 14.17.1
Package Manager: pnpm 6.10.3
OS: win32 x64

Angular: 12.1.4
... animations, cdk, cli, common, compiler, compiler-cli, core
... forms, material, platform-browser, platform-browser-dynamic
... router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1201.4 (cli-only)
@angular-devkit/build-angular   12.1.4
@angular-devkit/core            12.1.4 (cli-only)
@angular-devkit/schematics      12.1.4 (cli-only)
@schematics/angular             12.1.4
rxjs                            6.6.7
typescript                      4.3.5

CDK/Material:

"@angular/material": "12.1.4",

Browser(s):

Brave(Chrome)

Operating System (e.g. Windows, macOS, Ubuntu):

Windows
My setup:

layout.component.html

<div class="mat-app-background layout">
  <mat-drawer-container [hasBackdrop]="true" class="layout-drawer-container">
    <mat-drawer #drawer [mode]="'over'" class="layout-drawer">Drawer</mat-drawer>
    <mat-drawer-content>
      <app-header></app-header>
      <main role="main" class="layout-main">
        <ng-content></ng-content>
      </main>
    </mat-drawer-content>
  </mat-drawer-container>
</div>

layout.component.spec.ts

import { Component } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MatSidenavModule } from '@angular/material/sidenav';
import { LayoutComponent } from './layout.component';

@Component({
  selector: 'app-header',
  template: '',
})
class MockHeaderComponent {}

describe('LayoutComponent', () => {
  let component: LayoutComponent;
  let fixture: ComponentFixture<LayoutComponent>;

  beforeEach(async () => {
    await TestBed.configureTestingModule({
      declarations: [LayoutComponent, MockHeaderComponent],
      imports: [MatSidenavModule],
    }).compileComponents();
  });

  beforeEach(() => {
    fixture = TestBed.createComponent(LayoutComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

package.json

"dependencies": {
    "@angular/animations": "~12.1.0-",
    "@angular/cdk": "12.1.4",
    "@angular/common": "~12.1.0-",
    "@angular/compiler": "~12.1.0-",
    "@angular/core": "~12.1.0-",
    "@angular/forms": "~12.1.0-",
    "@angular/material": "12.1.4",
    "@angular/platform-browser": "~12.1.0-",
    "@angular/platform-browser-dynamic": "~12.1.0-",
    "@angular/router": "~12.1.0-",
    "@briebug/jest-schematic": "3.1.0",
    "@ngrx/effects": "12.3.0",
    "@ngrx/router-store": "12.3.0",
    "@ngrx/store": "12.3.0",
    "@ngrx/store-devtools": "12.3.0",
    "rxjs": "~6.6.0",
    "tslib": "^2.2.0",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "@angular-builders/jest": "12.1.0",
    "@angular-devkit/build-angular": "~12.1.3",
    "@angular-eslint/builder": "12.3.1",
    "@angular-eslint/eslint-plugin": "12.3.1",
    "@angular-eslint/eslint-plugin-template": "12.3.1",
    "@angular-eslint/schematics": "12.3.1",
    "@angular-eslint/template-parser": "12.3.1",
    "@angular/cli": "~12.1.3",
    "@angular/compiler-cli": "~12.1.0-",
    "@schematics/angular": "^12.1.4",
    "@types/jasmine": "~3.8.0",
    "@types/jest": "26.0.24",
    "@types/node": "^12.11.1",
    "@typescript-eslint/eslint-plugin": "4.28.2",
    "@typescript-eslint/parser": "4.28.2",
    "eslint": "^7.26.0",
    "husky": "^7.0.0",
    "jasmine-core": "~3.8.0",
    "jest": "27.0.6",
    "karma-coverage": "~2.0.3",
    "prettier": "^2.3.2",
    "typescript": "~4.3.2"
  }

Related to this issue.
Just use jest with --detect-open-handles option.


Screenpipe Process Doesn't Terminate When Closing the App

Description:
When closing the Screenpipe app (e.g., via right-clicking on the tray icon and selecting "Exit"), the app interface closes, but the screenpipe.exe process continues to run in the background, as seen in Task Manager.
Steps to Reproduce:

Open the Screenpipe app.
Right-click on the app icon in the Windows tray.
Select "Quit Screenpipe" to close the app.
Open Task Manager.
Observe that the screenpipe.exe process is still running.

Expected Behavior:
The screenpipe.exe process should terminate completely when the app is closed.
Actual Behavior:
The screenpipe.exe process remains active in the background, even after closing the app interface.
Environment:

App Version: 0.2.72
OS: Windows 11

Additional Notes:
This issue is linked to an update failure I got, as the background process interferes with the installation of the new version.

@meltiso hmm thanks a lot for all the feedback!
this is strange, we have a feature in the background process to "auto destruct" when the app is stopped
https://github.com/mediar-ai/screenpipe/blob/660cf63e732c77fafe64a90bdc5ef4fb8587dbcd/screenpipe-app-tauri/src-tauri/src/sidecar.rs#L272
but did not test on windows (work on mac) maybe the PID system is different

@meltiso thank you, will investigate why

@louis030195 I updated to v0.2.82 and I'm still getting the error. The process screepipe.exe does not exit when closing the app via system tray. Seems to be an annoying bug to solve :(
I haven't checked yet if both processes close during update, but will do

Hey @louis030195 The update process works (screepipe.exe process is killed), but when closing the app from the tray, the issue remains (screenpipe.exe not killed but screenpipe-app.exe exits)

Unsure what the proper way is to shut it down, but hitting control-c on a mac gives me this error, hopefully it may help finding the issue on windows
`
thread 'tokio-runtime-worker' panicked at /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.40.0/src/runtime/blocking/shutdown.rs:51:21:
Cannot drop a runtime in a context where blocking is not allowed. This happens when a runtime is dropped from within an asynchronous context.
stack backtrace:
0: _rust_begin_unwind
1: core::panicking::panic_fmt
2: tokio::runtime::blocking::shutdown::Receiver::wait
3: tokio::runtime::blocking::pool::BlockingPool::shutdown
4: core::ptr::drop_in_placetokio::runtime::blocking::pool::BlockingPool
5: screenpipe::main::{{closure}}::{{closure}}
6: tokio::runtime::task::core::Core<T,S>::poll
7: tokio::runtime::task::harness::Harness<T,S>::poll
8: tokio::runtime::scheduler::multi_thread::worker::Context::run_task
9: tokio::runtime::scheduler::multi_thread::worker::Context::run
10: tokio::runtime::context::runtime::enter_runtime
11: tokio::runtime::scheduler::multi_thread::worker::run
12: <tokio::runtime::blocking::task::BlockingTask as core::future::future::Future>::poll
13: tokio::runtime::task::core::Core<T,S>::poll
14: tokio::runtime::task::harness::Harness<T,S>::poll
15: tokio::runtime::blocking::pool::Inner::run
note: Some details are omitted, run with RUST_BACKTRACE=full for a verbose backtrace.`


How to install IIS OOBs in a container - Add sample dockerfiles to demonstrate how to install each OOB.

We've seen multiple issues asking for guidance on how to install IIS OOBs like URL Rewrite and ARR in a container.
Let's try and some guidance around this.

Been a little over a year, still nothing on this?

Any updated guidance on this? I've tried using this Dockerfile but the ExternalDiskCache module download is unavailable.

I was able to solved this by installing ARR with chocolatey. See here.

I've tried using this Dockerfile but the ExternalDiskCache module download is unavailable.

That Dockerfile references an older version of ARR that is no longer supported. The ExternalDiskCache has been made a part of the ARR installer and does not require a standalone msi
cc @john-hart


JAXB GAV changed: jakarta.xml.bind

See also:

https://wiki.eclipse.org/New_Maven_Coordinates

Would be awesome if rest-assured could change to using the new coordinates, as other projects are moving to change as well, but if you lag behind then we end up with non-conflicting GAVs , yet have conflicting classes.
I realize it's very annoying, don't shoot the messenger :) I just hope you could consider this.

Is it just changing some dependencies in Maven? If so maybe you could provide a PR?

Sure, happy to!


update snakeYaml to 1.31

There is currently a vulnerability in snakeYaml version 1.26.
Details can be found here:
https://www.mend.io/vulnerability-database/CVE-2022-38750
I would like to update the snakeYaml dependency to 1.31, which fixes this error.
Is there anything else I should do, like bump the version to 0.4.3 so that a new tag can be created?

Unit tests pass when I run sbt test on my machine.