support "scratch" as a special base image

Something like ko.yaml:
defaultBaseImage: scratch

cc @jonjohnsonjr
I think the hardest part of this now would be determining what to do for --platform=all 🤣

@mattmoor Can I pick this up?

@transhapHigsn I don't think github reactions generate any notification or email, so I wanted to reply with an explicit "yes" if you are still interested in picking this up.
Using empty.Image from https://godoc.org/github.com/google/go-containerregistry/pkg/v1/empty should be a good place to start.

I think we should sort out what we want to do for multi-arch first?
Is there a way to enumerate all of the platform combination the Go toolchain supports? 😅

No mention of GOARM anywhere, so variants would be up to us. Also this is an enormous list (41 combinations) and we should probably not support everything. Would be a good use case for comma-separated --platform or we could warn if --platform=all and the base is scratch.
$ go tool dist list -json
[
        {
                "GOOS": "aix",
                "GOARCH": "ppc64",
                "CgoSupported": true
        },
        {
                "GOOS": "android",
                "GOARCH": "386",
                "CgoSupported": true
        },
        {
                "GOOS": "android",
                "GOARCH": "amd64",
                "CgoSupported": true
        },
        {
                "GOOS": "android",
                "GOARCH": "arm",
                "CgoSupported": true
        },
        {
                "GOOS": "android",
                "GOARCH": "arm64",
                "CgoSupported": true
        },
        {
                "GOOS": "darwin",
                "GOARCH": "amd64",
                "CgoSupported": true
        },
        {
                "GOOS": "darwin",
                "GOARCH": "arm64",
                "CgoSupported": true
        },
        {
                "GOOS": "dragonfly",
                "GOARCH": "amd64",
                "CgoSupported": true
        },
        {
                "GOOS": "freebsd",
                "GOARCH": "386",
                "CgoSupported": true
        },
        {
                "GOOS": "freebsd",
                "GOARCH": "amd64",
                "CgoSupported": true
        },
        {
                "GOOS": "freebsd",
                "GOARCH": "arm",
                "CgoSupported": true
        },
        {
                "GOOS": "freebsd",
                "GOARCH": "arm64",
                "CgoSupported": true
        },
        {
                "GOOS": "illumos",
                "GOARCH": "amd64",
                "CgoSupported": true
        },
        {
                "GOOS": "js",
                "GOARCH": "wasm",
                "CgoSupported": false
        },
        {
                "GOOS": "linux",
                "GOARCH": "386",
                "CgoSupported": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "amd64",
                "CgoSupported": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "arm",
                "CgoSupported": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "arm64",
                "CgoSupported": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "mips",
                "CgoSupported": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "mips64",
                "CgoSupported": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "mips64le",
                "CgoSupported": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "mipsle",
                "CgoSupported": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "ppc64",
                "CgoSupported": false
        },
        {
                "GOOS": "linux",
                "GOARCH": "ppc64le",
                "CgoSupported": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "riscv64",
                "CgoSupported": false
        },
        {
                "GOOS": "linux",
                "GOARCH": "s390x",
                "CgoSupported": true
        },
        {
                "GOOS": "netbsd",
                "GOARCH": "386",
                "CgoSupported": true
        },
        {
                "GOOS": "netbsd",
                "GOARCH": "amd64",
                "CgoSupported": true
        },
        {
                "GOOS": "netbsd",
                "GOARCH": "arm",
                "CgoSupported": true
        },
        {
                "GOOS": "netbsd",
                "GOARCH": "arm64",
                "CgoSupported": true
        },
        {
                "GOOS": "openbsd",
                "GOARCH": "386",
                "CgoSupported": true
        },
        {
                "GOOS": "openbsd",
                "GOARCH": "amd64",
                "CgoSupported": true
        },
        {
                "GOOS": "openbsd",
                "GOARCH": "arm",
                "CgoSupported": true
        },
        {
                "GOOS": "openbsd",
                "GOARCH": "arm64",
                "CgoSupported": true
        },
        {
                "GOOS": "plan9",
                "GOARCH": "386",
                "CgoSupported": false
        },
        {
                "GOOS": "plan9",
                "GOARCH": "amd64",
                "CgoSupported": false
        },
        {
                "GOOS": "plan9",
                "GOARCH": "arm",
                "CgoSupported": false
        },
        {
                "GOOS": "solaris",
                "GOARCH": "amd64",
                "CgoSupported": true
        },
        {
                "GOOS": "windows",
                "GOARCH": "386",
                "CgoSupported": true
        },
        {
                "GOOS": "windows",
                "GOARCH": "amd64",
                "CgoSupported": true
        },
        {
                "GOOS": "windows",
                "GOARCH": "arm",
                "CgoSupported": false
        }
]

Challenge accepted? 😅

Would love to see how you plan to test your plan9/386 container images.

@transhapHigsn I don't think github reactions generate any notification or email, so I wanted to reply with an explicit "yes" if you are still interested in picking this up.
Using empty.Image from https://godoc.org/github.com/google/go-containerregistry/pkg/v1/empty should be a good place to start.

@mattmoor Sorry, I had some problems related to notifications. Found this out today.


Import over papermerge-cli not working

Hi,
Thank you for providing such a great tool.
Unfortunately I can't figure out how to import my documents.
My documents are sorted in an annual folder structure.  And inside each folder there are subfolders as well.
My steps I tried so far:

start power shell with ssh and connect with the docker container:
docker exec -it papermerge-worker-1 bash
install Python pip:
sudo dnf install python3-pip
install papermerge-cli:
pip install papermerge-cli
Login to the UI with my user (admin account does not work), F12 Devtools, network and grap the bearer token.
back in power shell start import:
papermerge-cli --host http://nas:12000/api/ --token MYTOKEN import ./mnt/NAS/Dokumente

the folder exists and is mounted but I get the error "no Detail".
Can you please provide some help?

Host should be specified without "/api/" part. In your case --host http://nas:12000/.
where does "no Detail" error comes from ?

Thank you.
I tried as you suggested without "/api/" part and I got "Internal Server Error" as response.
But it imported some files of one of the folders.
When I try it again, it says
{"detail":"Title already exists"}

I too have a similar problem.
Even if you execute POST /nodes/ using REST API, Title already exists will be returned. Even though there is no node with the same name.
curl --location 'https://my-papermerge-host/api/nodes/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <token>' \
--data '{
    "title": "document title",
    "ctype": "document",
    "parent_id": "<user id>"
}'


Changing the ImagePullPolicy for the operator and the webhook.

For the KMM operator, the ImagePullPolicy was set to Always for development reasons but it is in fact not the best practice, therefore, it was removed to allowed kubelet to have its default pull policy.
The webhook-server's pull policy was also removed to use the default behavior to stay in sync with the KMM operator it is deployed with.
In a nutshell, the default policy is Always if the latest tag is used and IfNotPresent otherwise.
This change is expected to reduce the networking bandwidth.

/cc @yevgeny-shnaidman @TomerNewman

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 71.95%. Comparing base (fa23a9b) to head (e36aac6).
Report is 91 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #866      +/-   ##
==========================================
- Coverage   79.09%   71.95%   -7.14%
==========================================
  Files          51       66      +15
  Lines        5109     4522     -587
==========================================
- Hits         4041     3254     -787
- Misses        882     1073     +191
- Partials      186      195       +9

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

/lgtm


Search fails in v2 app

Context
The v2 app search functionality is not working currently in both the live app and on local setups
Searching for anything without clicking any typeahead suggestions will result in this being displayed:

When clicking a typeahead suggestion, pressing the search button does nothing and will not show the error message until the page is refreshed
The nasty part about this error is, it slipped past our tests and an error message is not outputting to the console on local setups. I did have an error message print once, which was this:
<IP_ADDRESS> - - [19/Aug/2024 13:33:57] "GET /search/typeahead-suggestions?query=Pittsb HTTP/1.1" 500 -
[2024-08-19 13:33:57,414] ERROR in app: Exception on /search/typeahead-suggestions [GET]
Traceback (most recent call last):
  File "/home/kylie/Programming/data-sources-app-v2/resources/PsycopgResource.py", line 43, in wrapper
    return func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kylie/Programming/data-sources-app-v2/venv/lib/python3.11/site-packages/flask_limiter/extension.py", line 1303, in __inner
    return cast(R, flask.current_app.ensure_sync(obj)(*a, **k))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kylie/Programming/data-sources-app-v2/resources/TypeaheadSuggestions.py", line 81, in get
    response = get_typeahead_suggestions_wrapper(db_client, query)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kylie/Programming/data-sources-app-v2/middleware/typeahead_suggestion_logic.py", line 14, in get_typeahead_suggestions_wrapper
    suggestions = db_client.get_typeahead_suggestions(query)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kylie/Programming/data-sources-app-v2/database_client/database_client.py", line 674, in get_typeahead_suggestions
    display_name=row[1],
    ^^^^^^^^^^^
AttributeError: 'DatabaseClient' object has no attribute 'cursor'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/kylie/Programming/data-sources-app-v2/venv/lib/python3.11/site-packages/flask/app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kylie/Programming/data-sources-app-v2/venv/lib/python3.11/site-packages/flask/app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kylie/Programming/data-sources-app-v2/venv/lib/python3.11/site-packages/flask_restx/api.py", line 402, in wrapper
    resp = resource(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kylie/Programming/data-sources-app-v2/venv/lib/python3.11/site-packages/flask/views.py", line 109, in view
    return current_app.ensure_sync(self.dispatch_request)(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kylie/Programming/data-sources-app-v2/venv/lib/python3.11/site-packages/flask_restx/resource.py", line 41, in dispatch_request
    resp = meth(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/kylie/Programming/data-sources-app-v2/resources/PsycopgResource.py", line 47, in wrapper
    abort(
  File "/home/kylie/Programming/data-sources-app-v2/venv/lib/python3.11/site-packages/flask_restx/errors.py", line 28, in abort
    flask.abort(code)
  File "/home/kylie/Programming/data-sources-app-v2/venv/lib/python3.11/site-packages/flask/helpers.py", line 277, in abort
    current_app.aborter(code, *args, **kwargs)
  File "/home/kylie/Programming/data-sources-app-v2/venv/lib/python3.11/site-packages/werkzeug/exceptions.py", line 861, in __call__
    raise self.mapping[code](*args, **kwargs)
werkzeug.exceptions.InternalServerError: 500 Internal Server Error: The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
<IP_ADDRESS> - - [19/Aug/2024 13:33:57] "GET /search/typeahead-suggestions?query=Pittsbu HTTP/1.1" 500 -
'DatabaseClient' object has no attribute 'cursor'

Though this may be a red herring because the line it's pointing to and the error message don't exactly match up. This error predates the recent changes to the connection logic and may have been around for weeks without detection. My hypothesis is this could be a frontend issue since all backend tests pass.
Requirements

Testing functionality should be restored

Tests

Once the problem is found we should write tests to account for whatever the problem point was, if possible

@EvilDrPurple @joshuagraber @josh-chamberlain This seems to be related to a discussion me and Joshua and Josh were having about how we expect users to use the search functionality.

One idea was that the only valid searches would be from Typeahead suggestions. If that's the case, maybe we want to disable the search button until the user selects a typeahead suggestion.
Another idea was that we should include a secondary search functionality if they type and search for something that isn't accounted for by the Typeahead Suggestion. One point I made was that, realistically, any location they search for should already be pulled by the Typeahead suggestion, making it redundant. Still, if it's normal user behavior for someone to do that, then maybe we should.

Regardless, I think Kylie's right that, with the web design currently as is, some users probably would try to make a search without using the typeahead suggestion. So we'd need to figure out how to approach that.
Additionally, it's worth pointing out that if a user types "Pittsburgh, Allegheny, PA" (as is currently suggested above the search bar), no results would be returned. Partly, that's on me, as the search bar's contents is being fed into my typeahead endpoint, which only searches on a single entity at a time (whether that be a State, City, or Locality). Maybe we want to consider adjusting that.
It's also worth bearing in mind that the frontend is in a very alpha stage right now, so a lot of this is subject to substantial change.

Regardless, I think Kylie's right that, with the web design currently as is, some users probably would try to make a search without using the typeahead suggestion. So we'd need to figure out how to approach that.

@maxachis I just wanted to make it clear that the search currently doesn't work at all -- regardless of whether a typeahead suggestion is selected or not. If a typeahead suggestion is selected it doesn't show an error but the search button does not react to being pressed and the results page is not loaded at all

Regardless, I think Kylie's right that, with the web design currently as is, some users probably would try to make a search without using the typeahead suggestion. So we'd need to figure out how to approach that.

@maxachis I just wanted to make it clear that the search currently doesn't work at all -- regardless of whether a typeahead suggestion is selected or not. If a typeahead suggestion is selected it doesn't show an error but the search button does not react to being pressed and the results page is not loaded at all

@EvilDrPurple That part is intentional! If you check the console log in the browser, you can see the endpoint path being generated. @joshuagraber is working on developing that component.

@maxachis ah okay thanks for clearing that up!

All of this is still very much in development. It is definitely premature to test against these front-end views.
FWIW, we also have an issue to set up client-side end-to-end (integration) tests once this work is completed, which will catch errors like these.

Regardless, I think Kylie's right that, with the web design currently as is, some users probably would try to make a search without using the typeahead suggestion. So we'd need to figure out how to approach that.

Yeah, we can just disable the button until a user selects something. That's on my list to add during the search results work.

Additionally, it's worth pointing out that if a user types "Pittsburgh, Allegheny, PA" (as is currently suggested above the search bar), no results would be returned. Partly, that's on me, as the search bar's contents is being fed into my typeahead endpoint, which only searches on a single entity at a time (whether that be a State, City, or Locality). Maybe we want to consider adjusting that.

Agreed, we should probably figure out how to allow such a search to proceed. A non-trivial task (where does one split the string, etc.), but worthwhile to look into.

@EvilDrPurple Thank you for reporting this in such detail! I'm going to close this as a non-bug as others have mentioned; the main branch up at https://data-sources-v2.pdap.io/ breaking would be unexpected. https://data-sources-v2.pdap.dev/ is not expected to be totally functional except when we are doing a dev → main merge.
@maxachis @joshuagraber it's a good point that the help text is not helpful! The functionality changed out from under it. I made an issue here about searching more complex types of names with comma separation: https://github.com/Police-Data-Accessibility-Project/data-sources-app/issues/389
Thank you all for being thoughtful testers, and caring about the humans who will have to use this stuff!


Failed to get machines: The network connection was lost.

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Logs
If applicable, attach log files by opening the OrbStack menu and clicking “Show Logs”, or email them for privacy.
Info report

<paste here>

Additional context
Add any other context about the problem here.

Most cases of this should be fixed. Let me know if it still occurs and I'll reopen this issue.
A larger effort to improve GUI reliability and usability is in progress, so this should all be fixed after that.


PR to give option to select build system

Following issue #18, this is the PR to give option to select build system.
Have a look at it.
Thanks.

CLA is valid!

Nice! We'll try this out and see if we can get it merged today.

Tried it locally. Works great, thanks!


Why is gpu slower than cpu

GPU: A100
wav：test.zip
code：

from tqdm import tqdm
import time
from faster_whisper import WhisperModel
import os
os.environ["OMP_NUM_THREADS"] = "4"

audio_path = 'test.wav'

gpu_model_path = "whisper-large-v2-ct2-float16/"
cpu_model_path = "whisper-large-v2-ct2-int8/"

# or run on GPU with INT8
gpu_model = WhisperModel(gpu_model_path, device="cuda", compute_type="float16")
# or run on CPU with INT8
cpu_model = WhisperModel(cpu_model_path, device="cpu", compute_type="int8")

startTime = time.time()
print('Transcribing with gpu model')
segments, info = gpu_model.transcribe(audio_path, beam_size=5, language='zh')
intermediateTime = time.time()
print('gpu model: %s' % (intermediateTime - startTime))

print('-'*100)

startTime = time.time()
print('Transcribing with cpu model')
segments, info = cpu_model.transcribe(audio_path, beam_size=5, language='zh')
intermediateTime = time.time()
print('cpu model: %s' % (intermediateTime - startTime))

log：
Transcribing with gpu model
gpu model: 0.012365579605102539
----------------------------------------------------------------------------------------------------
Transcribing with cpu model
cpu model: 0.006761789321899414

nvidia-smi:

Getting text is also slow...

The transcribe method returns a generator over segments. So the transcription does not start until you start iterating on the generator.
You can simply do this:
segments, info = gpu_model.transcribe(audio_path, beam_size=5, language='zh')
segments = list(segments)

segments = list(segments)

Thank you for your quick reply
On the gpu, it takes about 200 seconds to recognize an audio..
But on the CPU, it only takes about 10 seconds..

The complete code is as follows
from tqdm import tqdm
import time
from faster_whisper import WhisperModel
import os

os.environ["OMP_NUM_THREADS"] = "4"

audio_path = 'test.wav'

gpu_model_path = "whisper-large-v2-ct2-float16/"
cpu_model_path = "whisper-large-v2-ct2-int8/"

# or run on GPU with INT8
gpu_model = WhisperModel(gpu_model_path, device="cuda", compute_type="float16", num_workers=4)
# or run on CPU with INT8
cpu_model = WhisperModel(cpu_model_path, device="cpu", compute_type="int8")

startTime = time.time()
print('Transcribing with gpu model')
segments, info = gpu_model.transcribe(audio_path, beam_size=1, language='zh')
segments = list(segments)
intermediateTime = time.time()
print('gpu model: %s' % (intermediateTime - startTime))

print('-'*100)

startTime = time.time()
print('Transcribing with cpu model')
segments, info = cpu_model.transcribe(audio_path, beam_size=5, language='zh')
segments = list(segments)
intermediateTime = time.time()
print('cpu model: %s' % (intermediateTime - startTime))

log:
gpu model:<PHONE_NUMBER>4100952
----------------------------------------------------------------------------------------------------
Transcribing with cpu model
cpu model: 0.026242733001708984

Remove num_workers when loading the GPU model
Use the same beam_size value in the comparison

If your audio file is short, you should also run a first transcription before measuring the time to warmup the execution (some GPU resources are initialized during the first transcription).

warmup 10 times, still  very slow...
from tqdm import tqdm
import time
from faster_whisper import WhisperModel
import os

os.environ["OMP_NUM_THREADS"] = "4"

audio_path = 'test.wav'

gpu_model_path = "whisper-large-v2-ct2-float16/"
cpu_model_path = "whisper-large-v2-ct2-int8/"

# or run on GPU with INT8
gpu_model = WhisperModel(gpu_model_path, device="cuda", compute_type="float16")
# or run on CPU with INT8
cpu_model = WhisperModel(cpu_model_path, device="cpu", compute_type="int8")

# warmup
for i in range(10):
    print(str(i))
    segments, info = gpu_model.transcribe(audio_path, beam_size=5, language='zh')
    segments = list(segments)

startTime = time.time()
print('Transcribing with gpu model')
segments, info = gpu_model.transcribe(audio_path, beam_size=5, language='zh')
segments = list(segments)
intermediateTime = time.time()
print('gpu model: %s' % (intermediateTime - startTime))

print('-'*100)

startTime = time.time()
print('Transcribing with cpu model')
segments, info = cpu_model.transcribe(audio_path, beam_size=5, language='zh')
segments = list(segments)
intermediateTime = time.time()
print('cpu model: %s' % (intermediateTime - startTime))

In fast-whisper, the speed of v100 is similar to that of OPENAI official website. Is it because v100 is not optimized?
https://github.com/openai/whisper/discussions/918

The openai official website only needs more than 50 seconds, but it needs 14 gigabytes of memory
cmd = ' --language zh --model large-v2 --device cuda'

import os

for line in tqdm(open('audio.list', encoding='utf-8')):
    line = line.strip().split()
    idx, audio = line[0], line[1]
    print(audio)
    # segments, info = gpu_model.transcribe(audio, beam_size=5, language='zh')
    # text = " ".join([segment.text for segment in segments])
    cur_cmd = 'whisper ' + audio + cmd
    startTime = time.time()
    res = os.popen(cur_cmd).readlines()
    for x in res:
        if '-->' in x:
            text = x.strip().split()[-1]
            fo.write(idx + ' ' + ' '.join(text) + '\n')
            print(text)
    intermediateTime = time.time()
    print('total time: %s' % (intermediateTime - startTime))

log
.wav
找一下沿途的景點
total time: 55.80101251602173

In fast-whisper, the speed of v100 is similar to that of OPENAI official website. Is it because v100 is not optimized?

I'm not sure what you are comparing since https://github.com/openai/whisper/discussions/918 is a completely different benchmark. In the README, you can clearly see that faster-whisper is more than 4x faster than openai/whisper on V100.

Regarding your script, I don't know how you get these numbers. Both the CPU and GPU results look wrong, including for openai/whisper.
Here's what I get on a system with a V100. You should get similar numbers with A100.
Transcribing with gpu model
output: 後擋除霜除霧打開
gpu model: 0.33643054962158203
----------------------------------------------------------------------------------------------------
Transcribing with cpu model
output: 後擋除霜除霧打開
cpu model: 8.530870914459229

I slightly updated your script:
import time
import sys
from faster_whisper import WhisperModel

model_path = sys.argv[1]
audio_path = sys.argv[2]

gpu_model = WhisperModel(model_path, device="cuda", compute_type="float16")
cpu_model = WhisperModel(model_path, device="cpu", compute_type="int8", cpu_threads=4)

# warmup
segments, info = gpu_model.transcribe(audio_path, beam_size=5, language='zh')
segments = list(segments)

startTime = time.time()
print('Transcribing with gpu model')
segments, info = gpu_model.transcribe(audio_path, beam_size=5, language='zh')
print('output: %s' % ''.join(segment.text for segment in segments))
intermediateTime = time.time()
print('gpu model: %s' % (intermediateTime - startTime))

print('-'*100)

startTime = time.time()
print('Transcribing with cpu model')
segments, info = cpu_model.transcribe(audio_path, beam_size=5, language='zh')
print('output: %s' % ''.join(segment.text for segment in segments))
intermediateTime = time.time()
print('cpu model: %s' % (intermediateTime - startTime))

I feel a little strange. I will try another machine next week. Thank you for your prompt reply

After changing a GPU machine, the A100-PCIE can be reasoned normally, and the speed is about 0.3 seconds per audio.
But it is not normal on A100-SXM4.
It is estimated that there is no optimization on A100-SXM4?

Thank you for your open source
The effect is very good
The RTF on the A100-PCIe is very small

It is estimated that there is no optimization on A100-SXM4?

From the application perspective, A100-PCIE or A100-SXM4 makes no difference. There is probably a more general issue on your system since you got bad performance with both faster-whisper and openai/whisper.

It is estimated that there is no optimization on A100-SXM4?

From the application perspective, A100-PCIE or A100-SXM4 makes no difference. There is probably a more general issue on your system since you got bad performance with both faster-whisper and openai/whisper.

Well, thank you for your timely reply

good jobs


Dual License

We are working on open sourcing our app (WordPress.com) and reduce-component is a dependency. We are planning on using the GPLv2 license, however I'm told it is incompatible with the Apache 2.0 license.
Would it be possible to dual license this under a MIT license?

Yes this is doable. Should be able to get this updated shortly.

Updated in 6df9f93219a702f1511a3114fa1f3867040fd5b0

👍🏻 Thank you so much, big help!


Retrain from updated environment

Important Note: We do not do technical support, nor consulting and don't answer personal questions per email.
[question].
Hi,
my case is: if have a changing environment like a RNN network, and the reinforcement learning agent is to control whether I should mask the input. (input = input*mask) and mask is [0,1] discrete.
So what I did is that I train RNN for some epochs, and RNN is the observation of agent.
Agent will then train by model.learn(5000), RNN is in infernce mode when model is trained
Then I go back and train RNN with model.predict(deterministic= True) for predicting the mask.
I am not sure if the model will sample from the updated RNN environment?

Sounds like this should work, but without detailed code I can not be sure.
This sounds like it is not a stable-baselines issue/enhancement though and as written in issue template, we do not offer tech support for custom things like this.

Thank you! The problem for me is that I want to try this task with stablebaseline, but I couldnot find the documentation detailing how buffer_replay being sampled from the updated environment. I am still search for it though on stablebaseline. So sorry if this one is a duplicated question.

I recommend you start going over the code and see if it matches what you expect, documentation likely does not contain answers for a custom case like this.

Thank you!


Feature update for dspec lwa

This PR is created when creating calibrated spectrum reduced dataset of OVRO-LWA
A few features were added.

new columns added to dspec.tofits() fits, saving the cal factor list, user can apply the correction or reverse later

API to input user-defined array (or single number) correction factor list

function converting fits in RA-DEC to helio coord without info from MS

Peijin, I took a quick look into your radec_to_helio function. I think that it would be easier if you facilitate the user with some well known observatory names instead of the EarthObserver location coordinates. So maybe you can create a dictionary with the locations of known observatories, and the name is not in the distionary,  then user needs to provide the actual location in lat,long, otherwise the name is sufficient

Peijin, I took a quick look into your radec_to_helio function. I think that it would be easier if you facilitate the user with some well known observatory names instead of the EarthObserver location coordinates. So maybe you can create a dictionary with the locations of known observatories, and the name is not in the distionary, then user needs to provide the actual location in lat,long, otherwise the name is sufficient

https://docs.astropy.org/en/stable/api/astropy.coordinates.EarthLocation.html#astropy.coordinates.EarthLocation.of_site
to respond to @surajit4444mondal 's request, this function in EarthLocation would be useful.


Angular.module support for functions as dependencies

It's a bad ideia to support functions as requires? Using functions instead of "string named components" we can move foward on using es2015 modules. With this we can just import a "angular module" factory as a dependency, and add it to the requirements array for a new module. For example:
// Current form of module dependencies
angular.module('CoolComponents', []);
angular.module('app', [
  // You can't have static code analysis here, any typo needs to be catched at runtime
  'CoolComponents',
]);
const module = angular.module('app', []);
// Old issue, the app module is cleared here instead of being saved on the var

// Using factories references instead of strings we can manage all the
// dependencies with es2015 modules

/* cool-components.module.js */
export default angular.module('CoolComponents', []);

/* app.module.js */
import CoolComponents from './cool-components.module.js';

angular.module('CoolComponents', []);
// Even overriding the angular module `CoolComponents`, we still have a reference to
// the correct module

export default angular.module('app', [
  CoolComponents,
]);

We have plans for supporting es6 modules? It's difficult to implement this feature?

There have been some discussions, but nothing concrete yet.
In the mean time, most of what you want seems to be already possible and you can get better static code analysis by using the name property of modules:
/* cool-components.module.js */
export default angular.module('CoolComponents', []);

/* app.module.js */
import CoolComponents from './cool-components.module.js';

angular.module('CoolComponents', []);
// Even overriding the angular module `CoolComponents`, we still have a reference to
// the correct module

export default angular.module('app', [
  CoolComponents.name,
]);

I was thinking of allowing something other than strings as module names to avoid collisions, e.g. symbols; see how this would work with a patched version of AngularJS: http://plnkr.co/edit/yfTTgO8BidbvpMdiSzsB?p=preview
However, I like your proposal even more as it seems more natural and in line with other tools to just import a module. This proposal would require a little more changes than the symbol one.
I wonder what to do with module names if this proposal was accepted, though. They seem kind of redundant and as long as we keep them there's always a question of what happens if someone imports a module in one place via its name, in another via the full module instance...

I guess we could still keep the module names -> modules map and in that case registering two modules with the same name would mean adding the module name to dependencies would always choose only one of them but you would still be able to depend on both if you used full module instances.
I'd be interested in prototyping that (unless you'd like to try, @augusto-moura).

@gkalpak yeah, my suggestion would be just temporary (maybe not so temporary, dependending on the discussion about the appropriate solution). The definitive approach might be extinguishing the angular modules in favor of es modules. -some day-.
@mgol I didn't clearly understand your ideia. You are saying to change the behaviour of angular.module('foo', [...deps]) with a already defined module, to not reset the module but instead just adding deps as dependencies to it?

@augusto-moura

You are saying to change the behaviour of angular.module('foo', [...deps]) with a already defined module, to not reset the module but instead just adding deps as dependencies to it?

No, nothing like that. I'm proposing that we should be able to put modules in the dependencies array instead of their names, i.e.:
var module1 = angular.module('mod1', []);
var module2 = angular.module('mod2', []);
angular.module('app', [
    module1,
    module2,
]);

insead of the current:
angular.module('mod1', []);
angular.module('mod2', []);
angular.module('app', [
    'mod1,
    'mod2,
]);

Doing it wisely would mean modules with the same name work correctly:
var common1 = angular.module('common', []);
var common2 = angular.module('common', []);
angular.module('app1', [
    common1,
]);
angular.module('app2', [
    common2,
]);

This code should make the app1 & app2 modules depend on different common modules even though they share their names.


TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/70602

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/78307

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/79765

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/81811

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/82956

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/84663

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/94415

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/99124

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/100416


Cannot download manga from lhscan,net

Bug report
Environment (please complete the following information):
The latest docker image
URL | https://lhscan.net/manga-tono-kanri-o-shite-miyou-raw.html
Additional context

Thx for issue ^_^

Ahaha
Try to open it yourself.

It creates correct labeled files (for me) vol_001-0.ERROR.cbz vol_002-0.ERROR.cbz ...


Namespace not specified in modules's build file.

Unable to build project after adding ar_flutter_plugin_flutterflow ( version 0.7.39 )
ERROR:
FAILURE: Build failed with an exception.
What went wrong:
A problem occurred configuring project ':ar_flutter_plugin_flutterflow'.
Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl.
Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace.
If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant.

Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 1s
Error: Gradle task assembleDebug failed with exit code 1

FLUTTER DOCTOR
[✓] Flutter (Channel stable, 3.22.2, on macOS 15.1.1 24B91 darwin-arm64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 16.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.1)
[✓] VS Code (version 1.95.3)
[✓] Connected device (4 available)
Could anyone please help to rectify this error ?
Thanks.

This issue was resolved in thie commit :
https://github.com/hlefe/ar_flutter_plugin_flutterflow/commit/f09048cbf591d8508dfe5731c716d97e73615b27
Simply use the latest version of the plugin :
ar_flutter_plugin_flutterflow: ^0.7.55


miniupnpc_2: 2.0.20171212 -> 2.0.20180222

Semi-automatic update generated by https://github.com/ryantm/nix-update tools. These checks were done:

built on NixOS
ran /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip -h got 0 exit code
ran /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip --help got 0 exit code
ran /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip help got 0 exit code
ran /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip -V and found version 2.0.20180222
ran /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip -v and found version 2.0.20180222
ran /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip --version and found version 2.0.20180222
ran /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip version and found version 2.0.20180222
ran /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip -h and found version 2.0.20180222
ran /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip --help and found version 2.0.20180222
ran /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip help and found version 2.0.20180222
found 2.0.20180222 with grep in /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222
directory tree listing: https://gist.github.com/d79d8cc6872502e398d403b10aad9934

Failure on x86_64-darwin (full log)
Attempted: miniupnpc_2
Partial log (click to expand)
  "_strupnperror", referenced from:
      _main in upnpc.o
      _SetRedirectAndTest in upnpc.o
  "_upnpDiscover", referenced from:
      _main in upnpc.o
ld: symbol(s) not found for architecture x86_64
clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:305: upnpc-static] Error 1
builder for '/nix/store/l4n1qvnx8xqyz54fiq8zv996jkci7m9b-miniupnpc-2.0.20180222.drv' failed with exit code 2
error: build of '/nix/store/l4n1qvnx8xqyz54fiq8zv996jkci7m9b-miniupnpc-2.0.20180222.drv' failed

Success on aarch64-linux (full log)
Attempted: miniupnpc_2
Partial log (click to expand)
shrinking RPATHs of ELF executables and libraries in /nix/store/1alwddvdz1x0nj1kn65whnlqxvvl83ws-miniupnpc-2.0.20180222
shrinking /nix/store/1alwddvdz1x0nj1kn65whnlqxvvl83ws-miniupnpc-2.0.20180222/bin/upnpc
shrinking /nix/store/1alwddvdz1x0nj1kn65whnlqxvvl83ws-miniupnpc-2.0.20180222/lib/libminiupnpc.so.16
gzipping man pages under /nix/store/1alwddvdz1x0nj1kn65whnlqxvvl83ws-miniupnpc-2.0.20180222/share/man/
strip is /nix/store/3zq400fri5dv7d30lpxlqm2v9y1iis6j-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/1alwddvdz1x0nj1kn65whnlqxvvl83ws-miniupnpc-2.0.20180222/lib  /nix/store/1alwddvdz1x0nj1kn65whnlqxvvl83ws-miniupnpc-2.0.20180222/bin
patching script interpreter paths in /nix/store/1alwddvdz1x0nj1kn65whnlqxvvl83ws-miniupnpc-2.0.20180222
/nix/store/1alwddvdz1x0nj1kn65whnlqxvvl83ws-miniupnpc-2.0.20180222/bin/external-ip: interpreter directive changed from "/bin/sh" to "/nix/store/3gg2p6n4kv2f0lsxd41f5iz1ivkbzyzr-bash-4.4-p19/bin/sh"
checking for references to /build in /nix/store/1alwddvdz1x0nj1kn65whnlqxvvl83ws-miniupnpc-2.0.20180222...
/nix/store/1alwddvdz1x0nj1kn65whnlqxvvl83ws-miniupnpc-2.0.20180222

Success on x86_64-linux (full log)
Attempted: miniupnpc_2
Partial log (click to expand)
shrinking RPATHs of ELF executables and libraries in /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222
shrinking /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/upnpc
shrinking /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/lib/libminiupnpc.so.16
gzipping man pages under /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/share/man/
strip is /nix/store/fzcs0fn6bb04m82frhlb78nc03ny3w55-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/lib  /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin
patching script interpreter paths in /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222
/nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222/bin/external-ip: interpreter directive changed from "/bin/sh" to "/nix/store/q1g0rl8zfmz7r371fp5p42p4acmv297d-bash-4.4-p19/bin/sh"
checking for references to /build in /nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222...
/nix/store/akl3iiz899jl683calinfyf1wfgfl6a2-miniupnpc-2.0.20180222

Master has version 2.0.20180203 now. Let's wait for the next bump and try again.


NVDA did not read the voice results

Testing #203087

@amunger did this always reproduce for you?

yes, I never got it to read the result.

do you receive other alerts around the workbench? for example, if you save a document manually, do you hear save?

I hear the queue but 'save' is not announced

I think you've got an issue with your NVDA configuration then. Can you pls try resetting that as I cannot repro?

Closing as it is working for me and I believe there's some issue with your setup


Compatibilities with Bink Media

Hello Mr. Truong Bui,
I found out that if I enable Electra Player, the plugin stops working. Is there a workaround because my projects currently rely on both.
Thank you.

Unfortunately, I'm not familiar with the Electra Player plugin, so I couldn't help with this issue. But when there are conflicts between plugins, you may have to choose to use only one of those.

I am sorry. After further testing, the one that cause the player to not work is Bink Media. Sorry for the misleading question, but do you have a solution in mind regarding Bink Media?

Just bink the video you use for the loading screen. It solves the problem.


[ MB-13590 ] Open Telemetry improvements for AWS XRay

Summary

Add some additional metrics for the db connection and database table size
Configure otel logger and error handler so we can see errors
Switch to the cumulative metric aggregator since the one we were using is no longer supported for many metrics
Upgrade to a more recent aws-otel-collector
If possible, add log annotation in AWS X-Ray format to allow for log correlation

Setup to Run Your Code
Most of these changes are really only useful in AWS, and have been tested pretty extensively in the load test environment
Verification Steps for Author
These are to be checked by the author.

[x] Tested in the Loadtest environment (for changes to containers, app startup, or connection to data stores)
[ ] Request review from a member of a different team.

Warnings

:warning:
Please add the JIRA issue key to the PR title (e.g. MB-123)

  Generated by :no_entry_sign: dangerJS against a32f47d8af173e2541faa43815f7e53767f82897

After talking to @ahobson about this, I would like to take this on to review this work with @transcom/truss-platform-team folks during Woo Team. Drew's happy to pair and help if we get stuck.

This is sending more metrics to AWS 🎉.
It would be nice to have our OpenTel Sidecar be deployed everywhere (lower priority).

We will eventually need to enable this in our ATO environments.

The main goal of this OpenTel is to help debug things in our application logs.

Messages

:book:
:link: MB-16007

  Generated by :no_entry_sign: dangerJS against e1d6b81ce8ce2b3cdf85bbf5df7e0e141e4a3653


Update verilog backend to use file/line number metadata

Currently working in Dev. One issue is that if the modules are built from different files, it is not guarenteed to work. Considering it an experimental feature.


add ctzn comments elements

please take a look at the ".catch" statements and scattering of "?.", i'm pretty sure some of these are entirely superfluous.

Hey Melanie! Thanks for the PR! I reviewed this PR on the livestream (beginning of April 12's stream) so if you want the ✨full experience✨ you can watch there, but here's the summary:

Good start! This is a pretty sensible PR and a good feature to add.
I'm going to go ahead and take over merging from here, so my comments here are just for reference; no need to apply changes yourself.
There's one error in comment-view that's due to a copy-paste (I'll note it inline) but that's all I noticed by a visual review. Not bad!

There are a couple of decisions in the code which would be good to highlight in the text of your PR. These are small things but useful to include!

In the comment-view tag, you carried over the "mode" of post-view with full/condensed/content-only. This makes sense but it's a new feature for comment rendering, so it would have been helpful to describe how you approached those modes. (As the reviewer, I need to figure out whether it's an intentional addition or just an accident of copy-pasting.)
The comments-feed tag, your queries are hacking around the lack of a comments-view in the backend. This is fine as a temporary solution to a missing backend feature, but your PR text should highlight that there's a hack and mention that a comments-view should be added to the CTZN backend to make this work well.

Going to issues I find as I work on merging. Try to have these kinds of issues fixed before submitting a PR!

[ ] Wrong permission in comment-view for moderation
[ ] Styles are pretty screwy on the comment-view (avatar is large and unstyled)
[ ] Comment feed is incorrectly showing the "New comments" indicator


The trust relationship between this workstation and the primary domain failed

Error shown: "The trust relationship between this workstation and the primary domain failed." on domain logon or net connect to Windows 10/11 PDC joined workstations since July 2023 updates KB5028166 / KB5028185
component: samba-4.10.16-24.0.1.el7_9.x86_64
available patch: https://bugzilla.samba.org/show_bug.cgi?id=15418#c25
https://cpaste.org/?df0494cac0063e2e#Cx69G684EBPQ71S6sAUVXSYburgV6gPyKHfPSbfmHZPJ
trust.patch adapted for 4.10.16-24

Please check whether latest samba (4.10.16-25.0.1) fixed the issue for you, as there are Netlogon fixes added in that revision.

Actually, looks like an updated version of the patch above is indeed included in -25.0.1; closing as fixed.


Update PieceStores.md

Description of the PR
Updates PieceStores to include an example on a working rawEvent store.
Changes Proposed in this Pull Request (List new items in CHANGELOG.MD)

Semver Classification

[X] This PR only includes documentation or non-code changes.
[ ] This PR fixes a bug and does not change the (intended) framework interface.
[ ] This PR adds methods or properties to the framework interface.
[ ] This PR removes or renames methods or properties in the framework interface.

I'll resolve the travis errors tmrw.

This documentation could be better improved, and would probably be better off rewritten from scratch for the raw store part.
Plus, theres still pieces from the old example for music. Just saying

I'm on vacation until the 15th. I will update to requested changes by the 18th.

closed because of #325


Training_Loss

Thank you very much for the great work. I took a look to your implantation, I saw in the SAM paper that they combine focal loss + Dice loss but in your implantation you are using cross entropy with dice loss, I was wondering if you have tried with "monai.losses.DiceFocalLoss" as well?

hi @Ulteraa ,
we have not tried it yet since our dataset doesn't have too many small objects.


Need a way to share popular ports

An important use case is distributed services, which means that many people will want to access popular ports.  Currently, users just grab ports and get them or they don't.  Here is one strawman idea:

Develop and deploy an nginx DaemonSet that will grab ports 80, 81, 88, 8080, 8081, 8888, 9001,...
Create idea of a "slice" which is in a namespace.  When a user wants one of these ports, he creates a slice on the portal.
Every 10 minutes, the nginx service on each node wakes up, calls the portal, and requests the current slice set.  It then sets up the forwarding rules appropriately for the containers (note it will need the container names associated with the slice as well)

What mechanisms exist and are easy to use?  Can you cause a container to be restricted to a set of ports?  (We used this in Seattle and then pre-assigned ports to containers.  It really isn't the best mechanism, but was enough to get us started.)

I've documented a few possible solutions previously: Port Contention And Service Multiplexing. IPv6 is probably the least nasty one, implementation-wise. It's less convenient for folks on v4-only ISPs though.
What we could need is a requirements list from the different stakeholders involved: experimenters, node operators, platform operators, network admins.
Assigning random ports in @SeattleTestbed worked up to the point that it was impossible (without custom extensions) to run services on well-known ports. Do we think this makes sense for EdgeNet too?
Random find: nginx can proxy TCP and UDP to some extent, https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

To summarize our discussion during the meeting:

Go for IPv6, give experimenters separate addresses and DNS names so transport-layer ports never clash
If IPv4-only, use nginx's proxying mechanisms
Focus on the common use case, assumed to be IPv4+HTTP right now

If experimenters absolutely need more sophisticated demultiplexing, let's involve them to build the tech for it.
Agree?


Update "thius" to "this"

There is a bug where is written "thius" i've changed to "this"

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

thanks!


how do i have auto brackets?

like when i type {}, i want an intention to happen automatically, when i go inside and press enter. also how do i setup debugging for rust? if its a few lines, feel free to make a pull request on my fork. thank you 🙏

Hi. Someone already mentioned autopairs. Debugging in rust is something I haven't tried yet and can't suggest details on.
Google "Neovim debug rust" perhaps?


Trello Admin

If you have the cmdbar for admin only set to true and you have your admin configured via trello and you are the first to join the server you have to respawn before the admin loads and gives you perms to use cmdbar and see commands.

We should certainly trigger a refresh of the console when admin-level changes. That'll fix this specific issue, as well as make it so if you temp-mod someone they don't have to reset to see commands in console.

Fixed.


[SPARK-7464] DAG visualization: highlight the same RDDs on hover

Merged build triggered.

Merged build started.

Test build #32543 has started for   PR 6100 at commit fefe2af.

Test build #32543 has finished for   PR 6100 at commit fefe2af.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
        s"FileOutputCommitter or its subclass is expected, but got a $
trait FSBasedRelationProvider
abstract class OutputWriter

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/32543/
Test FAILed.

Merged build finished. Test FAILed.

retest this please

Merged build triggered.

Merged build started.

Test build #32568 has started for   PR 6100 at commit fefe2af.

Test build #32568 has finished for   PR 6100 at commit fefe2af.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/32568/
Test FAILed.

Merged build finished. Test FAILed.

retest this please

Merged build triggered.

Merged build started.

Test build #32637 has started for   PR 6100 at commit fefe2af.

Test build #32637 has finished for   PR 6100 at commit fefe2af.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/32637/
Test PASSed.

Master 1.4


[feature request] Indent whole selection

When the selection spans multiple lines, pressing Tab should increase the indent of all the selected lines by one level. Pressing Shift+Tab should decrease the indent of each line by one level. This is the behavior on Atom, Sublime, Gedit.
Perhaps IndentSelection and OutdentSelection (?) keybindings could be added.

With the latest commit it should auto indent selections when pressing tab.
We are probably going to have to wait on tcell to get shift-tab working because currently that is not supported by tcell.
Also I think having keybindings is a good a idea but the system may have to be tweaked to allow two actions to be bound to one key, although it should definitely be possible.


Helm operator : Get status of dependent resources

Feature Request
I have recently discovered the helm-operator. I really like the simplicity to maintain the definitions of releases and how the operator watches the parent definition as well as the dependent resources and have started migrating some of our deployments to it.
As a status, the operator returns the status of the deployment itself in status.Conditions as well as the status.deployedRelease name and manifest.
I find missing a way to add to custom columns the status (or any other field) from the dependent resources if watchDependentResources is true.
For example, I was thinking about having an optional field to watches.yaml, such as :
- version: v1alpha2
  group: lp.ml.io
  kind: Service
  chart: helm-charts/lp-service
  statuses:
    - version: v1
      group: ""
      kind: Pod
      name: podReadiness
      jsonPath: ".status.conditions[?(@.type=='Ready')].status"

This indicates to add a field status.podReadiness to CRD, having the value of Ready condition from child Pod.
This would allow the CRD to add columns like :
[...]
  additionalPrinterColumns:
    - JSONPath: .status.podReadiness
      description: status of the deployed Pod
      name: Ready
      type: string
[...]

and therefore have the statuses of the dependent resources in the get operation of the CR.
I can't estimate the complexity of the implementation yet.
As a Watch is already registered on the dependent resources, I guess the feasibility of the change depends on a status change being catchable by DependentPredicateFuncs. Does a status change trigger UpdateEvent ?

@romachalm Interesting idea!
Just to clarify, does your Helm release actually contain a v1.Pod object? Or is there some parent object (e.g. a Deployment or StatefulSet) in the release?
Off the top of my head, I think the helm operator would only be able to manage CR status based on fields in the direct owned resources, not any resources further down the ownership chain.
Also, using your example, what would you expect to happen if the release manifest contained more than one Pod?

As a Watch is already registered on the dependent resources, I guess the feasibility of the change depends on a status change being catchable by DependentPredicateFuncs. Does a status change trigger UpdateEvent ?

Right now, I think DependentPredicateFuncs is ignoring status updates of dependent objects, but we could probably update that to stop ignoring status updates when we're in the mode of supporting custom status fields.

@joelanford : you are right, my charts use parent objects, and never Pod directly (I just wanted to make it easier to understand).
But we are aligned : I just have in mind the objects the owner of which is the CRD managed by the helm-operator, in other words, only the resources deployed directly by the helm chart.
To give you a more pragmatic example : I deploy some knative services with the helm-operator (ksvc) together with some other services of our own.
ksvc already aggregates the statuses of the underlying resources (routes, configuration, etc...).
Getting the status of the ksvc would be configured in watches.yaml as :
- version: v1alpha2
  group: lp.ml.io
  kind: Service
  chart: helm-charts/lp-service
  returnedStatuses:
    - version: v1
      group: serving.knative.dev
      kind: Service
      name: ready
      status: ".status.conditions[?(@.type=='Ready')].status"
    - version: v1
      group: serving.knative.dev
      kind: Service
      name: reason
      status: ".status.conditions[?(@.type=='Ready')].reason"

If we have several resources... well, good question.
I guess a list should be constantly returned, ie something like :
apiVersion: launchpad.magicleap.io/v1alpha2
kind: Route
metadata:
  [...]
spec:
  [...]
status:
  conditions:
    [...]
  deployedRelease:
    manifest: |
      [...]
    name: test-status
    status:
      ready:
        - True
        - False
      reason:
        - ""
        - RevisionMissing

Then, it is the responsibility of the client consuming this info to parse it correctly. Of course, for custom columns display, it will represent something raw like :
NAME            READY            REASON
test-status    [True False]    [ RevisionMissing]

I think this raw display is acceptable compared to the benefit of having the statuses displayed in the CR get command.

Yeah a list is one option, but that seems a bit unwieldy (e.g. especially if there's one deployment you really care about, and another that you don't). I wonder if there's a way we can somehow narrow the scope to select just a single resource.
If we try to add resource name in the watches.yaml, the complication would be that the names of rendered resources are typically templated, containing at least the name of the release, so they can't be known in advance when creating the watches.yaml file.

I am aligned, we cannot write a name in the watches.yaml.
What about a map then ? The user will be able to filter on the resource he cares about by its name.
And he still has the ability to display everything

I think I have overthought this idea.
Let me come back to the original need I had : my real need is for the helm operator is able to know the actual readiness of the dependent resources.
Today, when we run the helm operator, we have as status conditions the successful deployment and reconciliation of the dependent ressources. But that does not mean that the dependent resources are actually ready.
To better explain, let me have an example. Let's say that I have a helm chart deploying 2 knative services (ksvc), 2 deployments and 1 virtual service (from istio).
My ksvc has a specific condition Ready which is true when the service can effectively serve :
$ k get ksvc ready-ksvc -o jsonpath="{.status.conditions[?(@.type=='Ready')].status}"
True%
$ k get ksvc non-ready-ksvc -o jsonpath="{.status.conditions[?(@.type=='Ready')].status}"
False%

My deployments do not have such a field. But they have a condition Available that compares the number of ready pods to the deployment definition :
$ k get deploy ready-pods -o jsonpath="{.status.conditions[?(@.type=='Available')].status}"
True%
$ k get deploy non-ready-pods -o jsonpath="{.status.conditions[?(@.type=='Available')].status}"
False%

My virtual service has no condition allowing me to test the readiness, so for this kind of resource, the deployed status of the CR is enough. It is ready by default.
For the two first resource kinds, I'd like to have a way to make my CRD understand that it can be considered as ready when the 2 ksvc and the 2 deployments are ready, and not ready when one of them is not.
I have imagined that we can describe those rules in watches.yaml such as :
- version: v1alpha2
  group: lp.ml.io
  kind: MyService
  chart: helm-charts/lp-service
  readiness:
    - version: v1alpha1
      group: serving.knative.dev
      kind: Service
      jsonPath: ".status.conditions[?(@.type=='Ready')].status"
      expectedValue: "True"
    - version: v1beta1
      group: extensions
      kind: Deployment
      jsonPath: ".status.conditions[?(@.type=='Availability')].status"
      expectedValue: "True"

These readiness definitions can be compiled by the controller with a logical AND : for the CR to be Ready, all the readiness criteria must be true.
note : I think that the expectedValue field may not always be True. Some resource conditions are negative, ie False means ok like for nodes :
status: "False"
type: MemoryPressure

In my example, ksvc readiness will be [true, false], which can be compiled as false, deployment will be [true, false], which can also be compiled as false. So my CR should have  Ready: false`
Without explicitly mentioning what had failed and why, the CR will at least help monitoring that something wrong had happened in at least one of the dependent resource. Up to the user to analyse what had failed and why.
I think it can simplify also the development : an array can be retrieved for all the children resources without having to identify exactly which resource had which status.

@romachalm This seems do-able and useful. Thanks for putting so much thought into this!

I don't see yet how predicate (which seems to be the one being able to retireve a dependent resource status) can send this condition to reconciliation (which can update the CR condition). Is an event embedded in a reconcile.Request as the source of the reconciliation ?

The predicate runs after an event on a watched resource is received. It acts as a filter to determine whether or not to run the reconciliation. The actual event never makes it to the reconciler (this is on purpose, see this FAQ).
In this case, I think we would just relax the predicate to allow status change events to trigger a reconcilication, and then we would update the Helm reconciler to run the comparisons and update the status.

I guess that the readiness of a CR cannot be limited to true or false and that there may be a third state such as Unknown. Should it be this status for resources that have no condition (like service)

Hmm, in that case would it mean that all charts that deploy a service would always be ready: unknown?
Perhaps we could tweak the config to be something like:
  readiness:
    - version: v1alpha1
      group: serving.knative.dev
      kind: Service
      trueJsonPath<EMAIL_ADDRESS>&& @.status=="True")]
      falseJsonPath<EMAIL_ADDRESS>&& @.status=="False")]
    - version: v1beta1
      group: extensions
      kind: Deployment
      trueJsonPath<EMAIL_ADDRESS>&& @.status=="True")]
      falseJsonPath<EMAIL_ADDRESS>&& @.status=="False")]

Then we could do something like:
func getCRReadiness(obj *unstructured.Unstructured, readinessConfigs []readinessConfig)  readyVal {
    objJson, _ := json.Marshal(obj.Object)
    var ready = readyTrue

    for _, rc := readinessConfigs {
        if isDefined(rc.trueJsonPath) && len(evalJsonPath(objJson, rc.trueJsonPath)) > 0) {
            ready = ready.And(readyTrue)
        } else if isDefined(rc.falseJsonPath) && len(evalJsonPath(objJson, rc.falseJsonPath)) > 0) {
            ready = readyFalse
            break
        } else {
            ready = readyUnknown
            break
        }
    }
    return ready
}

  trueJsonPath<EMAIL_ADDRESS>&& @.status=="True")]
  falseJsonPath<EMAIL_ADDRESS>&& @.status=="False")]

I like the idea of having one single jsonPath to get the value. If this criteria returns something, then the criteria is met -> ready.
However, I don't think that you have necessarily a Ready: False.
Look at the conditions of helm operator. You can have ReconcileError or ReleaseFailed and not Deployed: False.
Actually, I think we can do without Unknown and still be coherent. The algo can actually be simple with your jsonPath. Here is a pseudo code to try to explain.
getReadinessValue:
  for each dependent resource as r:
    if r.groupVersionKind not in watches.readiness.groupVersionKind:
      return true
    else:
      if r.getJsonPath( watches.readiness[r.groupVersionKind].jsonPath ) is not null:
        return true
      else:
        return false

svc will be caught by the first if statement (there is no condition), so it will be Ready: true, in other words, it won't have an influence on the other statuses.
ksvc and deploy will caught by the else statement. If we can retrieve the jsonPath from the unstructured , then it means that the readiness criteria we were looking for is met : so ready: true.  Else, it means that either the value if false(or the contrary of what we have defined) or the condition does not exist (because another condition has been triggered like fordeployedin helm operator). Sostatus: false`

We can avoid the loop if []readinessConfig is a map with gvk.String() as key (groupVersionKind does not seem to be Comparable) with jsonPath as value
That would make something like :
func getCRReadiness(obj *unstructured.Unstructured, readinessConfigs map[string]string)  readyVal {
    if rc, ok := readinessConfigs[obj.GroupVersionKind()]; ok {
        objJson, _ := json.Marshal(obj.Object)
        if isDefined(rc.trueJsonPath) && len(evalJsonPath(objJson, rc.trueJsonPath)) == 0) {
            return readyFalse
        }
    }
    return readyTrue
}

svc will not be part of the map, so its ready: true
Also, moving objJson inside if statement to avoid marshaling if not needed (like svc)

Yeah you're right. I had it in my head that obj was the CR, but it is the kind we're comparing. We would still need an outer loop that iterates the readinessConfigs to come up with the the final value though right?
Not to blow up this train of thought, but I wonder if we could come up with something more generic. For example:
statusConfig:
- key: "ready"
  value: "True"
  when:
  - version: v1alpha1
    group: serving.knative.dev
    kind: Service
    jsonPath<EMAIL_ADDRESS>&& @.status=="True")]
  - version: v1beta1
    group: extensions
    kind: Deployment
    jsonPath<EMAIL_ADDRESS>&& @.status=="True")]

We could iterate these in order. If keys are duplicated, the last one where all whens evaluate to true takes precedence.
If for a given key, none of the configs evaluate to true, we just would not add that key to the status. And to prevent stale status fields, we would clear out the custom status fields and re-evaluate them from scratch on every reconciliation.

So if you wanted to support ready: Unknown, you could do:
statusConfig:
- key: "ready"
  value: "Unknown"
- key: "ready"
  value: "True"
  when:
  - version: v1alpha1
    group: serving.knative.dev
    kind: Service
    jsonPath<EMAIL_ADDRESS>&& @.status=="True")]
  - version: v1beta1
    group: extensions
    kind: Deployment
    jsonPath<EMAIL_ADDRESS>&& @.status=="True")]

I like this format. It is intuitive to read, and indeed, generic enough. Good finding.

We would still need an outer loop that iterates the readinessConfigs to come up with the the final value though right?

I am not sure. If you have a map with dependent resources' groupVersionKinds as key, you just have to look for this key. The map can be built with the watches init, so at operator startup. I won't slow the operations then.
If I have understood correctly, the status change will trigger a call of the function getCRReadiness with the dependent resource as attribute obj *unstructured.Unstructured, correct ?
The dependent resource will so have the jsonPath to get or nil directly from the map, without adding a loop.

If I have understood correctly, the status change will trigger a call of the function getCRReadiness with the dependent resource as attribute obj *unstructured.Unstructured, correct ?
The dependent resource will so have the jsonPath to get or nil directly from the map, without adding a loop.

Ah no, not quite. When a dependent resource changes, the watch will trigger a reconciliation of the parent CR (not the dependent resource), which is what we want because we need to update the CR's status. So we need to look at all of the jsonpaths for all of the dependent resources every time we reconcile the parent CR to make sure we have the right status value. So we'll have to loop over every status config and when conditions during the parent CR reconciliation.

Yeah, sorry, you had already explained it to me.
In the reconcile method, the reconciled CR is aware of the dependent resources, correct ?
So it means you loop over its dependent resources like :
_, dr := range o.getDependentRessources() {
  status.SetCondition(types.HelmAppCondition{
    Type:    getStatusKey(),
    Status:  getCRReadiness(dr, readinessConfigs),
   })
   _ = r.updateResourceStatus(o, status)
}

Then the getCRReadiness can use the map. I still think we do not need to loop over the jsonPaths.

Close, but a couple of tweaks:

I think we should make these first class fields, not conditions
We need to do this reconciliation every time; so after installation, upgrade, and reconciliation.

status := o.Object["status"]
_, dr := range o.getDependentRessources() {
    status[getStatusKey()] = getStatusValue(dr, statusConfigs)
}
_ = r.updateResourceStatus(o, status)

There's probably some refactoring to do to support this. For example, we need to add something like a CustomFields map[string]string value to the status struct and make sure it marshals the custom fields correctly.
We should also probably refactor the reconcile method so that when install, upgrade, and reconcile complete, they all fall through to some common code so that we don't have to repeat these in each section.

Maybe a dedicated defer updateConditions (or reusing the updateResourceStatus as defer) that is able to update all the conditions (ConditionReleaseFailed, ConditionDeployed, ConditionIrreconcilable, ConditionDependentResourcesReady).
It would allow to set the conditions to their default value (so for instance, ConditionDeployed=false), and reduce the code in reconcile.
All the conditions will be displayed in the yaml, which may help the user to implement some tests from external program or add some custom columns to CRD.

So we can move r.updateResourceStatus(o, status) as defer and the various status.SetCondition can be moved to simple methods so as to reduce the code in Reconcile like :
func (s *HelmAppStatus) SetDeployedCondition(value types.ConditionStatus, reason type.HelmAppConditionReason, msg string)  {
  s.SetCondition(types.HelmAppCondition{
    Type:    types.ConditionDeployed,
    Status:  value,
    Reason:  reason,
    Message: msg,
  })
}

func (s *HelmAppStatus) SetReadyCondition(value types.ConditionStatus)  {
  s.SetCondition(types.HelmAppCondition{
    Type:    types.ConditionDependentResourcesReady,
    Status:  value,
  })
}

func (r HelmOperatorReconciler) Reconcile(request reconcile.reco) (reconcile.Result, error) {
  o := &unstructured.Unstructured{}
  ...
  status := types.StatusFor(o)
  defer r.updateResourceStatus(o, status)
  ...
  if err != nil {
    log.Error(err, "Release failed")
    status.SetReleaseFailedCondition(types.StatusTrue, types.ReasonInstallError, err.Error())
    return reconcile.Result{}, err
  }
  status.SetReleaseFailedCondition(types.StatusFalse, nil, "")
  ...
  status.SetDeployedCondition(types.StatusTrue, types.ReasonInstallSuccessful, message)
  ...
  status.SetReadyCondition(types.StatusTrue)

At return of Reconcile, the defer will update the resource with all conditions and DeployedRelease. The RemoveCondition can be removed in favor of setting the condition to false.

Sorry, I haven't forgotten about this. I was out for a month. I've added this to the v1.0.0 milestone so we make sure to get this in.
I've been working on a major refactoring of the Helm Operator here that will likely coincide with the 1.0.0 release, so I'll try some of these ideas out there as I find time.
Or if you're interested in working on this, I would definitely accept PRs there and help you out.
/lifecycle frozen

/remove-lifecycle stale

/lifecycle frozen

Is there any solution for such purposes by using helm based operators?

We need to look into this issue to check if this has been resolved in the recent versions or if implementing this feature is a requirement given there are no workarounds.


Redirect Nest home to projects page

Describe the solution you'd like
Add temporary redirect from / to /projects page similar to the old FE.

@arkid15r  Assign to me

@arkid15r assign it to me.

assigned to @nitinawari (first commented)


Fix Authenticate

This commit fix the return of CsrfToken and SessionID :D hope you will merge soon

done, thanks


Reorg KVPair Data Object in example

I converted over to using root instead of shared map. I'm going to leave container.request for now as that's what @ChumpChief is working on.


Missing return value

https://github.com/lsrock1/maskscoring_rcnn.detectron2/blob/20a69da631158880dd881c9473ffda85523450db/detectron2/modeling/roi_heads/roi_heads.py#L702
Is there a return statement missing?

You are right. I missed it during copying from https://github.com/youngwanLEE/centermask2/blob/63b939807320bf3622250da446e64bb17c3dc0e7/centermask/modeling/centermask/center_heads.py#L487. Thanks!


Dual mode (rtsp/mqtt)

I have made changes that allow the neolink home assistant addon to run both rtsp and mqtt at the same time in 'dual' mode, and added a configuration option to reflect that. Everything seems to work well in my testing.

Thanks for your contribution. I slightly changed a few things and merged it.

Perfect, thank you for the quick update.


Update of PDQm to R4

Draft for committee review.

do not merge until after committee review

ITI approved unanimously publication at the face-to-face meeting July 25, 2019


New hackage release ?

Would you mind pushing a new release on hackage to include the fix for #30
I cannot use the nixos binary for language-puppet as hydra is failing since.
Thanks.

Done.

Thanks !


Enable tpm counter support for counter_basic_api on imx93-evk

This PR is based on https://github.com/zephyrproject-rtos/zephyr/pull/70714
it includes two updates:

Add imx93-evk support for tests/drivers/counter/counter_basic_api
fix counter_basic_api usecase test_single_shot_alarm_instance to use absolute alarm.

Have fix this issue by update tpm drivers.


Reduce container size

Our container size is fairly large at ~280mb. It would be great if we could reduce this.
Some ideas:

Base image used to distribute with is unbuntu:22.04 - is there something smaller that also include glibc? We need that because we build the binary with CGO_ENABLED
Do we need libpcap-dev as a dependency, or can we go with something smaller?
Do we need to install our own ca-certs? Is there an image that comes with them preinstalled?
What can we do shrink the actual go binary? eg using "-s -w" build flag can strip debug symbols and DWARF tables that we don't need to distribute
Are there any other dependencies we could trim?

Partly addressed by #266. Would be great to get even smaller, but we can close for now.


[BUG] Company Logo not applied

Describe the bug
Adding a Company Logo does not work, it is not included after downloading the setup.
To Reproduce
Steps to reproduce the behavior:

Upload Company Logo
Click Apply
Download

Expected behavior
Company Logo Applied and included in zip file

Thank you for the bug report. I deployed a fix for the Starter Kit. Please verify that it solves the problem for you.

Edit to the issue:
I was trying to only upload a logo (no Favicon)
This is not working, and no error is thrown

Fixed, now you can just upload the logo without the need to provide an icon


Segmentation fault - Combiner - json_object_int_sum aggregator - combine function

Hi,
I am trying json_object_int_sum aggregator, working well in continuous view. But when I try to use it in combine function, its crashing.
Test Scenario:
CREATE STREAM elapsed_json_stream_ts (ts TIMESTAMP, app_id varchar, country varchar, elapsed_time bigint);

CREATE CONTINUOUS TRANSFORM elapsed_json_transform_ts AS
SELECT '{ "' || ((elapsed_time / 10) * 10)::text || '": ' || 1 || ' }' elapsed_time_bucket, country, app_id, ts  FROM  elapsed_json_stream_ts;

CREATE CONTINUOUS VIEW elapsed_json_cv_ts_hour WITH (ttl = '2 hour', ttl_column = 'hour') AS
	SELECT
		date_round(ts, '1 hour') as hour,
		json_object_int_sum(elapsed_time_bucket) as elapsed_time_bucket,
		app_id,
		country
	FROM output_of('elapsed_json_transform_ts')
	group by hour, app_id, country;

insert into elapsed_json_stream_ts values (CURRENT_TIMESTAMP, 'a', 'us', 100);
insert into elapsed_json_stream_ts values (CURRENT_TIMESTAMP, 'a', 'us', 100);

Works well, aggregation is working fine.
pipeline=# select * from elapsed_json_cv_ts_hour;
           hour            | elapsed_time_bucket | app_id | country
---------------------------+---------------------+--------+---------
 2017-10-12 17:30:00+05:30 | { "100": 2 }        | a      | us
(1 row)

Now add new CV using the output stream of old cv:
CREATE CONTINUOUS VIEW elapsed_json_cv_ts_day WITH (ttl = '10 days', ttl_column = 'day') AS
	SELECT
		date_round((new).hour, '24 hours') as day,
		combine((delta).elapsed_time_bucket) AS elapsed_time_bucket,
		(new).app_id,
		(new).country
	FROM output_of('elapsed_json_cv_ts_hour')
	group by day, app_id, country;

Add Data:
insert into elapsed_json_stream_ts values (CURRENT_TIMESTAMP, 'a', 'us', 100);

Crash (It did crash on 0.9.8)
Segmentation fault (PID 23245)
version: PipelineDB 0.9.7 at revision 5facc892a5eeb6f96e5a2ea86539323727360f63 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4, 64-bit
query: elapsed_json_cv_ts_hour
backtrace:
pipelinedb: bgworker: combiner0 [pipeline]   (debug_segfault+0x25)[0x71fc91]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x10330)[0x7feacf36b330]
pipelinedb: bgworker: combiner0 [pipeline]   (hash_seq_init+0x36)[0x9a8fee]
pipelinedb: bgworker: combiner0 [pipeline]   (json_object_int_sum_transout+0x95)[0x973a8c]
pipelinedb: bgworker: combiner0 [pipeline]   [0x697ec8]
pipelinedb: bgworker: combiner0 [pipeline]   [0x6988df]
pipelinedb: bgworker: combiner0 [pipeline]   [0x69f16e]
pipelinedb: bgworker: combiner0 [pipeline]   (ExecProject+0x305)[0x69f779]
pipelinedb: bgworker: combiner0 [pipeline]   [0x795b32]
pipelinedb: bgworker: combiner0 [pipeline]   [0x7981c1]
pipelinedb: bgworker: combiner0 [pipeline]   [0x798871]
pipelinedb: bgworker: combiner0 [pipeline]   (ContinuousQueryCombinerMain+0x429)[0x799984]
pipelinedb: bgworker: combiner0 [pipeline]   [0x7929b7]
pipelinedb: bgworker: combiner0 [pipeline]   (StartBackgroundWorker+0x2ac)[0x7a5d64]
pipelinedb: bgworker: combiner0 [pipeline]   [0x7ba282]
pipelinedb: bgworker: combiner0 [pipeline]   [0x7ba559]
pipelinedb: bgworker: combiner0 [pipeline]   [0x7b50f4]
pipelinedb: bgworker: combiner0 [pipeline]   (PostmasterMain+0x10ef)[0x7b44d9]
pipelinedb: bgworker: combiner0 [pipeline]   [0x6e4760]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7feace377f45]
pipelinedb: bgworker: combiner0 [pipeline]   [0x4725b7]
LOG:  worker process: combiner0 [pipeline] (PID 23245) was terminated by signal 6: Aborted
DETAIL:  Failed process was running: combiner0 [pipeline]
LOG:  terminating any other active server processes
WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and repeat your command.
WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and repeat your command.
WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and repeat your command.
WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and repeat your command.
WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and repeat your command.
FATAL:  the database system is in recovery mode
LOG:  all server processes terminated; reinitializing
LOG:  database system was interrupted; last known up at 2017-10-12 17:34:21 IST
LOG:  database system was not properly shut down; automatic recovery in progress
LOG:  redo starts at 0/1F3ACD0
LOG:  invalid record length at 0/1F7E980
LOG:  redo done at 0/1F7E958
LOG:  last completed transaction was at log time 2017-10-12 17:37:54.563136+05:30
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
LOG:  pipelinedb scheduler started
LOG:  starting pipelinedb processes for database: "pipeline"
LOG:  pipelinedb process "reaper0 [pipeline]" running with pid 30397
LOG:  pipelinedb process "worker0 [pipeline]" running with pid 30400
LOG:  pipelinedb process "combiner0 [pipeline]" running with pid 30399
LOG:  pipelinedb process "queue0 [pipeline]" running with pid 30398

Please let me know if you need anything from my side to resolve this issue.
Hoping there will be a quick fix.
Thanks in advance

Simpler repro case:
derek=# create stream s (x integer, payload text);
CREATE STREAM
derek=# create continuous view v as select x, json_object_int_sum(payload) from s group by x;
CREATE CONTINUOUS VIEW
derek=# insert into s (x, payload) values (0, '{"x": 0}');
INSERT 0 1
derek=# insert into s (x, payload) values (1, '{"x": 1}');
INSERT 0 1
derek=# select * from v;
 x | json_object_int_sum
---+---------------------
 0 | { "x": 0 }
 1 | { "x": 1 }
(2 rows)

derek=# insert into s (x, payload) values (1, '{"x": 1}');^C
derek=# select combine(json_object_int_sum) from v;

Segmentation fault (PID 27328)
version: PipelineDB  at revision  on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609, 64-bit
query: select combine(json_object_int_sum) from v;
backtrace:
pipelinedb: derek derek [local] SELECT(debug_segfault+0x34)[0x727f18]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fbcade02390]
/lib/x86_64-linux-gnu/libc.so.6(+0x9f84e)[0x7fbcace1984e]
pipelinedb: derek derek [local] SELECT(text_to_cstring+0x100)[0x975988]
pipelinedb: derek derek [local] SELECT(json_out+0x24)[0x8c9281]
pipelinedb: derek derek [local] SELECT(FunctionCall1Coll+0x96)[0x9bc172]
pipelinedb: derek derek [local] SELECT(OutputFunctionCall+0x2d)[0x9bdc16]
pipelinedb: derek derek [local] SELECT[0x480eb0]
pipelinedb: derek derek [local] SELECT(ExecutePlan+0xc2)[0x698f3a]
pipelinedb: derek derek [local] SELECT(standard_ExecutorRun+0x16b)[0x696c53]
pipelinedb: derek derek [local] SELECT(ExecutorRun+0x4d)[0x696ae5]
pipelinedb: derek derek [local] SELECT[0x84fff1]
pipelinedb: derek derek [local] SELECT(PortalRun+0x235)[0x84fc42]
pipelinedb: derek derek [local] SELECT[0x8499b9]
pipelinedb: derek derek [local] SELECT(PostgresMain+0x733)[0x84ddb4]
pipelinedb: derek derek [local] SELECT[0x7c7971]
pipelinedb: derek derek [local] SELECT[0x7c7015]
pipelinedb: derek derek [local] SELECT[0x7c33f5]
pipelinedb: derek derek [local] SELECT(PostmasterMain+0x1114)[0x7c298c]
pipelinedb: derek derek [local] SELECT[0x6ecccb]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fbcacd9a830]

@derekjn May I know when we can expect fix for this? Thank you!

@venu we should have an official release update containing a fix for this by the end of the week, hopefully as soon as possible. One of the challenges with this issue is fixing it in a way that doesn't change the function's catalog data, which would require a database directory upgrade. We should be able to determine a fix that simple requires installing the latest release update though--thanks for your patience!

@venu we've just published an official release update that contains a fix for this issue:
https://github.com/pipelinedb/pipelinedb/releases/tag/0.9.8u2
Thanks again for your patience here as well as the helpful writeup!


fix: add placeholders for empty lists

Not as clean as I had thought it would be.

Originally wanted to add some gifs explaining each item, but gif was only really help for entities.
There isn't easy way to distinguish between a dialog. What really matters is the source of content and role developer plays and that would need a custom graphic.

I also was going to remove the redundant "new" buttons, but the other "new" buttons have the component reference that sets focus on every re-fresh and removing it was going to increase complexity

Fixes VSTS#916

:tada: This PR is included in version 0.293.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


how to cancel a query?

in sqllite, there's something called interrupt handler, any similar things in duckdb?

See the implementation of https://github.com/duckdb/duckdb-rs/pull/343


The _libraries folder is being excluded by GitHub pages build process

From:

https://github.community/t/unable-to-access-resources-in-folder-with-name-starting-with/10505
https://medium.com/@juliakmdev/learning-that-github-pages-struggles-with-certain-file-names-4d867d499ca9

GitHub Pages uses Jekyll by default to build Pages sites. Because of the way that Jekyll works, any files or folders that start with _, ., # or end with ~ are not built:
https://help.github.com/articles/files-that-start-with-an-underscore-are-missing/ 34
If you’re not using Jekyll, you can add an empty file named .nojekyll to the root of your publishing source to avoid this.
If you are using Jekyll, you can use the include directive in your _config.yml file to explicitly include these files/folders:
https://jekyllrb.com/docs/configuration/options/

Fixed in https://github.com/makeabilitylab/p5js/commit/270768e50921614fa8c1da0054ebbd2dafac2208


Staggered unmounting animation in TransitionMotion Demo

I can't get it fully working to animate both mounting & unmounting components staggered within TransitionMotion.
It would be awesome to have a demo because you also mentioned it in the docs under "TransitionMotion#styles" =)

Can you be more precise please? E.g. a code snippet would help =)

This is the working part I got so far. But only for the staggered mounting animation. https://d.pr/v/10Gkd
  _getStyles (prevStyles) {
    const {items} = this.props;
    const itemHeight = 84;
    let destinationStyles = {};

    if (!prevStyles) {
      // reverse because the last item should lead the staggering.
      items.reverse().forEach(flight => {
        destinationStyles[item.id] = {
          opacity: spring(0),
          y: spring(-200),
          flight
        };
      });

      return destinationStyles;
    }

    Object.keys(prevStyles).forEach((key, i, keysArr) => {
      const {items} = prevStyles[key];
      let destinationY = 0;

      if (i === 0) {
        // fixed position for the item that leads the staggering.
        destinationY = (keysArr.length - 1) * itemHeight;
      } else {
        // every other item follows the item before them.
        const itemBefore = prevStyles[keysArr[i - 1]];
        destinationY = itemBefore.y.val - itemHeight;
      }

      destinationStyles[item.id] = {
        opacity: spring(1),
        y: spring(destinationY, [300, 30]),
        flight
      };
    });

    return destinationStyles;
  }

I'm now looking to animate unmounts too. Just instead of sliding in they should slide out down.
Now when I'm going to differentiate between the leading mounting and unmounting component to do 2 independent staggered animations all within getStyles, I think this might get ugly.
Also it's strange that I'm not using willEnter/willLeave so far so could I be better off using StaggeredMotion 2 times?
I'm really unsure here, would be awesome if you could point me into the right direction! : )

Update: Got it working, will post an the code soon!

@webyak would love to see it ;)

@arush Nope, TransitionMotion 😁

This is my solution. I think it could be improved. Do you guys have any idea on how to make this more simple?
// ==================================================
// OutboundList
// ----
// A list of inbound flights.
// ==================================================

import React from "react";
import {TransitionMotion, spring} from "react-motion";
import OutboundFlight from "./OutboundFlight";

// full css height of a single item.
const itemHeight = 84;

const OutboundList = React.createClass({
  getInitialState() {
    return {reversedFlights: []};
  },
  componentWillReceiveProps ({flights}) {
    this.setState({
      reversedFlights: flights.reverse()
    });
  },
  _getDestinationStyles (prevStyles) {
    const {reversedFlights} = this.state;
    let destinationStyles = {};

    // NOTE: calling props.flights.reverse() here messes things up,
    // aka being inaccurate.
    reversedFlights.forEach((flight, i) => {
      let beforeKey = "";
      // leading item is at the bottom.
      let destinationY = (reversedFlights.length - 1) * itemHeight;

      if (i !== 0) {
        beforeKey = reversedFlights[i - 1].id;
        const beforeStyle = destinationStyles[beforeKey];
        // subsequent items follow the one before them.
        destinationY = Math.floor(beforeStyle.y.val - itemHeight);
      }

      destinationStyles[flight.id] = {
        opacity: spring(1),
        y: spring(destinationY),
        offset: i * itemHeight,
        beforeKey,
        flight
      };
    });

    // include additional items from previous styles.
    if (prevStyles) {
      Object.keys(prevStyles).forEach(key => {
        const {beforeKey, flight, offset} = prevStyles[key];
        const beforeStyle = prevStyles[beforeKey];

        if (beforeStyle) {
          destinationStyles[key] = {
            opacity: spring(1),
            y: spring(Math.floor(beforeStyle.y.val - itemHeight)),
            offset,
            beforeKey,
            flight
          };
        }
      });
    }

    return destinationStyles;
  },
  _willEnter (key, {beforeKey, offset, flight}) {
    const enterY = -200 - offset;

    return {
      opacity: spring(0),
      y: spring(enterY),
      offset,
      beforeKey,
      flight
    };
  },
  _willLeave (key, {beforeKey, offset, flight}) {
    const leaveY = 600 - offset;
    console.log(offset);

    return {
      opacity: spring(0),
      y: spring(leaveY),
      offset,
      beforeKey,
      flight
    };
  },
  render() {
    return (

        <TransitionMotion
          styles={this._getDestinationStyles}
          willEnter={this._willEnter}
          willLeave={this._willLeave}>
          {interpolatedStyles =>

              {Object.keys(interpolatedStyles).map(key => {
                const {opacity, y, flight} = interpolatedStyles[key];
                return (
                  <li
                    key={key}
                    style={{
                      opacity,
                      WebkitTransform: `translate3d(0, ${y}px, 0)`,
                      transform: `translate3d(0, ${y}px, 0)`
                    }}>
                    <OutboundFlight {...flight}></OutboundFlight>

                );
              })}

          }
        </TransitionMotion>

    );
  }
});

export default OutboundList;

Note: You probably want to animate opacity staggered too.

I am having the same use case, ii want to animate the left and opacity style properties on every item in a list on mount. Kind of struggling wrapping my head around it. Same as @webyak i thought using <StaggeredMotion> and willEnter would work but willEnter does not fire on initialMount, only when something is leaving the list. Your solution looks smart @webyak but is there anyway to implement this use case in the API @chenglou ?

@iandoe @webyak you can check sources of react-collapse, that might help.

I'm running into a brick wall with this as well. Is there any existing example code for staggered animations  with TransitionMotion?

I too had this problem, but I managed to create more or less working example. You can check out the example here: https://github.com/mlewando/staggered-unmount-mount-react-motion


fix(Checkbox): Safari + Firefox accessibility but better this time

Overview
Ran into a couple automated axe failures and implemented a better cross-browser solution.

PR Checklist

[ ] Related to designs:
[x] Related to JIRA ticket: gm-341
[x] I have run this code to verify it works
[ ] This PR includes unit tests for the code change

📬Published Alpha Packages:@codecademy/gamut-kit@0.5.56-alpha.0ee861.0@codecademy/gamut-labs@19.23.19-alpha.0ee861.0@codecademy/gamut@36.9.2-alpha.0ee861.0@codecademy/monaco@0.3.10-alpha.0ee861.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://61323b3040e8e94df9ed7247--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.5.57-alpha.c3fb0f.0@codecademy/gamut-labs@19.24.1-alpha.c3fb0f.0@codecademy/gamut@36.9.2-alpha.c3fb0f.0@codecademy/monaco@0.3.10-alpha.c3fb0f.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://61323ef421e0dd5d46a0e6fe--gamut-preview.netlify.appDeploy Logs


Fix vxlan issue with NAT enabled

Signed-off-by: Aswin Surayanarayanan<EMAIL_ADDRESS>

@aswinsuryan Can you add some detail in the summary or link to an issue if one exists?

@aswinsuryan Can you add some detail in the summary or link to an issue if one exists?

Linked the issue.

@mangelajo can you review/comment on that approach?