Multi ClientAsyncWriter::Write() calls will crash.

I changed TEST_P(AsyncEnd2endTest, SimpleClientStreaming) in async_end2end_test.cc to test client async writing and found 7 calls of ClientAsyncWriter::Write() will crash.
TEST_P(AsyncEnd2endTest, SimpleClientStreaming) {
  ...
  std::unique_ptr<ClientAsyncWriter<EchoRequest>> cli_stream(
      stub_->AsyncRequestStream(&cli_ctx, &recv_response, cq_.get(), tag(1)));
  ...
  cli_stream->Write(send_request, tag(31));
  cli_stream->Write(send_request, tag(32));
  cli_stream->Write(send_request, tag(33));
  cli_stream->Write(send_request, tag(34));
  cli_stream->Write(send_request, tag(35));
  cli_stream->Write(send_request, tag(36));
  cli_stream->Write(send_request, tag(37));
  ...
}

Call stacks:

 	async_end2end_test.exe!memset(unsigned char * dst, unsigned char value, unsigned long count) 行 137	未知
 	async_end2end_test.exe!call_start_batch(grpc_exec_ctx * exec_ctx, grpc_call * call, const grpc_op * ops, unsigned int nops, void * notify_tag, int is_notify_tag_closure) 行 1392	C
 	async_end2end_test.exe!grpc_call_start_batch(grpc_call * call, const grpc_op * ops, unsigned int nops, void * tag, void * reserved) 行 1715	C
 	async_end2end_test.exe!grpc::Channel::PerformOpsOnCall(grpc::CallOpSetInterface * ops, grpc::Call * call) 行 95	C++
 	async_end2end_test.exe!grpc::Call::PerformOps(grpc::CallOpSetInterface * ops) 行 662	C++
 	async_end2end_test.exe!grpc::ClientAsyncWriter::Write(const grpc::testing::EchoRequest & msg, void * tag) 行 206	C++
>	async_end2end_test.exe!grpc::testing::`anonymous namespace'::AsyncEnd2endTest_SimpleClientStreaming_Test::TestBody() 行 453	C++
 	async_end2end_test.exe!testing::internal::HandleSehExceptionsInMethodIfSupported(testing::Test * object, void(testing::Test::*)() method, const char * location) 行 2063	C++
 	async_end2end_test.exe!testing::internal::HandleExceptionsInMethodIfSupported(testing::Test * object, void(testing::Test::*)() method, const char * location) 行 2114	C++
 	async_end2end_test.exe!testing::Test::Run() 行 2150	C++
 	async_end2end_test.exe!testing::TestInfo::Run() 行 2330	C++
 	async_end2end_test.exe!testing::TestCase::Run() 行 2445	C++
 	async_end2end_test.exe!testing::internal::UnitTestImpl::RunAllTests() 行 4316	C++
 	async_end2end_test.exe!testing::internal::HandleSehExceptionsInMethodIfSupported(testing::internal::UnitTestImpl * object, bool(testing::internal::UnitTestImpl::*)() method, const char * location) 行 2063	C++
 	async_end2end_test.exe!testing::internal::HandleExceptionsInMethodIfSupported(testing::internal::UnitTestImpl * object, bool(testing::internal::UnitTestImpl::*)() method, const char * location) 行 2114	C++
 	async_end2end_test.exe!testing::UnitTest::Run() 行 3926	C++
 	async_end2end_test.exe!RUN_ALL_TESTS() 行 2289	C++
 	async_end2end_test.exe!main(int argc, char * * argv) 行 1477	C++

This is expected behavior. You can only have 1 outstanding asynchronous
write on the same steam without waiting for the completion queue
notification to indicate that it is OK to do another write to that stream.
This is a documented part of the async API.
On Sun, Aug 7, 2016, 6:31 AM Jin Qing<EMAIL_ADDRESS>wrote:

I changed TEST_P(AsyncEnd2endTest, SimpleClientStreaming) in
async_end2end_test.cc to test client async writing and found 7 calls of
ClientAsyncWriter::Write() will crash.
TEST_P(AsyncEnd2endTest, SimpleClientStreaming) {
...
std::unique_ptr<ClientAsyncWriter> cli_stream(
stub_->AsyncRequestStream(&cli_ctx, &recv_response, cq_.get(), tag(1)));
...
cli_stream->Write(send_request, tag(31));
cli_stream->Write(send_request, tag(32));
cli_stream->Write(send_request, tag(33));
cli_stream->Write(send_request, tag(34));
cli_stream->Write(send_request, tag(35));
cli_stream->Write(send_request, tag(36));
cli_stream->Write(send_request, tag(37));
...
}
Call stacks:
async_end2end_test.exe!memset(unsigned char * dst, unsigned char value, unsigned long count) 行 137    未知
async_end2end_test.exe!call_start_batch(grpc_exec_ctx * exec_ctx, grpc_call * call, const grpc_op * ops, unsigned int nops, void * notify_tag, int is_notify_tag_closure) 行 1392  C
async_end2end_test.exe!grpc_call_start_batch(grpc_call * call, const grpc_op * ops, unsigned int nops, void * tag, void * reserved) 行 1715    C
async_end2end_test.exe!grpc::Channel::PerformOpsOnCall(grpc::CallOpSetInterface * ops, grpc::Call * call) 行 95    C++
async_end2end_test.exe!grpc::Call::PerformOps(grpc::CallOpSetInterface * ops) 行 662   C++
async_end2end_test.exe!grpc::ClientAsyncWriter::Write(const grpc::testing::EchoRequest & msg, void * tag) 行 206   C++

async_end2end_test.exe!grpc::testing::`anonymous namespace'::AsyncEnd2endTest_SimpleClientStreaming_Test::TestBody() 行 453    C++
async_end2end_test.exe!testing::internal::HandleSehExceptionsInMethodIfSupported(testing::Test * object, void(testing::Test::)() method, const char * location) 行 2063   C++
async_end2end_test.exe!testing::internal::HandleExceptionsInMethodIfSupported(testing::Test * object, void(testing::Test::)() method, const char * location) 行 2114  C++
async_end2end_test.exe!testing::Test::Run() 行 2150    C++
async_end2end_test.exe!testing::TestInfo::Run() 行 2330    C++
async_end2end_test.exe!testing::TestCase::Run() 行 2445    C++
async_end2end_test.exe!testing::internal::UnitTestImpl::RunAllTests() 行 4316  C++
async_end2end_test.exe!testing::internal::HandleSehExceptionsInMethodIfSupported(testing::internal::UnitTestImpl * object, bool(testing::internal::UnitTestImpl::)() method, const char * location) 行 2063 C++
async_end2end_test.exe!testing::internal::HandleExceptionsInMethodIfSupported(testing::internal::UnitTestImpl * object, bool(testing::internal::UnitTestImpl::)() method, const char * location) 行 2114    C++
async_end2end_test.exe!testing::UnitTest::Run() 行 3926    C++
async_end2end_test.exe!RUN_ALL_TESTS() 行 2289 C++
async_end2end_test.exe!main(int argc, char * * argv) 行 1477   C++

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/grpc/grpc/issues/7659, or mute the thread
https://github.com/notifications/unsubscribe-auth/AIdEkNJ6-YHkBdbB-Pc7-EUGyNLQwlqRks5qdcIDgaJpZM4Jeeu7
.

We need REAL async API.

The justification for allowing only 1 write before a completion notification is straightforward; async operations are intended to be concurrent, but concurrent operations on the same side of a stream are not allowed since each side of the stream has operations that must appear to be in-order. (Note that I've made a corresponding edit to my previous response) This is still concurrent with regard to the receiver side of the stream in the sense that multiple messages can be outstanding before the receiver operates on them, and in the sense that multiple streams (RPCs) can go on the same channel.
That said, we always welcome API feedback. I'd be glad to hear your detailed critique of the C++ async API as well as to understand what you would expect in a "REAL" (sic) API. Note that the C++ async API is already used by several projects, including TensorFlow.

I will try to change grpc_call::active_batches from an array to a list to allow multi async Write() without blocking waiting for the completion notification. That will be easier to use.
struct grpc_call {
  batch_control active_batches[MAX_CONCURRENT_BATCHES];
  ...
};

For starters, let me request you not to start coding this up as a pull request without a strong justification. I will not accept such a change, nor will any other team member. Changing the grpc_call from an array to a list will add needless allocations (and thus locking) to an extremely critical path, will hinder performance, and will make the whole system prone to memory leaks.
Before you start coding this, please just answer my question: what would you expect to see in a "REAL" API? What do you expect to accomplish by allowing multiple writes on the same side of a stream without a notification in between? How do you intend to redefine the concurrency contract to handle such operations? Let me again emphasize that our reason for this restriction is to make sure that we can provide sane stream semantics in an asynchronous system that is typically used with high concurrency.
We're an open-source project, so you can fork your own version and make whatever changes you want to your version, but I can't envision a situation where such changes would be accepted upstream unless there is a real justification.

what would you expect to see in a "REAL" API?

No crash() in Write(). No wait before next Write().

What do you expect to accomplish by allowing multiple writes on the same side of a stream without a notification in between?

Why need notification? Users want to write messages without notification.

How do you intend to redefine the concurrency contract to handle such operations?

Keep it the old way but no crash and no wait.

When we designed the C and C++ API, we chose to provide something that would allow the highest performance possible. This is that model, with these contracts. With that said, you may have a misunderstanding of the notification mechanism: it isn't to mean the call has been fully processed, received and responded - otherwise, it wouldn't be a true async API. The notification is to mean that the API is now ready to receive another write from your software. There is no "wait" time in the sense that the API will not block between the Write and the notification. This is merely the API ingesting your call and preparing itself to send it. All outstanding calls will still happen asynchronously, and concurrently.
I'll say it again: the API will not block in any way between the Write and the notification. This is merely the core trying to process your call in the fastest possible way, and signaling you immediately after it's done evaluating how to do so that it's ready for another Write.

Can I have a ClientAsyncWriter::WriteAndAsyncNext() without blocking?
In async_end2end_test.cc, there is a blocking wait for the completion notification:
        for (;;) {
          auto r = cq->AsyncNext(...);
          ...
        }

Is there an async way to do it? How?

There are several AsyncNext in that file, some are blocking, some aren't. The only reason some of these calls should be blocking is if there's a non-zero deadline set, and gRPC is waiting for work to process from the network or other threads.
For example, this call that has a deadline set to 0 won't be blocking:
      for (;;) {
        auto r = cq->AsyncNext(&got_tag, &ok, gpr_time_0(GPR_CLOCK_REALTIME));
        if (r == CompletionQueue::TIMEOUT) continue;
        if (r == CompletionQueue::GOT_EVENT) break;

In that case, AsyncNext will either have not done anything, because there's no work to do, and return CompletionQueue::TIMEOUT, or it will have processed some work, and return CompletionQueue::GOT_EVENT with the tag and ok result set to the appropriate event that happened.

AsyncNext(..., gpr_time_0(...)) is non-blocking, but the for loop is busy waiting. It will wait until some other threads set the completion event.

I'm going to back up a level and say that we won't add a ClientAsyncWriter::WriteAndAsyncNext() method. Our approach to API is conservative - we won't add an API that combines two things that can already be easily done separately (separate call to Write and Next or AsyncNext in this case). If someone wants to do that, they can easily write those two lines of code in their own function. We are willing to add to the API for features that can't be provided in the existing API, but not otherwise.
A single WriteAndAsyncNext limits options such as doing Write on other streams before checking any given one. In practice, code responds to Next or AsyncNext by using the tag to reference some structure that stores state associated with that stream, which is then allowed to continue to the next stage of its processing (such as doing another Write).

I'll also add that an API that does exactly what you want would actually do the following under the hood:

Create a worker thread.
Accumulate all the Writes to do in a worker queue (which could lead to out of memory problems, but that's another topic).
Process the worker queue in the worker thread.

The bad part about that model is that it's doing extra work that some users may not desire (create a thread-safe list, and a worker thread).
The good part about that model is that it's currently very easy for someone to write on top of current API.
Imagine a networked video game for instance, running on a low-end device. It may be resource-constrained, and cannot afford threads. Its main loop would definitely be a busy loop anyway, and would look like something along these lines:
AbsoluteTime now = 0;
TimeDifference frameDelta = 0;
while (!UserWantsToQuit()) {
  AbsoluteTime currentTime = GetCurrentTime();
  frameDelta = currentTime - now;
  now = currentTime;

  // Prepare our next frame data
  ProcessAI(now, frameDelta);
  ProcessNetwork(now, frameDelta); // calls cq->AsyncNext(... gpr_time_0(GPR_CLOCK_REALTIME));
  ProcessOtherPlayers(now, frameDelta);
  ProcessAnimations(now, frameDelta);
  ProcessUI(now, frameDelta);

  // Draw and play our next frame
  DrawFrame(now, frameDelta);
  OutputSound(now, frameDelta);
}

We preferred to leave the option to the developer about which exact model they want, and that was our design choice.

I propose closing this issue as it seems to have reached a meaningful conclusion.

Hi Jin (@jinq0123),
I share your passion for self-optimized all-in-one functions, but one thing to keep in mind is that gRPC is only a small part at times - yet still important - of the transmission of data in the microservices space.  Sometimes it just initiates the connections and then passes it to another type of protocol for reading and writing data, such as RDMA over Converged Ethernet to minimize overhead and CPU resources, while maximizing data throughput.  Then there are additional distributed data structures and algorithms one can utilize to optimize based on these latency numbers - by Jeff Dean and Peter Norvig - which I'm sure you are already aware of, and still apply today :)
 Latency Comparison Numbers
--------------------------
L1 cache reference                           0.5 ns
Branch mispredict                            5   ns
L2 cache reference                           7   ns                      14x L1 cache
Mutex lock/unlock                           25   ns
Main memory reference                      100   ns                      20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy             3,000   ns        3 us
Send 1K bytes over 1 Gbps network       10,000   ns       10 us
Read 4K randomly from SSD*             150,000   ns      150 us          ~1GB/sec SSD
Read 1 MB sequentially from memory     250,000   ns      250 us
Round trip within same datacenter      500,000   ns      500 us
Read 1 MB sequentially from SSD*     1,000,000   ns    1,000 us    1 ms  ~1GB/sec SSD, 4X memory
Disk seek                           10,000,000   ns   10,000 us   10 ms  20x datacenter roundtrip
Read 1 MB sequentially from disk    20,000,000   ns   20,000 us   20 ms  80x memory, 20X SSD
Send packet CA->Netherlands->CA    150,000,000   ns  150,000 us  150 ms

So there are many more protocols one can take advantage of, and there is a reason Google can deal with 1.3 Petabits/sec of throughput using their custom-written control stack - and if you're interested here is a link to their nice paper:
Jupiter Rising: A Decade of Clos Topologies and Centralized Control in Google’s Datacenter Network
The Google gRPC Team is doing the community a fantastic service by open-sourcing this, but basically gRPC is sometimes only the start of the data communication in the microservices space.
Hope it helps,
Paul

Necro, but I've been out for a while.
The other big reason for the 'one outstanding' rule is to allow pushback
from the network to the application. Without that, a slow consumer of
writes will cause an unlimited buffer build up somewhere in the gRPC stack,
and we have strong evidence (in the form of scars from production outages)
that this will lead to OOM vectors in real applications.
We chose one outstanding message as any larger finite value suffers from
the same bugs, only more rarely (which means they're less likely to be
caught, and more likely to bite our users in actual production scenarios).
On Mon, Aug 8, 2016 at 10:58 AM Vijay Pai<EMAIL_ADDRESS>wrote:

The justification for allowing only 1 write before a completion
notification is straightforward; async operations are intended to be
concurrent, but concurrent operations on the same side of a stream are not
allowed since each side of the stream has operations that must appear to be
in-order. (Note that I've made a corresponding edit to my previous
response) This is still concurrent with regard to the receiver side of the
stream in the sense that multiple messages can be outstanding before the
receiver operates on them, and in the sense that multiple streams (RPCs)
can go on the same channel.
That said, we always welcome API feedback. I'd be glad to hear your
detailed critique of the C++ async API as well as to understand what you
would expect in a "REAL" (sic) API. Note that the C++ async API is already
used by several projects, including TensorFlow.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/grpc/grpc/issues/7659#issuecomment-238312312, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AJpudb6or1L-qUxmwkPBtiiIa_RIYz4rks5qd2jXgaJpZM4Jeeu7
.

Zeromq has a ZMQ_HWM option.
From: http://api.zeromq.org/2-1:zmq-setsockopt

ZMQ_HWM: Set high water mark

The ZMQ_HWM option shall set the high water mark for the specified socket. The high water mark is a hard limit on the maximum number of outstanding messages ØMQ shall queue in memory for any single peer that the specified socket is communicating with.

The default ZMQ_HWM value of zero means "no limit".

That's a completely separate issue. As @nicolasnoble and I both mentioned in our responses, there may very well be more messages queued on a socket to the peer in the gRPC async API. In fact, there actually is no limit from gRPC's side, though the socket parameters of the underlying network would place a limit on it.


return 422 if party_id is not valid UUID

https://github.com/edenlabllc/ehealth.api/issues/1014

Changes Unknown when pulling 890bf2380103eea5d7b5b0167a641608cf54a6c7 on nhs_admin_portal_error#1014 into ** on master**.


Remote Artifacts

Creating this placeholder issue to keep track of the feature #419 (Remote Artifacts).

@otaviof is there anything remaining for this issue ?

Are you tracking API improvements in this one ?

@SaschaSchwarze0, @sbose78 sorry for the late reply :-) We could close this issue and open it up again later on, or even, create new issues as we need to discuss further API changes and feature enhances.

/close
Implemented in #616

I would like to add that the remote artifacts is not fully implemented yet. The spec.sources does not support git at the moment, which is one of our most popular features. We should ensure that what we wrote in EP reflects our implementation.
Having all specifications implemented, will also allow us to move out of spec.source eventually. At the moment the API can be confusing when wondering about spec.source vs spec.sources , plus the current tribe knowledge, that spec.sources is half baked.

@adambkaplan @otaviof we should re-open this one, and discuss at grooming when we think we should complete it. We should not lose track of the missing features.


Error when trying to enable ingress

This is autogenerated. Please review and update as needed.
Describe the bug
Command Name
az aks enable-addons Extension Name: aks-preview. Version: 0.4.14.
Errors:
'ingress'
Traceback (most recent call last):
python3.7/site-packages/knack/cli.py, ln 206, in invoke
    cmd_result = self.invocation.execute(args)
cli/core/commands/__init__.py, ln 603, in execute
    raise ex
cli/core/commands/__init__.py, ln 661, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
cli/core/commands/__init__.py, ln 654, in _run_job
    six.reraise(*sys.exc_info())
...
cliextensions/aks-preview/azext_aks_preview/custom.py, ln 1703, in aks_enable_addons
    workspace_resource_id=workspace_resource_id, subnet_name=subnet_name, no_wait=no_wait)
cliextensions/aks-preview/azext_aks_preview/custom.py, ln 1739, in _update_addons
    addon = ADDONS[addon_arg]
KeyError: 'ingress'

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Put any pre-requisite steps here...
az aks enable-addons --addons {} --name {} --resource-group {}

Expected Behavior
Environment Summary
Darwin-18.0.0-x86_64-i386-64bit
Python 3.7.4
Shell: bash

azure-cli 2.0.71 *

Extensions:
aks-preview 0.4.14

Additional Context

???

@tndinh200292 it looks like you're trying to register the preview extension, which is not the same as an AKS add-on.
Follow instructions here to install the CLI extension for aks-preview.
https://github.com/Azure/azure-cli-extensions/tree/master/src/aks-preview


feat(Logic/Equiv/Set): image of equiv applied to setOf

Add a lemma about the image of an equiv applied to setOf:
lemma setOf_apply_symm_eq_image_setOf {α β} (e : α ≃ β) (p : α → Prop) :
    {b | p (e.symm b)} = e '' {a | p a} := by

From AperiodicMonotilesLean.

bors merge


Scaffolding page - dead links

The bottom links on the "scaffolding" page of this repo:
https://github.com/cleidigh/ThunderStorm/blob/master/examples/scaffolds/README.md
are dead...

@cleidigh can You provide those examples again? They would be very useful, especially now, when we are hunting for every example how to write MailExtension extensions ... Thank You!

@eyalroz
@ernierasta
My apologies for these "unfinished items"  since I started this repository have gotten overwhelmed with the other areas.  I am hoping to get back to it in parallel with doing the conversion exercise.
@ernierasta - a group of extension developers is going to go through the conversion exercise once we pick a representative extension to convert.  If you would like to participate in any way including just being a "observer" that's fine. just let me know .
Christopher

@cleidigh  no need to apology, we are all doing this in our free time. Thank You for invitation, but I am not right person for this. I am big fan of TB, but not using it. In past I made very primitive plugin for TB and I will need to create one in the future, so that's why I am interested in "how-tos". My knowledge about TB extensions is basically non-existant. ;-)
And to be honest, I am little scare about turning off support for legacy plugins. While it had to be done I am afraid there is not enough examples, how-to's, tutorials for devs like me, which are not interested in becoming TB guru, but want by able quickstart quickly. If I google: "thunderbird create addon" first link:
https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension
And there is not link to actual API description, nor tutorial. They exist and I found them, but it not so easy.
I may complain in wrong place ... so sorry about it.

@ernierasta
I think you will benefit from our exercise even if you do not participate.  Part of the effort is to consolidate and improve the documentation.  Your comments above are absolutely correct in something that were trying to work on.
I am still hoping to improve this repository when I have more time.

Thanx for info, will check it out for sure!

Dead links have been removed.


Minor Typographical and Capitalization Fixes in Documentation

I found four minor issues in the documentation and wanted to bring them to your attention:
1**.Capitalization in "Clouds"**: In the following sentence, the word "Clouds" is unnecessarily capitalized. The correct version should use lowercase for "clouds" as it refers to a general term, not a proper noun or specific cloud platform like Google Cloud :

###Current sentence:
"Meshery seamlessly integrates with every CNCF project, your existing tools, multiple Clouds, and Kubernetes clusters."❌
###Suggested fix:
"Meshery seamlessly integrates with every CNCF project, your existing tools, multiple clouds, and Kubernetes clusters."✅

2.Typo in "Collaboractively": There is a typo in the word "collaboractively" which should be "collaboratively." The corrected version will improve clarity and professionalism.
 Login and manage cloud native infrastructure!"❌
###Suggested:
"There is no Step 2: Login and manage cloud-native infrastructure!"✅

I would like to submit a pull request to fix these issues in the documentation. Would you please confirm if this contribution would be welcome?
Thank you for your time, and I look forward to your feedback!
Contributor Guides and Handbook

📚 Instructions for contributing to documentation

Meshery documentation site and source

🛠 Meshery Build & Release Strategy
🎨 Wireframes and designs for Meshery UI in Figma (open invite)
🙋🏾🙋🏼 Questions: Discussion Forum and Community Slack

Thanks!
Regarding suggestions:

:x: let's leave Clouds capitalized.
✅ Yes, please fix immediately.
✅, however the suggestion needs to be "Workspaces let you..."
:x: no thanks; no hyphenation desired.

Given the urgency of 2., I'm fixing right away....


Enketo 6.2.0 changes display of multi-line text

In Enketo 6.1.0, text questions with lots of text are displayed fully:

In Enketo 6.2.0, they are not:

I believe the issue is that with the grid theme, the expanding thing in the bottom right corner doesn't work. Does that sound right, @yanokwa?
multiline-text.zip
I believe it was fixed by https://github.com/enketo/enketo-core/pull/990

In 6.1.0, when you open the page, it shows everything (probably up to a limit) by default.
I did not check if the expander works in 6.1.0. I think it did not work in 6.2.0, but I tried 6.2.0 a month ago, so my memory is not reliable.

I can reproduce the expander not working. It sounds like additionally it’s expected that opening an existing instance expands as needed.


Option A Step 9 Clarification

[Enter feedback here]
The doc directs us to select "Use any authentication protocol". In this scenario does this technically mean only "any Kerberos authentication protocol" ? Or could other protocols be leveraged here? Is there a potential security risk/concern?

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

ID: e8d4509b-ab31-a917-16a2-8ed7ce834c41
Version Independent ID: 31f21190-cd0d-f369-fc4a-48ca7ac1ccb0
Content: Configure Kerberos-based SSO from Power BI service to on-premises data sources - Power BI
Content Source: powerbi-docs/connect-data/service-gateway-sso-kerberos.md
Service: powerbi
Sub-service: powerbi-gateways
GitHub Login: @paulinbar
Microsoft Alias: painbar

HI @ms-kgorgi, can you comment on this one?

Answering the questions italics:
In this scenario does this technically mean only "any Kerberos authentication protocol" ?
Yes. Furthermore, the gateway relies on the Windows OS for Kerberos authentication so whatever Kerberos authentication protocol the Windows OS supports is what the gateway will use.
Or could other protocols be leveraged here?
No because the gateway does not support it.
Is there a potential security risk/concern?
No because the gateway only supports Kerberos SSO authentication in this scenario. Another protocol cannot be used.

Thanks @ms-kgorgi.
@acLuebke, I am going to close this issue now, and will engage with @ms-kgorgi as to whether and how to clarify the documentation. Thanks for taking the time to reach out with your question!

@acLuebke fyi I updated my previous comment with additional information.


Support blocking access to the admin routes based on IP

This adds an ADMIN_ALLOWED_IPS env var that is a comma seperated list of IP addresses or CIDRs to allow access to the admin routes. The restiction is enforced by a new RestrictAdminByIpMiddleware middleware.
This is waiting for IP addresses to restrict to. We default to allowing all IPs through, using catch-all CIDRs in the deployment.

 CYBER 6: /admin interface is restricted to DfE IP address range

Good catch. Yes.


添加wangyes图标

Please follow the readme, no index.json?

Please follow the logo design https://github.com/MixinNetwork/asset-profile#logo-design


Configurable columns length

The current column config behaviour is a bit confusing. With the config below my expectation was that it will define 4 columns prior to the 5th "Energy".
datasets: [
  {
    data: [
      { from: "Oil", to: "Energy", flow: 15 },
      { from: "Natural Gas", to: "Energy", flow: 20 },
      { from: "Coal", to: "Energy", flow: 25 },
      { from: "Electricity", to: "Energy", flow: 25 },
    ],
    column: {
      "Oil": 0,
      "Natural Gas": 1,
      "Coal": 2,
      "Electricity": 3,
    },
  },
]

After some investigation, it turns out that the count of columns is computed automatically based on the data and the actual visualization is broken.

https://codesandbox.io/s/vue-js-2-chart-js-3-sankey-diagram-forked-b5ob9i?file=/src/App.vue:710-1316

Probably same underlying issue with #81

Hi, I am running into this issue as well. Do you have an idea for a solution? Accepting pull requests for this? For me the issue is actually preventing the graph from rendering in the case that I define n columns and then the calculateMaxX function returns a value greater than n. Can provide more details if that's useful. Thanks.

Pull requests are welcome!
I don't currently have a clue about the solution. First thought would be to use the provided columns instead of automatic - but that might need some refactoring.

Thank you!
Is it time for a new release? (the last one was on Nov 22, 2022 v0.12.0)

v0.12.1 was released today


SuperPuTTY fails to launch

Following a recent series of Windows Updates in our organisation (Windows 7 64-bit) SuperPuTTY now fails to launch.  The process can be seen to briefly open in Task Manager then immediately closes.
To Reproduce
Steps to reproduce the behavior:

Launch SuperPuTTY
Configure the path to PuTTY
Close the dialog to save changes which creates the 'SuperPuTTY.settings'
Relaunch SuperPuTTY.  The application fails to launch.

Expected behavior
We'd expect to see the application launch to enable starting multiple PuTTY sessions.
Screenshots
N/A as no error, nothing written to event logs and application fails to launch
Desktop (please complete the following information):

OS: Win7 64-bit SP1

Feels like is the same as issue #782

I have same issue. It was working fine then suddenly stopped. If I remove the SuperPutty.Settings file, the setting dialog is replayed, but the app isn't launched.
The logfile in %TEMP% shows this strange error
SuperPuTTY.20200324_112728.log
I have tried a clean install/remove all the old files and I still get the same issue.
Initially I thought it was related to multi display setup, but cannot fathom why it suddenly stopped working even after disconnecting all the displays and cleaning up and reinstalling.
PuTTY itself works fine.

Hi @PaulDubar ,
Have you found a resolution? I might be facing the same issue here.

Try different versions of Putty. That is usually resolve a bunch of problems.


fix CVE-2021-3975

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[x] The toolchain has been rebuilt successfully (or no changes were made to it)
[x] The toolchain/worker package manifests are up-to-date
[x] Any updated packages successfully build (or no packages were changed)
[x] Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
[x] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[x] All package sources are available
[x] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/tools/cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[x] LICENSE-MAP files are up-to-date (./SPECS/LICENSES-AND-NOTICES/data/licenses.json, ./SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md, ./SPECS/LICENSES-AND-NOTICES/LICENSE-EXCEPTIONS.PHOTON)
[x] All source files have up-to-date hashes in the *.signatures.json files
[x] sudo make go-tidy-all and sudo make go-test-coverage pass
[x] Documentation has been updated to match any changes to the build system
[x] Ready to merge

Summary

fix CVE-2021-3975
Change Log

Add patch CVE-2021-3975.patch to libvirt - Protect qemuMonitorUnregister with proper lock

Does this affect the toolchain?

NO
Associated issues

Links to CVEs

https://nvd.nist.gov/vuln/detail/CVE-2021-3975

Test Methodology

local build

Buddy Builds
AMD64 - https://dev.azure.com/mariner-org/mariner/_build/results?buildId=247056&view=results
ARM64 - https://dev.azure.com/mariner-org/mariner/_build/results?buildId=247057&view=results


suport to godot 4.x and gdscript 2.0

the code of gdscript are not compatible with gdscript 2.0. Lots of changes in syntax and more. Since godot 4.x is still alpha, i suppose need to new branch to support the changes in alpha version.

The Dialogic 2.0 work is intended to work with Godot 4.0, so that branch should handle it. You can take a peak at that progress here: https://github.com/coppolaemilio/dialogic/branches

What @zaknafean said!
I'll close this one as it is not an issue per se, but as soon as Godot 4 beta is out we will start working on it :)

thx, and sorry

No worries! Thanks for creating the issue, don't feel discouraged to create other issues whenever you need to 👍🏻

As an additional note, Godot 4 is stills in alpha, Wich means that a lot of core things there can be broken or dropped without advice, discarding a lot of work that can be made to be compatible with that version.
Support for Godot 4 is planned, for beta version (to avoid losing time in the integration) as already mentioned


eni: Fix unexpected IP release when agent restarts

When cilium agent in eni mode restarts, ciliumnode custom resource
is cleared and refilled by several updates. Specifically,
Status.IPAM.Used map which holds all used IPs is first updated
to an empty map before endpoints finish restoration.
This becomes critical if --aws-release-excess-ips is enabled
since cilium operator treats empty IPAM.Used map as no address used
hence releases addresses arbitraryly, causing restored endpoints
disconnected.
This patch fixes this by combining per endpoint update requests
into one update request after all endpoint restoration finishes so
that Status.IPAM.Used keeps the desired state during agent restart.
Signed-off-by: Jaff Cheng<EMAIL_ADDRESS>

This change is

wip, please don't review

@tgraf @aanm please take a look

@tgraf @aanm please take a look

test-me-please

@tgraf Many thanks to your detailed comments! I have refactored the code according to your feedback, please take a look.

@tgraf comment addressed, please take another look

test-me-please

test-me-please

Last ginkgo tests failed, please help retrigger the tests

test-me-please

test-me-please

K8s 1.18 vm provisioning fail: https://jenkins.cilium.io/job/Cilium-PR-Ginkgo-Tests-Validated/18154/

test-me-please


Full Phoenix Example / Quick Guide required

For people completely new to Phoenix, RethinkDB and Elixir, I think a very small and simple example/guide showing us all the steps from installing to querying in our project, but with all small details like where to put the connection (which module/function/file). The database is created directly using the RethinkDB interface or the Phoenix/rethinkdb adapter? How to create a table and validate that it exists, how to insert/update/delete through queries.
Also, you should add the hex package to the README when it comes to installing rethinkdb-elixir in mix.exs.
At this point I serve RethinkDB from a Linux Ubuntu VM, and I have a Phoenix Project in Windows which is the host to the Virtual Box VM. I can connect to the RethinkDB web GUI on Windows through the 8080 port in my browser (<IP_ADDRESS>:8080).
Shouldn't I put the name of my database to connect to somewhere?

lots of issues listed here, I'll address them one by one:

Example for Phoenix, RethinkDB, Elixir. This is a bit beyond the scope of the work I'm doing. As I discussed with @linicks in https://github.com/hamiltop/rethinkdb-elixir/issues/31 I'm happy to help anyone who wishes to provide better documentation. My priority, however, is getting the library to a code complete stage (there are still a number of parts of the query language missing, as well as a lot of work that needs to be done around connections).
Creating tables: The query language supports creating tables. Best practice has yet to be determined. We don't have any sort of migration framework at the moment. I would suggest researching how it is done in other languages (ruby seems to be a good reference) and reporting back here.
Hex package: I'm planning to release a new hex package (0.1.0) once the full query language is implemented. Until then, using a git checkout of master is the best bet.
Name of the database: https://github.com/hamiltop/rethinkdb-elixir/issues/46 was filed a while ago. Until that is addressed, db("db_name") |> table("table_name") will do the trick.

I finally managed to do it.

Create a new phoenix project without ecto:
mix phoenix.new rethinkTest --no-ecto
Add the package to mix.exs:

defp deps do
  [{:phoenix, "~> 0.13.1"},
   {:phoenix_html, "~> 1.0"},
   {:phoenix_live_reload, "~> 0.4", only: :dev},
   {:rethinkdb, "~> 0.0.5"},
   {:cowboy, "~> 1.0"}]
end

Run mix deps.get to install the package in the project.
Create a file in /web (e.g. database.ex) and place the following code in it:

  use RethinkDB.Connection
end```
5) Add the following worker to your children array in ```/lib/rethinkTest.ex``` file:
```worker(RethinkDB.Connection, [[name: RethinkTest.Database, host: '<IP_ADDRESS>', port: 28015]])```
6) To execute queries you can either:
6.1) Add them to a controller module
6.2) Add them to /priv/migrations/your_database_operation_name.exs and run the file with ```mix run priv/migrations/your_database_operation_name.exs```
7) Example in the page_controller.ex module, inside the index function
```table_create("people")
    |> RethinkTest.Database.run
    |> IO.inspect

    table("people")
    |> insert(%{first_name: "John", last_name: "Smith"})
    |> RethinkTest.Database.run
    |> IO.inspect

    table("people")
    |> RethinkTest.Database.run
    |> IO.inspect
    render conn, "index.html"


fix appointment bugs

This PR contains fixes for 7 main things
A:
Appointment message for add, delete, edit Appointments now shows the appropriate message upon success
B:
edit_appointment command now fixed to check for appropriate cases of:

if only description changed, do not check if doctor & patient has same appointment
if time of appointment changed, check if doctor & patient has appointments on those times
if both changed, check if this Appointment already exists

C:
updated doctor's appointment list to contain edited appointment after calling edit_appt command. used to cause major bug that breaks application when the following commands are done in sequence

edit appointment details
attempt to delete appointment. break caused, as doctor's appointment list did not contain the updated appointment

D:
fixed issue when editing a person's name does not change the appointments name
E:
fixed issue where after editing a person, his appointment details are lost in db.
F:
updated add appointment command to only accept timings between 9am to 5pm.
G:
changed appointments such that each timeslot can only have 1 appointment. i.e. 2 different doctors cannot have appointments on the same timeslot
Issues fixed and closed:
#125 #126 #128 #131 #133 #136 #139 #147 #149 #151 #153 #154 #156 #159 #163 #164

LGTM previous issues were fixed


.md compliant

Little modifications to do readme markdown compliant. I really like this library, congrats. Seems to be broken the link to tuomas nylund, i found his GitHub, interesting images to explain the library here.
Its my very first contribution in github, so probably i do something wrong. Regards!

thanks, much appreciated! glad you like it.
Martin


Updated authors file

I made the authors file into a markdown document and listed out all of the contributors (that I could find).

I would be inclined to maybe just remove this file. Github's contributor view makes this sort of obsolete.
If we are going to keep the file updated, though, it should just be a list of names. Keeping track of what people contributed could easily get out of hand.

I actually don't think it getting out of hand is too much of an issue. I think an authors file is pretty nice. It's like the credits on a movie. For reference, this is Django's. https://github.com/django/django/blob/master/AUTHORS

@harrislapiroff right, and they only list the names, which I think is fine. It's listing what exactly each person contributed that I really have a problem with.

Ohhhhhhhhh. Yeah, that might be tricky to maintain in the future.

I'm fine with removing that.

@harrislapiroff @melinath this more what you had in mind?

@chigby yep, looks good. (Someday we might want to move the note about issuing a PR with your name up to the top, but I think it's okay for now because the list is so short.)


Input.mouseEnabled / touchEnabled / keyboardEnabled ignored

playn.core.Input has a set of boolean flags (mouseEnabled, touchEnabled, keyboardEnabled) which are supposed to enable or disable dispatching of the corresponding types of events. tripleplay.game.ScreenStack actually uses this to disable dispatching of input events during transitions.
However this does not seem to work; nobody seems to be checking the state of these variables before dispatching events.
Indeed, while testing on the Java and Android backends, I see that events are dispatched during screen transitions, even though they should not be.

Well that's a grievous oversight! I will fix.
I guess I have almost always used the Pointer code to test things, and Pointer does honor that flag.

This should fix it indeed, however instead of having a lot of scattered checks all around the place, wouldn't it be better to have this managed by the Input class itself ? e.g.:
    Signal<Mouse.Event> mouseEvents = new Signal<Mouse.Event>() {
    	@Override public void emit(Mouse.Event event) { if (mouseEnabled) notifyEmit(event); }
    };
    Signal<Touch.Event[]> touchEvents = new Signal<Touch.Event[]>() {
    	@Override public void emit(Touch.Event[] events) { if (touchEnabled) notifyEmit(events); }
    };
    Signal<Keyboard.Event> keyboardEvents = new Signal<Keyboard.Event>() {
    	@Override public void emit(Keyboard.Event event) { if (keyboardEnabled) notifyEmit(event); }
    };

Yeah, I considered that approach as well. I was keen to take advantage of the ability to avoid creating an event object at all in cases where the relevant input source was disabled, but that was probably premature/unnecessary optimization. I'll go back and change it to use a single check when I get a chance.


Implement cache adapters

Add Redis/memcached adapters to speed up retrieving image files after they've been processed once.

Closing as not needed. HTTP caching proxies can do a better job at this.


Remove version: Microsoft.Sysinternals.ProcessExplorer version 17.05

Package relies on a vanity URL, new version PR available @ #155560

Resolves #155525

Microsoft Reviewers: Open in CodeFlow

URL: https://live.sysinternals.com/procexp.exe
Response Error: The remote server returned an error: (406) Not Acceptable.
(Automated message - build 898)

Hi @BiosPlus,
This manifest has the highest version number for this package. Is it available from another location? (This might be in error if the version is switching from semantic to string, or string to semantic.)
(Automated response - build 881.)


Clarify cooldownPeriod for Deployments.

I was a little confused by the fact that KEDA will scale your Deployment to minReplicatCount immediately after it's created.  I thought that it would wait for the cooldownPeriod to elapse before doing this.  I realize the docs specify that cooldownPeriod is the period to wait after the last trigger and that when you first create a Deployment, nothing has triggered, but I think it would be helpful to tell say that explicitly.

I messed up the DCO stuff and made a new PR https://github.com/kedacore/keda-docs/pull/157


Support for server reconnection during a game

Support for FAForever/server#237

While the code is in place, it hasn't been tested with the latest Server/ICE version

Did you not test ?

Yes, we did a week ago. This was reopened 8 months ago ;)


dependency spisemisu/elm-utf8 is no longer available

Hi,
It seems like @spisemisu deleted all their repositories, including spisemisu/elm-utf8.
I'm using your library in https://github.com/Zinggi/NoKey, and since this dependency vanished, I'm no longer able to resolve all dependencies.
To resolve it for me (temporary), I created a fork with this dependency inlined.

I made a pull request out of your change, and accepted it. "spisemisu/elm-utf8" also needed to be removed from tests/elm-package.json and example/elm-package.json. I published the result as version 2.1.1 of billstclair/elm-crypto-string.
I hope this doesn't become a common occurrence, but we may lose more good Elm hackers to Microsoft's acquisition of GitHub. Will talk about it on the Elm Slack channel.

Wow, that was super fast, thanks a lot!
I will switch back to your repo.

I hope this doesn't become a common occurrence, but we may lose more good Elm hackers to Microsoft's acquisition of GitHub

I hope so too, I don't want a "left-pad" fiasco for elm..

I'm likely to change it once more, after publishing billstclair/elm-recovered-utf8, as the Recovered.UTF8 module, but I'm waiting for feedback on Slack before going that route. It's the best way I've thought of to repost lost code in a way that is unlikely to collide with your simple solution done by somebody else in another library.

Why not just billstclair/elm-utf8 under the UTF8 module? This should also not interfere with any other module, and people that were relying on spisemisu/.. can simply switch to your fork without changing any code.
I don't see the benefit of the "recovered" part.
Anyway, I don't really have a strong opinion here, so go with whatever you think will work best.

It won’t interfere with any other PACKAGE, but if somebody else posts
joerandom/elm-utf8, and you happen to use one package that uses
billstclair/elm-utf8 and another that uses joerandom/elm-utf8, you’ll have
a case that the Elm package manager can’t resolve. That’s why every package
needs to have unique module names. I’m propsing prepending “Recovered.” to
the existing package names in recovered packages. The using packages have
to change “elm-package.json” in either case, but this shouldn’t be a huge
problems in changing the using code, especially with the Elm compiler to
find all the places you need to change.
I would also make a billstclair/elm-recovered package, which would have a
single module Recovered, and a README containing links to all recovered
modules. Then there would be one place to check to see if somebody has
already recovered a module.
It’s possible that the Elm maintaininers will change Elm to allow using
GitLab or other sites for Elm community repositories. Then
spisemisu/elm-utf8 can just be updated to point to
https://gitlab.com/spisemisu/elm-utf8, where he has apparently moved all
his former GitHub repositories.
On Tue, Jun 26, 2018 at 11:23 AM Florian Zinggeler<EMAIL_ADDRESS>wrote:

Why not just billstclair/elm-utf8 under the UTF8 module? This should also
not interfere with any other module, and people that were relying on
spisemisu/.. can simply switch to your fork without changing any code.
I don't see the benefit of the "recovered" part.
Anyway, I don't really have a strong opinion here, so go with whatever you
think will work best.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/billstclair/elm-crypto-string/issues/4#issuecomment-400350319,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AACfqYxqUHNWlK3gf49LgsLgU5pJS5zmks5uAlICgaJpZM4U3qKS
.

if somebody else posts joerandom/elm-utf8, and you happen to use one package that uses billstclair/elm-utf8 and another that uses joerandom/elm-utf8, you’ll have a case that the Elm package manager can’t resolve

Oh, I didn't think about that, interesting.

It’s possible that the Elm maintaininers will change Elm to allow using GitLab or other sites for Elm community repositories

Yeah, that would be ideal. It would make the package system more stable by making it more decentralized.

Version 2.1.3 of billstclair/elm-crypto-string now uses billstclair/elm-recovered-utf8, instead of including a copy of UTF8.elm.


CFFL

CFFL

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_eaewofwg6a/clone/recipe/meta.yaml:15: pip_install_args: pip install should be run with --no-deps.
ERROR: /tmp/abs_eaewofwg6a/clone/recipe/meta.yaml:20: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_eaewofwg6a/clone/recipe/meta.yaml:26: missing_pip_check: For pypi packages, pip check should be present in the test commands
WARNING: /tmp/abs_eaewofwg6a/clone/recipe/meta.yaml:35: missing_description: The recipe is missing a description
Errors were found


Player doesn't continue playing after scrubbing to a moment.

After moving the scrubbing bar (time bar?) in a movie, the player seems to hang. After reloading the movie started playing as expected.

Oh, that is new ... Do you see any JS errors or Server errors?

Unforunately not

Ok, What browser are you using? What codec does the file have? Is it just one file or all files? If it does not affect all files, can you detect anything that the failing ones have in common? If you open the Dev Console and look at the network, what are the request-headers in the request right after you've used the srubber?  If all of these questions are a bit hard for you to answer (if you're not a frontend dev), are you willing to transfer one of the files to me that are giving you trouble?

I've only been uploading mp4 files, but it happens on all of them. The website just calls save.json with these headers:
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:grails_remember_me=c2VydWJpbkBzZXJ1YmluLm5ldDoxNDM5NzAxNzk3NjIxOjdiMDllY2FlZjQxMzMwNWM3ZTA2ZTBiMjZkZGM0N2Y3; JSESSIONID=7130D48789E65956DFB391F11CDA1C78
Host:titan.serubin.net:8080
Referer:http://titan.serubin.net:8080/
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36
X-Requested-With:XMLHttpRequest

No errors that I see in the console. I can send you a file if needed.

I don't mean the save action, I mean playback. When scrubbing in the video, it should do several requests to the mp4 file, always with a Range header with an offset.

Hmm, It seems to be working now... If it comes up again I'll re-open this.

Ok


Tab becomes unresponsive when Codext is enabled

I tried to sign in to OneDrive on Firefox while Codext is enabled. When prompted for my password after putting my email address at https://onedrive.live.com/about/en-gb/signin/, Codext appears to be activated (its icon appears in the address bar), then it gradually maxes out my CPU and RAM. The tab becomes unresponsive and I'm unable to enter my password.
It's difficult to work out what's happening, but if I disable Codext this doesn't happen.
I can't reproduce the issue on Chrome.

Hello @danielthepope,
I just tried this in Firefox 68.0.1 on macOS Mojave and I cannot reproduce the described issue, I managed to log into OneDrive happily. Could you try debugging the extension and tell us more about which bit of code is making the tab unresponsive?
Cheers,
Pyves

I added some logging for each time the extension was invoked and for each time Codext loads the editor.
In Firefox 68.0.1 (on Windows at least), the extension is invoked 99 times in the first few seconds, and the editor is loaded 96 times, all of which for other origins e.g. https://spoprod-a.akamaihd.net/files/odsp-next-prod_2019-07-12_20190718.003/aria-bfcb437b.js, which would explain why my laptop goes into a mini-meltdown.
Chrome only seems to invoke the extension 3 times for the same page, and none of them actually load the editor.
I was able to "fix" the issue by setting "all_frames": false in the manifest.json, but I imagine it was set to true for a good reason...

I was able to "fix" the issue by setting "all_frames": false in the manifest.json, but I imagine it was set to true for a good reason...

To be honest, I don't believe there is a good reason.
To get us going quickly given the limited time of the hack day, we used one of my personal browser extensions, night-video-tuner, as a starting point. That one does it for a good reason, the video is not always in the top frame so you need to inject scripts everywhere for it to work properly; this is the case for BBC iPlayer for instance.
We left the option in Codext as we thought it wouldn't do any harm and could cover potential edge cases where the "unique  tag" was not in the top frame. However, I don't know of any, and I suggest we remove the "all_frames": true override in manifest.json. What do you think? Would you like to submit a pull request?


How to get started in hackathons

I'd  like to know more about how to get started in hackathons, how to find a team, etc. I've never been to a hackathon. what are beginners projects i should try

how to get started in hackathons
how to find a team
project ideas

how to get started in a hackathon
Hackathons seem scary, but they are not. Most hackathons are inclusive and want people from different backgrounds, experience, the more mix the better. The hackathons I have won are where we have had a mix of skills in the team, this allows for much better ideas. My biggest recommendation is to get involved and get started. I always learn so much at hackathons from the other attendees and mentors.
how to find a team
Teams can be created before the event, but this usually means you are working with people you already know. One of the best things about hackathons is working with new and different people, this increases the learning. At hackathons they usually have time for people to make teams around similar ideas and challenges.
project ideas
Usually once focused a similar challenge, people share project ideas, then when people start to gravitate to an idea, they break off into teams

This weekend is the Auth0 hackathon, apply and have fun https://auth0.devpost.com

I didn't make any application yet, but I want to try in it so what skills should I be more focused on ? So I'll be ready for a basic project for hackathons

It is not possible to predict what skills are needed, that is part of the fun. You can use skills you already have and also learn and use new skills.
When you join a team, usually people say what their skills are and what they want to learn. Doesn't matter what skills you have, its about adding value to the team and project, everyone can help push the project forward

Ok I'll start working on finding team now then, let's see how it goes for first time

I would not worry about trying to find a team before hand, in the agenda usually they allow for team building at the hackathon

Oh so I should focus on project ideas first?

Yes come up with some viable ideas, but don't get too attached to them, as they will probably change after you discuss with other attendees

yeah, i understand

I have written an article on hackathon to-dos for folks who are beginning to (or have some experience) participating in hackathons as well :D
Do check it out here: Hackathon To-Dos 101 :)

Please invite me to the GitHub Community Organization

@pranita28Dane create an issue here and the bot will send you an invite https://github.com/EddieHubCommunity/support/issues/new?assignees=&labels=invite+me+to+the+organisation&projects=&template=invitation.yml&title=Please+invite+me+to+the+GitHub+Community+Organization
You can read more about making the most out of the community and getting started with open source in our step by step guide https://github.com/EddieHubCommunity?view_as=public


Fix missing worker_id from interceptor

This PR closes #33450, forwarding the worker_id to the interceptor where it was previously missing.
Failing check Build python cp312- wheels on aarch64 for ubuntu-20.04 already has a history of failures and nothing to do with this PR. See https://github.com/apache/beam/actions/workflows/build_wheels.yml
See internal chat about tests of this PR on Dataflow.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

assign set of reviewers


For reference only:  Punt automatic rewrite

@scytacki -- We talked about punting automatic models-resources URL rewrite. This does that.
I haven't tested it extensively.
We would merge this temporarily only if we wanted to manually rewrite URLs in the offline-activity definitions.

Thank you submitting this.
I looked through the actual PC content and there are no images inside of interactives that come from https://models-resources.concord.org, so the issue we ran into isn't a problem in the PC content.
So I think we can just leave this PR open for now.

I'm going to close this. We now only re-write the top level interactive urls in the activity content.


Login/logout functionality via Django

Login and especially logout now is split between front- and back-end. Make sure logging in works via Django completely.

While we're at it, remove all references to glob_userid, glob_username and glob_password.


ncc 0.21.1 HTML template ‘ejs’ is not supported

I am compiling nestjs project with NCC，After compiling, I found that it couldn't run.
When you visit http://localhost:3000 you'll see the following error
Error: Cannot find module 'ejs'
Require stack:
- D:\github\LBF_Earth_SourceCodeServer_ncc_dist\index.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:981:15)
    at Function.Module._load (internal/modules/cjs/loader.js:863:27)
    at Module.require (internal/modules/cjs/loader.js:1043:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at new View (D:\github\LBF_Earth_SourceCodeServer_ncc_dist\index.js:7:5400069)
    at Function.render (D:\github\LBF_Earth_SourceCodeServer_ncc_dist\index.js:9:20917)
    at ServerResponse.render (D:\github\LBF_Earth_SourceCodeServer_ncc_dist\index.js:7:322305)
    at ExpressAdapter.render (D:\github\LBF_Earth_SourceCodeServer_ncc_dist\index.js:1:241285)
    at RouterResponseController.render (D:\github\LBF_Earth_SourceCodeServer_ncc_dist\index.js:7:6476472)
    at async D:\github\LBF_Earth_SourceCodeServer_ncc_dist\index.js:1:2846438

my main.js
  app.setViewEngine('ejs');
  app.setBaseViewsDir(join(__dirname, '..', `'views'));`

I saw the issues

https://github.com/zeit/ncc/issues/323

I tried to modify main.js, which works, but it may not be a good solution
  app.engine('ejs', require('ejs').__express);
  app.setBaseViewsDir(join(__dirname, '..', 'views'));

Nestjs uses express as the HTTP framework

ejs  Version 3.0.1 solves this problem...
"ejs": "^3.0.1",


[FLINK-16102][docs-zh] Translate docs/dev/table/hive/scala_shell_hive.zh.md into Chinese

What is the purpose of the change
This pull request translates the scala_shell_hive.zh.md document into Chinese.
Brief change log

Translate docs/dev/table/hive/scala_shell_hive.zh.md into Chinese

Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency):  no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive):  no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn/Mesos, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? not applicable

@zhule0601 thanks for addressing my comments, LGTM now.
ping @wuchong

@wuchong Hi, can you help deal with this PR? It has been taking quite a long time.  Orz


Include Confirm sigs of Inputs in transaction

To solve the issue brought up here: https://ethresear.ch/t/plasma-vulnerabiltity-sybil-txs-drained-contract/1654
Confirm sigs of the inputs must be included in transaction. Transaction structure must now be modified
[Blknum1, TxIndex1, Oindex1, [ConfirmSig1-1, ConfirmSig1-2], Blknum2, TxIndex2, Oindex2, [ConfirmSig2-1, ConfirmSig2-2], NewOwner, Denom1, NewOwner, Denom2]
Here ConfirmSig1-1 is the first confirm sig from the first input, confirm sig is the second confirm sig from the first input, etc.
If there is no confirm sig for the given position, replace with a zero-bytes.
Changes to be made:
Deposit, StartExit and ChallengeExit must be changed to handle new transaction structure
Note Possible Confusion: We are not including confirm sig for transaction itself, we are including confirm sigs of the INPUTS
Consider Transactions A -> B -> C:
Only one input and output for each transaction for simplicity sake.
The Transaction B->C will include the confirm sig A sent to B for the transaction A->B.

I dont think we should change the transaction structure. The leaf can just be keccak(txBytes, sigs, confirmsigs)

@colin-axner You are right. Will change
@hamdiallam I think we need to change it because the confirm sigs are part of the message. In fact, because the entire transaction is included in the merkle tree, we actually will probably have to modify this further by including the signatures in the transaction structure as well.

@AdityaSripal  the txBytes is not included in the merkle tree. It is the hash of the bytes that is the leaf in the merkel tree

Yeah but the txBytes will include sigs and confirmsig in the message of the transaction on the child chain.

Exactly, I think we should always make the txByes as simple as we can on the rootchain. Playing around with the way the hash is generated is better than including those inputs in the txBytes. They can be included the child chain though

@hamdiallam I'm pretty sure we would need to fork tendermint and manually keep our forked version up to date (this may need to be done anyways to update the hash function). Also adjusting tendermint to exclude hashing some parts of the transaction could lead to further issues.
We can try changing the implementation in tendermint and adjust the decoding on the root contract as a backup option
@AdityaSripal thoughts?

Ah, i see the issue. currently, the leaves of the merkle tree are 32byte hashes. We could change this though if tendermint have the merkle tree leaves be hashes

@hamdiallam Doesn't seem like the sdk gives us that much flexibility. If we wanted to do that we would have to make major changes to the sdk. I would resist doing that. I think it's easier to add 4 extra fields to the txBytes.

We need to rlp encode the message and then attach the sigs at the end to make it easier to validate on the rootchain.

Also, we need to include the original denominations of the inputs. This is because we want to recover the original transaction bytes that created a deposit hash. This is only possible if we include the input denomination as part of the transaction.

@AdityaSripal I think you were originally correct about using confirmSig1-1, confirmSig1-2. While each output has separate confirmSigs, having two confirmSigs for one output is necessary when both inputs came from different addresses.

Yeah, this can all be one sigs bytes variable that gets split up on the rootchain contract


ECONNREFUSED in refresh and deploy commands

Today I started experiencing this funny issue.
Deployment has been fine so far for a long time. In my sst.config.ts my app was configured with removal: 'remove'.
I switched to removal: 'retain' and then I started seeing the issue below:
|  Refreshing  MyProject sst:aws:Nextjs → MyProjectCdnDistribution aws:cloudfront:Distribution
|  Refreshing  MyProject sst:aws:Nextjs → MyProjectAssetFiles sst:aws:BucketFiles
|  Refreshed   MyProject sst:aws:Nextjs → MyProjectRevalidationEventsSubscriberZsozmoFunctionCodeUpdater sst:aws:FunctionCodeUpdater
Error: connect ECONNREFUSED <IP_ADDRESS>:13557: Error: connect ECONNREFUSED <IP_ADDRESS>:13557
    at __node_internal_captureLargerStackTrace (node:internal/errors:496:5)
    at __node_internal_exceptionWithHostPort (node:internal/errors:671:12)
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)
|  Error       MyProject sst:aws:Nextjs → MyProjectS3AccessControl sst:aws:OriginAccessControl connect ECONNREFUSED <IP_ADDRESS>:13557
|  Refreshed   MyProject sst:aws:Nextjs → MyProjectOpenNextOutput sst:aws:Cache
|  Refreshed   MyProject sst:aws:Nextjs → MyProjectCdnAAAAZoneLookupLpmyprojectcom sst:aws:HostedZoneLookup
Error: connect ECONNREFUSED <IP_ADDRESS>:13557: Error: connect ECONNREFUSED <IP_ADDRESS>:13557
    at __node_internal_captureLargerStackTrace (node:internal/errors:496:5)
    at __node_internal_exceptionWithHostPort (node:internal/errors:671:12)
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)
|  Error       MyProject sst:aws:Nextjs → MyProjectCdnInvalidation sst:aws:DistributionInvalidation connect ECONNREFUSED <IP_ADDRESS>:13557

I tried to run sst refresh, no luck. Then I deleted the local .sst folder and ran refresh again (thus installing providers from scratch), and same error.
Also tried to see if port 13557 was being used by some other process, but not really.
I didn't change anything in my VSCode, though I'm not sure if this is related to VSCode or not. I'm on Ubuntu 22.04, on VS Code I use a regular bash terminal.

After I ran sst upgrade the issue was fixed, I was in a relatively old version ✓  Upgraded 0.0.416 ➜ 0.1.90.


Let user define pipeline provenance definition

Let user define pipeline provenance definition
By default on a Push or a Pull Request, Pipelines as Code will fetch the
PipelineRun definition from the branch of where the event has been triggered.
This behavior can be changed by setting the setting pipelinerun_provenance.
The setting currently accept two values:

source: The default behavior, the PipelineRun definition will be fetched
from the branch of where the event has been triggered.
default_branch: The PipelineRun definition will be fetched from the default
branch of the repository as configured on the git platform. For example
main, master, or trunk.

Example:
This configuration specifies a repository named my-repo with a URL of
https://github.com/my-org/my-repo. It also sets the pipelinerun_provenance
setting to default_branch, which means that the PipelineRun definition will be
fetched from the default branch of the repository.
apiVersion: "pipelinesascode.tekton.dev/v1alpha1"
kind: Repository
metadata:
  name: my-repo
spec:
  url: "https://github.com/owner/repo"
  settings:
    pipelinerun_provenance: "default_branch"

SRVKP: https://issues.redhat.com/browse/SRVKP-2896
Letting the user specify the provenance of the PipelineRun definition to default
branch is another layer of security. It ensures that only the one who has the
right to merge commit to the default branch can change the PipelineRun and have
access to the infrastrucutre.
Signed-off-by: Chmouel Boudjnah<EMAIL_ADDRESS>
Changes

Submitter Checklist

[ ] ♽  Run make test lint before submitting a PR (ie: with pre-commit, no need to waste CPU cycle on CI
[ ] 📖 If you are adding a user facing feature or make a change of the behavior, please verify that you have documented it
[ ] 🧪 100% coverage is not a target but most of the time we would rather have a unit test if you make a code change.
[ ] 🎁 If that's something that is possible to do please ensure to check if we can add a e2e test.
[ ] 🔎 If there is a flakiness in the CI tests then don't necessary ignore it, better get the flakyness fixed before merging or if that's not possible there is a good reason to bypass it. (token rate limitation may be a good reason to skip).

/retest

PR looks good to me :+1:
Verified by applying PR changes on Openshift cluster
We can merge once CI is green

:tada: :tada:


Additional default classes for form tag

I suggest to keep 'simple_form' class to show, that form is generated with simple form, not a default builder (sometimes it is convenient to use default one) and add 'segment' class, because by default forms look prettier with it.

@romanenko can you do a pull request to my version. This was in Oct 23, 2013 and he didn't merge yet. I am currently working with semantic ui and rails so I will be updating the file.

@yordis Sure! :smile:

@yordis Does your fork of this still exist? I had a look, but was unable to find it.

@LimeBlast Sorry man. I removed my version so at least I don't have any version. There is more than just this file for make it works with simple_form so this project is more than this.

No worries, thanks anyway.
I've found, and am using, https://github.com/vforge/simple_form_semantic-ui - which seems to work fine for me.


Browser support for Safari?

What browsers does this module support?
In safari 10.0 Object.values() and Object.entries() are not available ( as added by #450 in v11 ). So the component is erroring out.
We could polyfill or version down, but also listing the browser requirements would be nice.
Thank you!

I was trying to find what the overall browser support is?
Sorry if it's documented somewhere but I couldn't find it.

@dancingshell we assume that you're using https://npmjs.com/airbnb-js-shims or the equivalent; but we can still fix this if I can locate something like https://www.npmjs.com/package/babel-plugin-transform-object-assign for Object.values and Object.entries.

In the meantime, I've added 768578ec06480c7b07003bae59aada661223ae56 which handles Object.values (Object.entries seems to have been removed as of v11.0.1)

@ljharb were you going to patch bump and release this to NPM? or just wait for it to go out in your next planned release?

I'll give it a day or two before bumping a release; despite the fact that we've not properly documented the dependency, this is nowhere near the first version of react-dates that required a full ES shim to work.
In the meantime, anyone affected can (and should already be) shimming with https://npmjs.com/airbnb-js-shims or the equivalent.

where should the import 'airbnb-js-shims' be?

As the first line in the first entry point to every page.

Should we add this implicit dependency to the README?

Yes, probably.


Add a color variant : Mastodon’s purple

Create a new color variant that uses Mastodon’s purple hue as the accent color, for people who want Tangerine’s UI without the orange palette.

Done https://github.com/nileane/TangerineUI-for-Mastodon/commit/de83b834cb09e7897155da55174542ad3ed40e7e


Denizen Integration

What is your Quests version / build number (do not say "latest")?
3.9.4
Describe the problem and how to replicate it. Any console errors to post using Pastebin.com?
I get this error thrown whenever I try and activate a denizen script through an action:
https://pastebin.com/nbbWfM7g
I'm running Denizen build 1708
I'm not sure if this is related or not, but the option to activate a Denizen script doesn't show in the stage editor, but does show in the actions editor.

I'll look into the issue. However, the Denizen script selection was intentionally moved in a previous update. It is now only available as an Action through the /actions editor.

@Curtis73 Even after updating to Denizen build 1708, I've been unable to replicate this error on my test server. Could you provide one of the scripts that causes this error?

I've just attempted to reproduce the issue myself and it all appears to work fine, so whatever the issue was it's sorted itself.
Thanks for your help!


Adhering to changes in v3.1.5

Fixes #2
While getting constraint jacobian
mjData.efc_J :

if expresssed in dense format it is simply the flattened 2D matrix,
if in sparsed format then it will will be stored in CSR sparse format

In deprecated versions of API, if the format was dense, mjData.efc_J simply gave the 2D matrix.

Just to confirm, did you run the code and test whether everything works?

Thanks for the PR! Just to confirm, did you run the code and test whether everything works? If you have, I'll merge it.

Yes I did verify. Code runs as it should (similar to if run with a deprecated version of mujoco). However, if you'd like I would appreciate you confirming the same as well.
Thanks


Change priority of attachments

Use image as highest prio, followed by audio and video.
This should also improve the enclosure handling.

Fixes #790 and https://wordpress.org/support/topic/incorrect-image-attached-to-post/

Should video be favored over audio?
Does placement in the content play a role? If a video gets placed at the top of a post, and an image at the bottom of it, would it still favor the image?


[API] return head branch sha, even if deleted

close #12675

in short it work as the workaround but within gitea itself, I didn't found a better solution as DB dont store this value ...


Update patch release instructions

When releasing 0.68.1, we have noticed some small inconsistencies in the guide.

Thanks for fixing this 👍


Device encoder crashes [OMX.Intel.hw_ve.h264] ERROR(0x80001001)

Environment

OS: Windows
scrcpy version: 1.16
installation method: Windows release
device model: PANASONIC FZ-A2A (Tablet)
Android version: Android 6.0.1

Describe the bug
Scrcpy starts and crashes after a few seconds.
adb shell screenrecord is working fine.
Tried using a smaller resolution with scrcpy -m600 or -m800, same issue.
Tried using a low bitrate of 2000000.
Attaching the logcat and media_codecs.xml that i pulled from the device.
logcat.log
media_codecs.xml -
<?xml version="1.0" encoding="utf-8" ?>
<!-- ############# BEGIN MIX-IN DEFINITIONS ############## -->
<!-- Mix-In definitions are auto-generated by mixin-update -->
<!-- ##################################################### -->
<!-- Source: device/intel/mixins/groups/codecs/configurable/media_codecs.xml -->
<!-- ##################################################### -->
<!-- Copyright (C) 2012 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<!--
<!DOCTYPE MediaCodecs [
<!ELEMENT MediaCodecs (Decoders,Encoders)>
<!ELEMENT Decoders (MediaCodec*)>
<!ELEMENT Encoders (MediaCodec*)>
<!ELEMENT MediaCodec (Type*,Quirk*)>
<!ATTLIST MediaCodec name CDATA #REQUIRED>
<!ATTLIST MediaCodec type CDATA>
<!ELEMENT Type EMPTY>
<!ATTLIST Type name CDATA #REQUIRED>
<!ELEMENT Quirk EMPTY>
<!ATTLIST Quirk name CDATA #REQUIRED>
]>

There's a simple and a complex syntax to declare the availability of a
media codec:

A codec that properly follows the OpenMax spec and therefore doesn't have any
quirks and that only supports a single content type can be declared like so:

    <MediaCodec name="OMX.foo.bar" type="something/interesting" />

If a codec has quirks OR supports multiple content types, the following syntax
can be used:

    <MediaCodec name="OMX.foo.bar" >
        <Type name="something/interesting" />
        <Type name="something/else" />
        ...
        <Quirk name="requires-allocate-on-input-ports" />
        <Quirk name="requires-allocate-on-output-ports" />
        <Quirk name="output-buffers-are-unreadable" />
    </MediaCodec>

Only the three quirks included above are recognized at this point:

"requires-allocate-on-input-ports"
    must be advertised if the component does not properly support specification
    of input buffers using the OMX_UseBuffer(...) API but instead requires
    OMX_AllocateBuffer to be used.

"requires-allocate-on-output-ports"
    must be advertised if the component does not properly support specification
    of output buffers using the OMX_UseBuffer(...) API but instead requires
    OMX_AllocateBuffer to be used.

"output-buffers-are-unreadable"
    must be advertised if the emitted output buffers of a decoder component
    are not readable, i.e. use a custom format even though abusing one of
    the official OMX colorspace constants.
    Clients of such decoders will not be able to access the decoded data,
    naturally making the component much less useful. The only use for
    a component with this quirk is to render the output to the screen.
    Audio decoders MUST NOT advertise this quirk.
    Video decoders that advertise this quirk must be accompanied by a
    corresponding color space converter for thumbnail extraction,
    matching surfaceflinger support that can render the custom format to
    a texture and possibly other code, so just DON'T USE THIS QUIRK.

-->

<MediaCodecs>
    <Decoders>
        <MediaCodec name="OMX.Intel.mp3.decoder" type="audio/mpeg" />
        <MediaCodec name="OMX.Intel.amrnb.decoder" type="audio/3gpp" />
        <MediaCodec name="OMX.Intel.amrwb.decoder" type="audio/amr-wb" />
        <MediaCodec name="OMX.Intel.aac.decoder" type="audio/mp4a-latm" />
        <MediaCodec name="OMX.Intel.vorbis.decoder" type="audio/vorbis" />
        <MediaCodec name="OMX.Intel.hw_vd.h264" type="video/avc" >
            <!-- profiles and levels:  ProfileBaseline : Level51 -->
            <Limit name="size" min="64x64" max="3840x2160" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" range="1-972000" />
            <Limit name="bitrate" range="1-40000000" />
            <Feature name="adaptive-playback" />
        </MediaCodec>
        <MediaCodec name="OMX.Intel.hw_vd.h264.secure" type="video/avc">
            <!-- profiles and levels:  ProfileBaseline : Level51 -->
            <Limit name="size" min="64x64" max="3840x2160" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" range="1-972000" />
            <Limit name="bitrate" range="1-40000000" />
            <Feature name="adaptive-playback" />
            <Feature name="secure-playback" required="true" />
        </MediaCodec>
        <MediaCodec name="OMX.Intel.hw_vd.vp8" type="video/x-vnd.on2.vp8" >
            <Limit name="size" min="64x64" max="3840x2160" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" range="1-972000" />
            <Limit name="bitrate" range="1-40000000" />
            <Feature name="adaptive-playback" />
        </MediaCodec>
        <MediaCodec name="OMX.Intel.sw_vd.vp9" type="video/x-vnd.on2.vp9" >
            <Limit name="size" min="64x64" max="3840x2160" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" range="1-972000" />
            <Limit name="bitrate" range="1-40000000" />
            <Feature name="adaptive-playback" />
        </MediaCodec>
        <MediaCodec name="OMX.Intel.hw_vd.h265" type="video/hevc" >
            <Limit name="size" min="64x64" max="3840x2160" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" range="1-972000" />
            <Limit name="bitrate" range="1-10000000" />
            <Feature name="adaptive-playback" />
        </MediaCodec>
    </Decoders>

    <Encoders>
        <MediaCodec name="OMX.Intel.aac.encoder" type="audio/mp4a-latm" />
        <MediaCodec name="OMX.Intel.amrnb.encoder" type="audio/3gpp" />
        <MediaCodec name="OMX.Intel.amrwb.encoder" type="audio/amr-wb" />
        <MediaCodec name="OMX.Intel.hw_ve.h264" type="video/avc" >
            <Limit name="size" min="176x144" max="3840x2160" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" range="1-243000" />
            <Limit name="bitrate" range="1-15000000" />
        </MediaCodec>
        <MediaCodec name="OMX.Intel.hw_ve.vp8" type="video/x-vnd.on2.vp8" >
            <Limit name="size" min="176x144" max="3840x2160" />
            <Limit name="alignment" value="2x2" />
            <Limit name="block-size" value="16x16" />
            <Limit name="blocks-per-second" range="1-243000" />
            <Limit name="bitrate" range="1-15000000" />
        </MediaCodec>
    </Encoders>
    <Include href="media_codecs_google_video.xml" />
    <Include href="media_codecs_google_audio.xml" />
    <Settings>
        <Setting name="max-video-encoder-input-buffers" value="9" />
    </Settings>
</MediaCodecs>
<!-- ############## END MIX-IN DEFINITIONS ############### -->

Thank you for your report.
Could you please list the codecs as reported by CheckVideoCodecs (refs https://github.com/Genymobile/scrcpy/issues/55#issuecomment-376425796)

Yes i will get you the list soon, thanks for the quick answer.

Hi @rom1v - attached the output
debug.zip

OK, so there are two H.264 encoder, but the first one is not working.
I guess I should add a command-line option to force a specific encoder…

I've made a quick test by building the server on my own.
I've added a force creation of the MediaCodec by name with the google encoder, the device worked fine, played with it for a good few minutes and it didn't crash anymore.

So we can say for sure this feature of forcing encoder is needed and will solve the issue.

Do you want to work on this feature?

OK i will do it 👍 and submit a PR

Fixed by #1827.


req.queryStringParameters is undefined if no query parameters are passed

I had to add a line like this to all my functions handling query parameters
const queryParams = req.queryStringParameters || {};

Hmm, I'm not seeing req.queryStringParameters as undefined, but it is set to null if there are no query params passed; this mocks AWS's behavior. How would I reproduce to get undefined?
https://github.com/architect/sandbox/blob/master/src/http/invoke-http/_req-fmt.js#L32

Most likely my fault, well possible it is null. I'll update the title


⚠ Spryr has degraded performance

In 315f801, Spryr (https://spryr.com) experienced degraded performance:

HTTP code: 200
Response time: 3094 ms

Resolved: Spryr performance has improved in 0adb1ba after 10 minutes.


cli: add support for running two workflows concurrently

Currently, if two instances of popper run are executed concurrently on the same (or similar) workflow, unexpected issues might arise. For example, the /tmp/actions/ folder is shared across all instances and repos are cloned there and checked out to the version specified in a workflow. Another issue is that containers are not uniquely named and, as a consequence, two workflows with the same actions will potentially clash when creating/running/deleting containers.
One way of taking care of this is to generate a popper run ID that might be based on the path to .workflow file, plus datetime.datetime.now(). This then can be used to:

uniquely identify containers, e.g. name a container based on the action name and append the popper run ID.
create an actions cache folder unique for the popper id.

Other things might need to be taken care of. So we need to analyze the overall workflow execution flow to identify more issues like this.

@ivotron correct me if I didn't understand it properly. We append an id generated using the path to the workflow and timestamp. This is used to uniquely identify

docker containers
actions cache folder

For my Gsoc proposal I was thinking of expanding it. A new feature popper multirun which would parallelly execute all workflows using the underlying mechanism of  this feature: all docker container  and actions cache folder having unique ids (in case of a duplicate workflow)
PS: I think popper multirun might be equivalent to popper run --recursive --parallel-workflows

the multirun command seems like a useful feature. It is difficult to know in advance which workflows to run though, as users might be executing workflows from multiple projects. So for this issue we can focus on the core functionality, which is to assume that a user can invoke popper run in ad-hoc ways (e.g. running workflows from multiple projects). For that to work, the popper run logic needs to consider that the user might have started another instance of popper run, without us knowing anything about it.

Won't popper id solve this issue of having multiple popper run instances running?
Also for multirun maybe we can ask confirmation from the user beforehand as to which workflows he would like to execute.
Eg. popper multirun
Found 3 workflow
1. a.workflow
2. b.workflow
3. c.workflow
Then the user enters id corresponding to the workflows he wants to run?
Enter workflow ids to run: 2 3

that assumes that workflows all pertain to the same project. But users might be running workflows from different projects. A multirun feature would still need the functionality described in the OP. So it might be best to treat that separately.