ProduceAsync blocks indefinitely

Hi,
this is more like a question since I don't have invitation in Slack I realized this would be the best place.
I need to make one simple producer for our automation tests and make sure message is successfully pushed before I can continue with test execution, but sadly producer blocks for indefinite amount of time.
public async Task PublishPurchases(IEnumerable<BetPurchase> purchases)
{
      foreach (var purchase in purchases)
      {
          await Producer.ProduceAsync("incoming-purchases", purchase.GetHashCode().ToString(), purchase);
      }
}

What I noticed so far:

I am using burrow dashboard as monitor for kafka, where I see messages are successfully pushed, but call is still blocked
I noticed remarks comment on the Producer<>.ProduceAsync and subscribed for Producer<>.OnError event to check if the send queue is full, but no error was raised there.

This comes from remarks as well:

Warning: if background polling is disabled and Poll is not being called in another thread, this will block indefinitely.

Sadly I am not sure what it means exactly? Which Poll method needs to be called in another thread? On Consumer<>? If yes, why would producer be blocked until consumer polls? How can I enable background polling?

the producer has a background thread that polls for delivery reports - you can turn this off with a constructor argument, but generally you shouldn't.
what is your producer config?
how long did you wait? (how long is indefinite?).
does Producer.ProduceAsync("incoming-purchases", purchase.GetHashCode().ToString(), purchase).Result work? (i.e. a synchronous call).

Hi @mhowlett ,

What is your producer config? - They are all default, I am only adding "bootstrap.servers" configuration.
How long did you wait? - As far as I recall I gave up after 1 minute of waiting.
does Producer.ProduceAsync("incoming-purchases", purchase.GetHashCode().ToString(), purchase).Result work? - Yes it does, but I'd really want to omit .Result as it might cause deadlocks https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html

I think that it is related with this issue https://github.com/confluentinc/confluent-kafka-dotnet/issues/406

I'm facing the same issue, code is very similar to one that @marpit has. The message is sent, but the task returned from ProduceAsync never completes. Interesting that this only happens in tests, but not in the real application or console sample. The only difference I see here is the synchronization context, which might be single threaded in case of unit test framework.
I've also found several old issues which sound the same: https://github.com/confluentinc/confluent-kafka-dotnet/issues/92, https://github.com/confluentinc/confluent-kafka-dotnet/issues/190 and https://github.com/confluentinc/confluent-kafka-dotnet/issues/350, but it seems they were not completely hunted down.
Confluent.Kafka version: 0.11.4 (0.11.0 works fine btw!)
Producer config:
bootstrap.servers = ...
acks = 1
retries = 3
batch.num.messages = 50
queue.buffering.max.ms = 10
socket.blocking.max.ms = 10
log.connection.close = false
socket.nagle.disable = true
message.timeout.ms = 5 minutes
message.send.max.retries = 2

@andreycha I agree, problem is in test only and console app works correctly.

IIRC 0.11.4 contains a 'fix' for a very related issue, so the difference in behavior from 0.11.2 is not completely surprising - it looks like I fixed one scenario and broke another.
I'll prioritize getting this fixed for 0.11.5.

I just quickly tried to replicate on .net core 2.1, osx, Xunit and didn't see an issue (will investigate further later). One thing you could try @marpit (and let me know if it makes any difference!) is inserting a producer.Flush(TimeSpan.FromSeconds(10)) before the end of the producer using block. perhaps the producer is being disposed immediately (and hence the task will never complete). I don't see why this would be happening, but it's not a bad theory.

@mhowlett I tried Flush with same result.

@mhowlett ProduceAsync hangs immediately after call. Regarding my test setup -- .NET Framework 4.7, Win 10 x64, NUnit. @marpit what setup do you have?

@mhowlett I can also confirm that I am using NUnit as well, could it be issue with NUnit in specific?

Any thoughts from @CharliePoole maybe?

I just made a simple async test. NUnit 3.10.1, Confluent.Kafka 0.11.4, .NET Framework 4.6.1, Win10 x64 - ProduceAsync didn't hang. Maybe provide a complete minimal example (zipped up) that I can run in order to try and reproduce.
   [TestFixture]
    public class MyTests
    {
        [Test]
        public async Task Test()
        {
            var config = new Dictionary<string, object> { {
"bootstrap.servers", "<IP_ADDRESS>:9092" } };
            using (var p = new Producer<Null, Null>(config, null, null))
            {
                var dr = await p.ProduceAsync("tt5", null, null);
                Assert.False(dr.Error.HasError);
            }
        }
    }

@mhowlett well, your example hangs for me. NUnit 3.10.1, Confluent.Kafka 0.11.4, .NET Framework 4.7, Win10 x64. I've also noticed that after about 10 seconds of hanging, I start to get lots of following events in the debug:

Exception caught: 'System.IO.FileLoadException' in Confluent.Kafka.dll ("Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)") Exception caught: 'System.IO.FileLoadException' in Confluent.Kafka.dll ("Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)") Hyperlink: Activate Historical Debugging	22.31s		[25496] Worker Thread

What kind of log can I provide?

Figured I'd add my two cents.
I can consistently reproduce this behavior by executing the following script in F# Interactive (v10.1.0 for F# 4.1, the one that ships with Visual Studio 2017 15.7.4) on Windows 10 build 17134 with .NET Framework 4.7.2 (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release is 461808, docs) using Confluent.Kafka 0.11.4
#r "Confluent.Kafka"

open Confluent.Kafka

let broker = "..."
let topic = "test-topic"

let p =
    let config =
        [ "max.in.flight.requests.per.connection", box 1
          "request.required.acks", box -1
          "produce.offset.report", box true
          "bootstrap.servers", box broker
          "debug", box "broker,topic,msg" ]
        |> Map.ofList
    new Producer(config, false, false)

p.OnLog |> Event.add (fun l -> printfn "%s" l.Message)
p.OnError |> Event.add (fun e -> printfn "%s" e.Reason)

printfn "Start"

let conv (s: string) = System.Text.Encoding.UTF8.GetBytes s |> System.ArraySegment
let k = conv "test"
let v = conv "ing"

let t = p.ProduceAsync (topic, k.Array, k.Offset, k.Count, v.Array, v.Offset, v.Count, true)
let m = p.Result // <------ Never completes!

printfn "Done, produced to partition %i" m.Partition

The curious part is that I see the following lines appear in the logs and I have confirmed through other means that the message does indeed get published to the topic:
[thrd:<IP_ADDRESS>:9092/1]: <IP_ADDRESS>:9092/1: test-topic [0]: Produce MessageSet with 1 message(s) (75 bytes, ApiVersion 3, MsgVersion 2)
[thrd:<IP_ADDRESS>:9092/1]: <IP_ADDRESS>:9092/1: test-topic [0]: MessageSet with 1 message(s) delivered

Jumping into the debugger shows the Task returned by ProduceAsync stuck in the WaitingForActivation state.
Confluent.Kafka 0.11.3 behaves as expected (the Task completes and returns a Message).

I'm running on about 90 minutes of sleep, so forgive me if I'm off here,
but...

that should read "let m = t.Result", right?
even though it seems like it should be fine (because it's a console
app and they're generally immune from thread context deadlocks), in this
scenario:

a produce request is being placed on an internal queue for batching/
actual production to the broker
an internal thread/task is waiting for a broker (the leader for the
partition which.... I won't go into it. I'm sure you know this stuff and
the relevant part is just the client-side task/thread)
a continuation task is created in WaitingForActivation state
representing the to-be delivery report, and returned to you
the app accesses the value of the continuation with a blocking
"Result" call

That should all be fine (but only because it looks like it's running on
the main thread of a console app), but any time I see something blocking on
async code (or mixing "tpl" with "async/await" which I know is a terrible
description) and there's a deadlock type issue (check, and check, in this
case), the first things I'd suggest would be (in no particular order):

ConfigureAwait(false) on the "async" thing, or...
Don't block on the async code (go full-on async - which can be a
little annoying with a console app, but...), or..
Both, or...

Anyway - I have a reasonably good feeling that one of the first two above
will at least lead in the right direction (and I'd be curious to know as we
use this library a-lot)...
On Mon, Jun 25, 2018 at 10:07 AM Chris Pinola<EMAIL_ADDRESS>wrote:

Figured I'd add my two cents.
I can consistently reproduce this behavior by executing the following
script in F# Interactive (v10.1.0 for F# 4.1, the one that ships with
Visual Studio 2017 15.7.4) on Windows 10 build 17134 with .NET Framework
4.7.2 (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework
Setup\NDP\v4\Full\Release is 461808, docs
https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#to-find-net-framework-versions-by-viewing-the-registry-net-framework-45-and-later)
using Confluent.Kafka 0.11.4
#r "Confluent.Kafka"
open Confluent.Kafka
let broker = "..."
let topic = "test-topic"
let p =
let config =
[ "max.in.flight.requests.per.connection", box 1
"request.required.acks", box -1
"produce.offset.report", box true
"bootstrap.servers", box broker
"debug", box "broker,topic,msg" ]
|> Map.ofList
new Producer(config, false, false)
p.OnLog |> Event.add (fun l -> printfn "%s" l.Message)
p.OnError |> Event.add (fun e -> printfn "%s" e.Reason)
printfn "Start"
let conv (s: string) = System.Text.Encoding.UTF8.GetBytes s |> System.ArraySegment
let k = conv "test"
let v = conv "ing"
let t = p.ProduceAsync (topic, k.Array, k.Offset, k.Count, v.Array, v.Offset, v.Count, true)
let m = p.Result // <------ Never completes!
printfn "Done, produced to partition %i" m.Partition
The curious part is that I see the following lines appear in the logs and
I have confirmed through other means that the message does indeed get
published to the topic:
[thrd:<IP_ADDRESS>:9092/1]: <IP_ADDRESS>:9092/1: test-topic [0]: Produce MessageSet with 1 message(s) (75 bytes, ApiVersion 3, MsgVersion 2)
[thrd:<IP_ADDRESS>:9092/1]: <IP_ADDRESS>:9092/1: test-topic [0]: MessageSet with 1 message(s) delivered
Jumping into the debugger shows the Task returned by ProduceAsync stuck
in the WaitingForActivation state.
Confluent.Kafka 0.11.3 behaves as expected (the Task completes and returns
a Message).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/confluentinc/confluent-kafka-dotnet/issues/545#issuecomment-400025267,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AC-vl4MjM8rQ17atnAAwMUGY4djZHdvNks5uARi2gaJpZM4Uaalq
.

@sfrooster ah, you're right. That was originally all one line in my script but I tried splitting it up for clarity. That's what I get for refactoring in the comment editor I suppose. :)
Additionally I failed to mention that I've already tried using ConfigureAwait(false) on that Task to no avail. Also this script was meant to serve as a minimum viable reproduction of the issue that I encountered in my full-on async application code.

@sfrooster please note that originally reported issue don't have the problem of mixing async and sync code.

I have some strange problem. I'm trying to produce asynchronously to several topics some data.
My config:
var config = new Dictionary<string, object>                     {                         {"batch.num.messages", 1500},                         {"queue.buffering.max.ms", 2000},                         {"bootstrap.servers", ip},                         {"message.timeout.ms", 3000},                         {"socket.timeout.ms", 3000}                     };
`var tasks = x.Select(u => Task.Run(async () =>
{
Logger.Trace($"Task {u.topic} began");
try
{
using (var producer =
new Producer<Null, string>(config, null, new StringSerializer(Encoding.UTF8)))
{
var deliveryreport = await producer.ProduceAsync(u.topic, null, u.serialized);
if (deliveryreport.Error.HasError)
{
Logger.Error($"Error {deliveryreport.Error.Reason}");
throw new Exception(deliveryreport.Error.Reason);
}
else
{
Logger.Trace($"Status: {deliveryreport.Error.Reason}, Code {deliveryreport.Error.Code}");
}
}
}
finally
{
Logger.Trace($"Task {u.topic} is finished");
}
})).ToList();
sks.Count != 0)
{
    Logger.Trace($"Starting to await");
    var task = await Task.WhenAny(tasks);

    Logger.Trace($"Await finsihed");
    if (task.Exception != null && task.Exception.InnerExceptions.Any())
    {
        Logger.Error($"Logging to file");
    }
    else
    {
        Logger.Trace("Success");
    }
    Logger.Trace($"End");
    tasks.Remove(task);
}`

I want to get an error if kafka broker is unavailable and log my message to file.
When I'm launching my code in debug it works well, but when I'm installing my program as a service  any task becomes blocked infinitely. What's wrong?

There is a deadlock scenario that can happen during Dispose of the Producer / Consumer if the Dispose method is called on a thread that is also required by one of the registered events (OnLog, OnError, etc..). It seems likely this is the root cause of the problems in this thread. This has been resolved in the 1.0-experimental-8 nuget package. Would appreciate people trying this out and reporting back as to whether this issue is solved for them.

@mhowlett thanks a lot for your investigation.
Now, that's what I've discovered. If I have working brokers and established connect to the Kafka server i noticed several moments: degraded performance of async producing like in the example above (https://github.com/confluentinc/confluent-kafka-dotnet/issues/545#issuecomment-404439056). Moreover, if i have a lot of async tasks of sending data I have to delete "message.timeout.ms" parameter from cofig because 3000 ms value is not enough now (10000 also is not enough). I get "Local: Message timed out" error. So for avoiding this error I should delete this value from config, but when I have disabled Kafka server I need this parameter to be set for catching error of unavailable server asap. And yes, now "await producer.ProduceAsync" is NOT blocked infinitely, but there are still some performance problems described above.

@massarakh - it's very costly to construct a Producer - tcp connections are established to all brokers and there various metadata and api feature request calls that occur before the producer is able to perform the actual produce request. You are creating a Producer instance for each message you send - this is extremely inefficient.

@mhowlett yes, this approach was only for debugging, just cause via singleton it also had locks during producing. Now I'll try to produce using singleton again.

@mhowlett Tried to produce asynchronously not in debugging, but after install and i noticed that ProduceAsync was blocked infinitely likely as before, settings in config didn't help.

hi mhowlett ,
We used a Web Api as Producer.
This API works fine in Debug mode, but after build and deployment on our integration environment ( Windows server / IIS), this api doesn’t produce any messages or logs.
We are in the same case as described by massarakh  .
We use Confluent.Kafka (1.0.0-experimental-8)

Hello
I'm experiencing the same issue:
confluent-kafka 0.11.5 (i tried experimental-8 as well)
Windows 10 x64, Console App .Net 4.5
The task stays on WaitingForActivation status.
The Kafka server is already in use, it means that we're already able to produce and consume documents using python and nodejs clients.
I also tried with a local kafka server, same issues. Here is the code:
`        static void Main(string[] args)
{
var config = new Dictionary<string, object>
{
{ "bootstrap.servers", "localhost:9092" }
};
        Console.WriteLine($"Connecting to {config["bootstrap.servers"]}");
        var producer = new Producer<Null, string>(config, null, new StringSerializer(Encoding.UTF8));
        var dr = producer.ProduceAsync("test_kafka", null, "some random value").Result;
        Console.WriteLine($"Delivered '{dr.Value}' to: {dr.TopicPartitionOffset}");
        Console.ReadLine();
    }`

this is a different issue, it's blocking on the Task (not Dispose). Most likely the producer can't deliver the message for some reason, possibly you've specified the bootstrap.servers incorrectly.  It will time out eventually.

I think the bootstrap.servers is correct, using this python code works :
import time
import uuid
from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='localhost:9092')
for _ in range(100):
    generated_string = uuid.uuid4()
    print("Sending {}".format(generated_string))
    producer.send('test_kafka', str(generated_string).encode(encoding='utf-8'))
    time.sleep(1)

Any idea to find the reason it can't deliver the message?
It seems that it does not timemout too.

@mathrb i have the same constatation as you.
0.11.3 work fine, but 0.11.5 and 1.0.0-experimental-8 produce the same issue.

This thread is getting long, and discussion in it refers to a number of different root causes. One of those definitely corresponded to a real issue with the library, not mis-configuration etc and is now resolved. Going forward:

I've just uploaded 1.0-experimental-9 which includes the deadlock fix but implemented a bit differently to 1.0-experimental-8 in order to also address #577.

I'm going to close this issue. If you are still experiencing this problem and using 1.0-experimental-9, please open another issue that includes a short, complete example that I can copy/paste run in order to try to replicate. If you are sure your issue is exactly the same as on someone else has opened, feel free to add to that issue, else open a new issue.

thanks for all your feedback!


[SE-0428] NFC: Rename _DistributedProtocol macro into Resolvable

The proposal was accepted with modifications
The decision was made to change the spelling of the attached macro in the proposal from
@DistributedProtocol to @Resolvable (or @Distributed.Resolvable if disambiguation is needed).

@swift-ci please test

@swift-ci please test macOS

@swift-ci please test Windows platform

I'll follow-up with 6.0 PR in the morning.


Answers, Classification, Search Endpoint Deprecation

Describe the bug
Today, we’re announcing that we will be deprecating the Answers, Classifications, and Search endpoints.
Since releasing these endpoints, we’ve developed new methods that achieve better results for these tasks. As a result, we’ll be removing the Answers, Classifications, and Search endpoints from our documentation and removing access to these endpoints on December 3, 2022.
We encourage anyone using these endpoints to switch over to newer techniques which produce better results, and have developed transition guides to help with this process.
Your code piece
Exception message:
Org org-OqrhlCeqzLz6NBDkPuE1o5IY does not have access to the answers endpoint, likely because it is deprecated. Please see https://community.openai.com/t/answers-classification-search-endpoint-deprecation/18532 for more information and reach out to<EMAIL_ADDRESS>if you have any questions.

Result
If you are currently using these endpoints, this change will not immediately impact you. Prior to December 3, you will still be able to make requests and access the endpoint documentation by directly navigating to these pages:
Additional context
Link to the official message.

Thanks for the Issue. Removed deprecated endpoints at v6.2.0 .


Fix on_runtime_upgrade weight recording

This fixes a bug in frame_executive/frame_system where the weight of runtime upgrade logic was not represented in the block.
The issue arises from the following steps:

Perform on_runtime_upgrade logic (which updates weight)
Initialize block (which clears weight)
Process extrinsics and other stuff (starting from weight 0)

This both fixes the bug and optimizes the code such that the weight is locally tracked during the entirety of the initialize_block_impl, and only one storage write is used to update that weight at the end of the function.
This also takes into account the weight of frame_system on_initialize weight, which does not exist right now, but could later.
A test has been added that verifies all weights being tracked in the initialize_block_impl are being recorded correctly.

resolves #7427


Support recording client errors and server errors on the L7 protocol

The New Feature
I want the stats of hosts supprt recording client errors (4xx in HTTP) and server errors (5xx in HTTP) on the L7 protocol.
Your scenes
Currently the L7 response simply records success and failure, but there are different types of errors in L7 protocol (the HTTP protocol is well defined).
https://github.com/mosn/mosn/blob/92f428f1255a9ae0622beaf4fb11812ad5d93d23/pkg/types/upstream.go#L281-L282
I am currently implementing a latency based load balancing algorithm #2252 , but I'm facing a sticky problem now.
Latency-based load balancing algorithms are all based on the premise that the cost of processing requests is the same. But as we all know, user input is untrustworthy, and all backend services will verify user (or other service) input, and once the verification fails, the request will not be processed and the result will be returned quickly, which will lead to The load balancing algorithm gets a wrong view: this request is processed very quickly.
$$
\begin{align}
Avg &= \sum_{i=1}^{n}Duration_i / (SuccessCount + FailedCount) \
&= (\sum_{i=1}^{SuccessCount}SuccessDuration_i + \sum_{i=1}^{FailedCount}FailedDuration_i) / (SuccessCount + FailedCount) \
&\approx \sum_{i=1}^{SuccessCount}SuccessDuration_i / (SuccessCount + FailedCount) \
&\ll \sum_{i=1}^{SuccessCount}SuccessDuration_i / SuccessCount
\end{align}
$$
We need a mathematical model to fix this wrong view. One of the easiest ways to do this is to fix all response times to the same value as the SuccessDuration
$$
\begin{align}
FixedAvg &= Avg / \alpha \
\sum_{i=1}^{SuccessCount}SuccessDuration_i / SuccessCount &= \sum_{i=1}^{SuccessCount}SuccessDuration_i / (SuccessCount + FailedCount) / \alpha \
SuccessCount &= \alpha (SuccessCount + FailedCount) \
\alpha &= SuccessCount / (SuccessCount + FailedCount) \
\alpha &= SuccessRate
\end{align}
$$
Your advice
It seems that we only need to record the failed requests count to solve the problem? In fact, different errors have different bias for the final score. The client error is only due to the abnormal behavior of the user. In fact, the host has no performance problems, but the server error is different. It means that there is a real problem with the host. If the request is sent to it again, it will seriously affect the quality of service.
So we'd better be able to split the two metrics, and be able to set different bias when doing circuit breakers and load balancing algorithms in the future
Environment

MOSN Version

This problem is also described in "The Site Reliability Workbook: Practical Ways to Implement SRE". When the resource-based load balancing algorithm encounters fail-fast, severe traffic skew will occur.

Nice catch, your advice looks good to me, this could be an improvement of https://github.com/mosn/mosn/issues/2252 , not a blocker.

Nice catch, your advice looks good to me, this could be an improvement of https://github.com/mosn/mosn/issues/2252 , not a blocker.

Because different errors have different reference meanings for load balancing, the revised formula can be changed.
Since the client error is caused by the wrong behavior of the user, it basically has no impact on the system, so we can simply ignore this part of the request, but the server error is different, because the server really has an error, so the load balancing must avoid giving it sends traffic.
So the calculation formula has changed a little, where ClientErrorBias and ServerErrorBias are configurable
$$
\begin{align}
alpha &= SuccessCount / TotalCount \
& = 1 - ClientErrorCount / TotalCount - ServerErrorCount / TotalCount \
=> alpha &= 1 - (ClientErrorCount / TotalCount) ^ {ClientErrorBias} -  (ServerErrorCount / TotalCount) ^ {ServerErrorBias }
\end{align}
$$
cc @rayowang , what do you think of this solution


Fix user doesn't impersonate.

What changes were proposed in this pull request?
When save model to HDFS, It's the user of yarn, not the user who submit the application, this PR fix this issue.
 Before we can merge this request please visit https://yahoocla.herokuapp.com/ and agree to the terms. Thanks! :smile:

I signed it!

Hi @wangyum, I'm a bit curious about this one.  From what I can tell, the user that executes the spark-submit should already be the user for HDFS, i.e. in my environment, I see the correct behavior.  So I'm trying to understand if this is specific to your environment/setup?
For example, if you write a simple pyspark program w/o TFoS to save to HDFS, are the permissions correct?
sc.parallelize(range(1000)).saveAsTextFile("foo")

@dogVgod @Yiran-wu Can you help me verify this?
sc.parallelize(range(1000)).saveAsTextFile("foo") is correct, but TensorFlowOnSpark isn't.

@wangyum hmm, that's weird.  Can you try running the same test, but using the same shipped Python.zip w/ PYSPARK_PYTHON and SPARK_YARN_USER_ENV settings as TFoS?

@leewyang I confirm that I have the same issue as @wangyum, even with setting the variables as suggested.

@tkakantousis can you confirm that this patch works for you?  Also, can you provide details of your environment?  (e.g. versions of hadoop, spark, tensorflow, python)?

@leewyang the patch worked for me only when using the codebase from the PR. When I tried to apply the patch on a more recent TFoS commit, for example https://github.com/yahoo/TensorFlowOnSpark/commit/1120406f69a827cb6ca9722e9778499d52891c96, it didn't work.
I'm going through the mnist example provided in Wiki, so I'm using Python.zip as per the example, hadoop 2.7.3, Spark 2.1.0.

@tkakantousis when you applied the patch to a more recent commit, did it look like this?  If not, can you try this branch (based off of the latest master)?
Note: we've modified the API slightly, so there is the new "recommended" run() API, but we still have the original reserve() + start() APIs for backwards-compatibility.  Not sure which one your test was using, but this patch should fix both paths.

@leewyang yes it looked like this branch but I had set the env variable only at one place in the code.
The branch you propose works fine, thanks!. Could it be merged in the master branch?

Merged in #59


Added the ability to send a request to all handlers and return all of their results.

As my commit comment suggests, this addition is huge for me. We have multiple hardware platforms that we communicate with, from access control, alarm panels, cameras and recorders, elevators, etc... With this I can have a new "Doors" controller in my ASP.NET application with GetAll method. The controller doesn't need to know about the various door hardware providers, it just makes a request to MediatR for all of the doors and then my various Mercury, Assa, Axis, Isonas door request handler providers will return all of the doors that it has configured.

How does this work with the pipeline? Does the pipeline wrap each handler or ALL handlers?

It wraps each handler. I do not have a preference for this right now, so I'm more than happy to hear your advice on how it should be or how you would like it.
Here is an example of the output of a LINQPad test script.

This is interesting.
This seems like a Composed Message Processor or a simple Recipient List/Aggregator.  Do you think these enterprise integration patterns would be appropriate in MediatR, which claims to be a "Simple, unambitious mediator implementation" or at another abstraction level?
It's been a few months since the PR was opened. Are you running a copy of this PR in production?  Are using the default PublishCore that calls Task.WhenAll()?  When you await SendAll() and multiple exceptions are thrown, only the first exception is raised from the await.  In your app code do you then swallow that exception and read all exceptions from the task returned from SendAll()?


Libdoc doesn't handle parameterized types like list[int] properly

Like in Browser lib, List[Permission] or Dict[str, int].
See
https://marketsquare.github.io/robotframework-browser/Browser.html#New Context

It seems that if you have a parameterized type like List[Permission], there's type info only for the top level type. We definitely should show type info also for those nested types. Unfortunately fixing this is likely going to be somewhat complicated and most likely requires updating Libdoc spec files. It's possible that changes are too big for a bug fix release like 6.0.2, but this certainly needs to be fixed latest in 6.1.

I think it is just an issue of libdoc html

Are you sure? I think we only add something like 'list[int]' to the spec. We should list nested types separately.

I looked at this a bit more closely and it seems that bigger changes are needed to fix this. I tested this with a library having these two keywords:
def parameterized(arg: list[int]):
    pass

def union(arg: str|int):
    pass

The parameterized example demonstrates this issue and yields the following argument information in a generated JSON spec file that also Libdoc's HTML outputs use internally:
      "args": [
        {
          "name": "arg",
          "types": [
            "list[int]"
          ],
          "typedocs": {
            "list[int]": "list"
          },
          "defaultValue": null,
          "kind": "POSITIONAL_OR_NAMED",
          "required": true,
          "repr": "arg: list[int]"
        }
      ]

The union example works fine and produces this result:
      "args": [
        {
          "name": "arg",
          "types": [
            "str",
            "int"
          ],
          "typedocs": {
            "str": "string",
            "int": "integer"
          },
          "defaultValue": null,
          "kind": "POSITIONAL_OR_NAMED",
          "required": true,
          "repr": "arg: str | int"
        }
      ],

As you can see, in the union example types are listed separately ("types": ["str", "int"]) and thus they can be easily formatted separately in Libdoc's HTML output as well. In the parameterized example we only get "types": ["list[int]"] and needed to parse that using Javascript to be able to separate the root type list from the nested type int. That's doable but not easy, because there could be multiple levels of nesting. More importantly, all Libdoc spec consumers needed to do same parsing which doesn't make much sense.
A better solution is separating the root type from nested types already in Libdoc specs. In JSON we could represent list[int], for example, like "types": [["list", "int"]]. With more nesting levels like tuple[list[int], tuple[str, str]] we'd then get "types": [["tuple", ["list", "int"], ["tuple", "str", "str"]]]. I haven't yet looked how this could work in XML but I'm certain we can come up with something.
A problem with fixing this by enhancing spec files is that such changes to spec files are backwards incompatible and cannot be done in RF 6.0.2. It's a bit questionable to do that in RF 6.1 as well, but because this is a bug fix and occurs only in pretty rare cases I consider it fine. We obviously could change 6.1 to 7.0 to avoid that issue, but I don't think that makes much sense only because of this issue.

This issue wasn't relevant before RF 6.0 because earlier nested types weren't taken into account and list[int] was interpreted exactly as list. This was changed by #4433.

As I commented earlier, currently list[int] is represented like this in JSON:
"types": [
  "list[int]"
],
"typedocs": {
  "list[int]": "list"
}

In the same comment I proposed changing it to this:
"types": [
  ["list", "int"]
],
"typedocs": {
  "list": "list"
}

The above proposal has several problems:

It's backwards incompatible.
Needing to check is a type a string (no nested types) or a list (top level type with nested types) would make working with the data hard.
Multiple nesting levels would be represented with multiple nested lists making this even more complicated.

I believe a better solution is adding this totally new information:
"type": {
  "name": "list",
  "typedoc": "list",
  "nested": [
    {
      "name": "int",
      "typedoc": "integer"
    }
  ]
}

This new structure would contain all same information as old types and typedocs, but now nested types would be clearly separated.
The same structure would naturally work also with types not having nested types. For example, int would look like this:
"type": {
  "name": "int",
  "typedoc": "integer"
}

We could also use the type structure to represent unions. For example, Union[int, float] nowadays looks like
"types": [
  "int",
  "float"
],
"typedocs": {
  "int": "integer",
  "float": "float"
}

and could also be represented as
"type": {
  "name": "union",
  "typedoc": null,
  "nested": [
    {
      "name": "int",
      "typedoc": "integer"
    },
    {
      "name": "float",
      "typedoc": "float"
    }
  ]
}

This approach would work fine also with multiple nesting levels. For example, Union[int, list[int]] would look like this:
"type": {
  "name": "union",
  "typedoc": null,
  "nested": [
    {
      "name": "int",
      "typedoc": "integer"
    },
    {
      "name": "list",
      "typedoc": "list",
      "nested": [
        {
            "name": "int",
            "typedoc": "integer"
        }
      ]
    }
  ]
}

We should keep the old types and typedocs structures in JSON outputs at least until RF 7.0 for backwards compatibility reasons.

We have the same issue also in XML spec files. As an example, int, Union[int, float] and list[int] are currently represented in XML specs as follows:
<!-- int -->
<type typedoc="integer">int</type>

<!-- Union[int, float] -->
<type typedoc="integer">int</type>
<type typedoc="float">float</type>

<!-- list[int] -->
<type typedoc="list">list[int]</type>

I believe that a good way to fix this is making it possible for <type> elements to have nested <type> elements. This is otherwise easy, but currently <type> elements have the type name as content and it's not too nice to have an XML element with both text and child nodes. I believe we should add separate name attribute for the type name, but keep the text for backwards compatibility reasons until RF 7.0.
If we do the change proposed above, the only change with simple types would be the new name attribute and that ought to be fully backwards compatible. For example, int would be represented like this:
<type name="int" typedoc="integer">int</type>

With Unions the change would be bigger and not backwards compatible. For example, Union[int, float] would look as follows. Notice that nested types cannot be written to own lines because then the text of the root element would be Union\n instead of just Union.
<type name="Union">Union<type type="int" typedoc="integer">int</type><type type="float" typedoc="float">float</type></type>

With parameterized types changes would also be pretty big but they ought to be backwards compatible. For example, list[int]would yield this result:
<type name="list" typedoc="list">list[int]<type name="int" typedoc="integer">int</type></type>

@Snooz82, couuld you look at the proposed JSON and XML spec design above? If it looks good for you, I can do code changes, updated schemas, and also update Libdoc HTML so that it uses new info and shows list[int] properly. Comments from others obviously appreciated as well.

I knew this issue requires quite a bit of changes, but it turned out to be an even bigger task than I anticipated. Good news is that the problem is now finally fixed. JSON and XML specs have been updated as I proposed above, and HTML output now shows parameterized types so that both the top level type and nested types are links to type information.
As part of updating HTML output, I changed normal types so that they are shown like int instead of <int>. The reason was that with parameterized types list[int] looks considerably better than <list>[<int>] and it's more consistent to avoid angle brackets altogether. I also changed unions so that they are shown like int | float instead of <int> or <float>. The main reason to use | instead of or was that I wanted the syntax to look more like Python syntax. I also prefer list[int | float] over list[int or float] (or <list>[<int> or <float>].
I would have wanted to use exactly list[int] style with parameterized types, but our current templating system doesn't make that easy and currently the format is list [ int ]. These space are unnecessary but not too distracting. A bit worse situation is that if there are multiple nested types like dict[str, int], the format is dict [ str , int ] i.e. there's an extra space also before the comma. Having more than one nested type is relatively rare, and the extra space isn't that bad, so perhaps we can live with that as well.
What do others think, should we try to enhance HTML outputs still or are they good enough for now? I'd kind of like to get those extra spaces removed, but then again I wouldn't like to spend much time for this and would rather investigate better Libdoc HTML tech (#4304). How do you feel about using int instead of <int> and int | float instead of <int> or <float>?
I leave this issue open in case someone is interested to enhance HTML outputs still. @mkorpela made big changes some time ago, and it would be great if you'd be interested to take another look at this. @Snooz82 and @samipe may also be interested in this.

As an example how this feature works, I tested the following keyword:
def kw(a: int,
       b: int|float,
       c: list[int],
       d: dict[str, int],
       e: list[int|float|str],
       f: tuple[tuple[int], tuple[int|float]]):
    pass

This is how HTML documentation looks like:

As a reference, this is how it looked earlier:

In my opinion the current output looks better than earlier in general, and obviously now all nested types are links, but I'm certain it could be enhanced still.

No comments about the styles so I consider the current output good enough for RF 6.1 close this issue. It's still possible to enhance output both before and after the release, though.


Clean up configuration

We need to make all the config params consistent in how we load them and pass them through the program. Currently some params such as timeout are note being respected in the config

Okay in which in which file is stored  configuration information?

It's currently in reflex/config.py and the constants are in reflex/constants.py.

Ok I am going to check it

What exactly should I do?


CI: Report only prod jobs statuses on Github

Is your feature request related to a problem? Please describe.
Currently the CI reports to Github statuses of all kinda of jobs. It is confusing for developers to understand if tests are meant to pass and mandatory
Describe the solution you'd like
Once https://github.com/cloudfoundry-incubator/kubecf/issues/580 is concluded, we can avoid to report no-prod jobs, and just report the ones that should gate PRs
Describe alternatives you've considered
N/A
Additional context
https://github.com/cloudfoundry-incubator/kubecf/issues/580

This is fixed now


Remove use of the GSL library

This builds on #976, because it switches gsl::span to std::span, which was added in C++20.
This is necessary to use cesium-native in UE 5.5 (Preview) after it introduced a broken copy of GSL.

Thanks @kring ! I didn't check every file, but I spot checked around 100 files and found no surprises. I'll merge once CI passes!


Remove Partial Calls

Remove Partial Calls

Calls to partial are now run in host app.

[#97469748]

:clap:


Feature Request: Add auto-filtering/highlighting of Technique IDs based on Tactic IDs

When working on the flow chart and creating an "action", the Tactic IDs and Technique IDs are all available through an autocomplete drop down menu which is great.
As an iteration over this feature, it would be quite useful to add an auto-filtering/highlighting feature: When a Tactic ID is selected, only the relevant Technique IDs would be shown (or highlighted, leaving the others visible as well) in the related Technique IDs drop down values.
Thanks and well done for this attack flow app!

Great idea! Tagging @mikecarenzo for awareness.


Email users in order to register through Gmail SMPT

Hello,
I want to send invites to my users so they can complete registration process and I have my domain linked to GSuite Google Cloud. So where do I configure this on my server?
https://github.com/streamaserver/streama/wiki/Email-configuration
According to this there is an .yml file, but where do I find it?
Thanks!

Hi,
You need to make the application.yml file yourself if you would like a template please use https://github.com/streamaserver/streama/blob/master/docs/sample_application.yml


try to get rid of py dep in osx-arm64

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin, please rerender

@conda-forge-admin, please rerender

@conda-forge-admin, please lint

@conda-forge-admin, please rerender

I think this is ready for review, @jan-janssen. The problem with the current packages is that the osx-arm64 has a py310 dependence baked in (build string py310hb765f3a_6. I only realized this after running the full py matrix for an upcoming psi4 release. After very many python/cross_python build/host permutations, it looks like the simplest actually works.
I have access to a osx-arm64 machine now, so I downloaded the build artifacts from 0ace370, linked them into psi4, and checked ecp tests pass. Plus, the build string is hb765f3a_7 now, so I'm pretty confident it's in working order.


add seabed stage and fix REST -> RESET typo

need JPN name for seabed stage

First PR! yey!
Thanks for helping this project.


Add 401 Unauthorized error page

Nice! This should make a fallback addition. Just out of curiosity though: most 401s should be rescued by the various endpoints so that the user can be redirected to somewhere more useful. Is there any particular reason that this was needed? Federated identity work?

@brandur exactly right :) there is a case when the SAML assertion cannot verified -- it doesn't make sense to redirect the user to our login page since they've already been authenticated by the identity provider. We figured we just make an general PR because it's nice to have the fallback.

@dmcinnes Ah, thank-you for explaining! Good call.


Google Maps API error: MissingKeyMapError

Hello,
I'm unable to display map and the console output give me:
Google Maps API error: MissingKeyMapError https://developers.google.com/maps/documentation/javascript/error-messages#missing-key-map-error
Is there a way to specify a google maps api key ?

I can't reproduce the error with a fresh download of the war file.  Are you running from the war or the source code?
No API key should be needed if running on localhost.  Otherwise you will need to create an API key and update the code yourself.  See https://developers.google.com/maps/documentation/javascript/get-api-key
An API key can be added when loading the Maps API script at https://github.com/dpdearing/android-gps-emulator/blob/359757a45aff3b0154d6dfb8e735491fcf7b01cf/src/main/webapp/gpsemulator/index.html#L110

Same here...

@thiagotalma Can you give more details  Are you running on localhost?

@dpdearing
I was able to understand that the problem only occurs when the default port is changed.
When access is through localhost:8080 I have no problem with the key.
It is worth highlighting this in the documentation.
Taking advantage of the contact, could you clarify a question, please?
Does this only work in emulators? Can not run using adb via USB on a device?

@panaceya and @Neomeister2077, do you see the same behavior as @thiagotalma about only having a problem when using a non-default port?  (https://github.com/dpdearing/android-gps-emulator/issues/18#issuecomment-38200353)
In that case you may need to set your own API Key as I noted in https://github.com/dpdearing/android-gps-emulator/issues/18#issuecomment-333923521, or maybe Google changed something in the API that requires an API Key for everyone.
It's open source and I don't have a convenient configuration for testing this out, but feel free to submit a solution if you find one!

or maybe Google changed something in the API that requires an API Key for everyone.

Yup, Google Map with no API key is not permitted anymore, -1 to Google.

So, how to fix?

I am not submitting a PR cause I am lazy to fix it, however you can fix it by:

Editing the file in src/main/webapp/gpsemulator/index.html
Change the map js from <script src="https://maps.googleapis.com/maps/api/js" async defer></script> to <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>
Do the usual stuff (command line do mvn ... and java ...)

But I don't want to create a google map key D:

Here my google map key :P
AIzaSyBqPKkQya1l2z
combine above below
sb0vFGysIOxcz6udDOoCg
I have restricted the above to only work on the following websites:
http://localhost:8888/*
http://<IP_ADDRESS>:8888/*

Still, be gentle when using my key D: Cheers for the great software!

Thanks @NgSekLong!  I've been playing around with a way to store the API key in a local text file so that it's easier to create drop in each user's own key, but that's still kind of a hassle.  Just dropping in a key with limitations as you suggest is probably the easiest solution in the short term.


Make sure download of a "bad" dataset name doesn't generate an empty directory

It looked like one got created for some reason when I was doing stuff on Higgs. Make sure this isn't the case.

It looks like my attempt to download mc12_8TeV.117680.AlpgenPythia_P2011C_WenuNp2.merge.NTUP_COMMON.e1477_s1499_s1504_r3658_r3549_p1575 did indeed do that.

Ah, it looks like I only forgot to put 82 instead of 80 - so that was the reason why. But now... what the heck with this. That isn't good - no directory should have been created. So this is a real bug.


Order of items in inventory adjustment should be alphabetical

Summary
The order of items in the inventory adjustment drop downs is weird?  It should be alphabetical by name
Why
Ease of finding items in the list
Details
This may only be showing up on a new storage location.   To create a new storage location, sign in as<EMAIL_ADDRESS>go to Inventory | Storage Locations  and select "New Storage Location".
After saving your new storage location,  go to Inventory | Inventory Adjustments.  Click on "New Adjustment" and select your new storage location in "From storage location".    The items are not in alphabetical order.  They should be.
Criteria for completion

[ ] behaviour as described above
[ ] tests to demonstrate the behavior

Hello,
Happy to take this one if it's still going :)

Hey @nikolaz90 --  We usually reserve things with the Good First Issue label for brand new contributors -- they are small enough that they are ideal for tackling when you are first setting up your environment.
There is another Difficulty - Beginner issue available -- #4218 -- take a look (someone has said they could work on it in a few days, but that it's ok if someone else jumps in).   What do you think?

@cielf
I'm new to contribute here, I'd like to do this. Is it Okay?

Go for it!

Closing this -- it appears the items are in machine-alphabetical order.   Which is consistent with the rest of the system -- I believe we should be doing a case insensitive alphatization but it should be coordinated with all the other things.


Update installation chapter

Rendered view:

Setting Up a Development Environment
Troubleshooting

@georgik @MabezDev @bjoernQ @JurajSadel @jessebraham any feedback/suggestion is more than welcome!

Thank you all for the feedback, just addressed the comments!

Oh I didn't notice, there are apparently merge conflicts (unless GitHub is lying to me again...) so those will need resolving first, obviously.


Landcape mode (UI)

In landscape mode in mobile, the map is not much visible.

Let's ask how much they care about the mobile version... or just not mention it...

Incidentally fixed!


Recommended of setting custom registration fields

I want to add some custom registration fields.
I can replace the default generated App/Services/Registrar with LaraParse/Auth/Registrar and then change the create() method to do what I want.
Is this the best way to do this, or is there a better way?

The best way in my view would be to simply change the the App/Services/Registrar to extend LaraParse/Auth/Registrar then override the create method.

Thanks. Overriding create worked. Using the validator is a bit quirky since it is declared private in the parent class. However I just copied the way the constructor was being called and it works.
Thanks!


cmake.cmakePath regression

If the cmake.cmakePath is set to "cmake" (which is the default), in both user and workspace settings, then things work fine.
But if one of them is removed, this error will show up:

The expected behavior is to use the workspace setting, if not available, use the user setting, and if that one is not available, then show this error.
Also, if the default (i.e. cmake) is removed from the user or from the workspace in the UI, the JSON file will be modified by this value:

"cmake.cmakePath": ""

that might be the cause of the error.

Similar to, but not addressed by https://github.com/microsoft/vscode-cmake-tools/pull/1978.  The problem is that the setting is string with a "null" default which is invalid.


Missed Functionality and other bugs

After entering a wrong user name there is no way to back to main menu to search again.
Suggested fix:

[x] Add a href attribute to the logo of gitpedia.
[ ] Add a go back button to replicate the above action.

Miscellaneous bugs:

[x] Never console.log for key indicators!
[ ] Recommended to add a toast for indicating there is no search tag present upon clicking the search icon.

Great! prompting the user with pop up telling the user field is blank is what i intend to mention!...

Also include a License file...This may have a potential to become a viable product of some kind in evaluating candidates in a interview! #justsaying

@Jagadesh-Ram Thank a lot for explaining i will work on it. :+1:

hey, adding one more thing, when the page loads the chart's animation are triggered without being noticed, you could add a trigger when the charts are in the user's viewing viewport would be better. You can use inspection observer API

@jasbindar-singh I will check that out. Thanks for the suggestion :)


Indentation schematics

As of August 2018, the indentation seems to be creating a few warnings, thereby slowing down the development process by quite a bit.
Indentations occur after the colon(:) symbol is used and pressed Enter. That;s very helpful to quickly add spaces without hitting space 4 times. Tried adding one tab, but that returns a warning message, "whitespace contains tabs instead of spaces". That is not the issue here.
Even after we remove any whitespace in a new line and press enter, it creates a whitespace indentation.
Even simple editors, don't do that.
Indentation has to be turned thereoff, when a  blank new line without whitespaces is created.

Hello @vdevel00,
Auto-indentation is a part of underlying CodeMirror code editor, not this extension.
Have you checked that in Brackets' settings indentation with whitespace is enabled?

Yes, I did, and disabling the option worked. It was not the extension at fault.


Mock exe info fix

Description of changes

Adds some small fixes in mock startup to prevent breakage. Some null safety as well as an added call to constructExeInfo because it wasn't being populated properly during a partial mock push to cloud
Issue #, if available

Description of how you validated changes
Checklist

[ ] PR description included
[ ] yarn test passes
[ ] Tests are changed or added
[ ] Relevant documentation is changed or added (and PR referenced)
[ ] New AWS SDK calls or CloudFormation actions have been added to relevant test and service IAM policies
[ ] Pull request labels are added

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

Could you add an e2e test for this as well?

Btw. can you please avoid force pushes? It makes tracking incremental changes on PR harder.

@sobolk  Have resolved issues, sorry for the force push, I was doing a rebase. Is it preferred to just merge?

@sobolk Have resolved issues, sorry for the force push, I was doing a rebase. Is it preferred to just merge?

Yes, merges are preferred, we can then use GitHub UI to mark files as reviewed and review only recent diffs. Force pushes often invalidate state and reviewer has to start from scratch. So it's better to avoid it if possible.

Btw. you can use this command locally to validate that static analysis is happy
https://github.com/aws-amplify/amplify-cli/blob/7ed3c488b090943d4d74d29e8c4e3974a0dc531f/package.json#L7


Docs > Components > Dropdowns: Fix arrows direction

Prerequisites

[X] I have searched for duplicate or closed issues
[X] I have validated any HTML to avoid common problems
[X] I have read the contributing guidelines

Describe the issue

⚠ ON HOLD : Wait for having design specifications

This issue comes from the work done in Issue https://github.com/Orange-OpenSource/Orange-Boosted-Bootstrap/issues/1201 List in all the doc the incompatibility with ODS in which all Boosted components (variants included) have been inspected in order to identify the ones that do not respect ODS specifications and therefore need an alert message saying "Do not use in ODS".
Doing this work, design bugs were noticed.
Design bug to be corrected:
In docs/v5.1/components/dropdowns: Fix the arrow direction on pressed state.
Reduced test cases
NA
What operating system(s) are you seeing the problem on?
macOS
What browser(s) are you seeing the problem on?
Chrome
What version of Boosted are you using?
v5.2

Informations from design: "arrow markers behave similarly in the accordions and dropdown menus".
I made a PR on Bootstrap's side (https://github.com/twbs/bootstrap/pull/37792) and I a waiting for their answer.
If it's not ok for them, we will have to check if we can do it just on Boosted.

According to Bootstrap, this change will lead to multiple potential problems, especially for responsive and/or RTL cases.
Therefore, this issue is now on hold since we have more information from the design team.


Backslashes show up as %2F, domain not included in resulting URL

I had to add "http://trakt.tv/" to the Open URL Object for the workflow to even contact the trakt.tv website.
But I get a 404 every time I try to view a movie on the website using this workflow because the backslashes show up as %2F.
Can you look into resolving this?

Please revert what you've done in the Open URL Object in the Alfred workflow configuration. Open the workflow directory (Alfred Workflows -> Right-click workflow -> Show in Finder) and replace the traktforalfred.php file with the latest.

That works, but why not update it here?
https://timbooo.github.io/traktforalfred/

I don't want to create a new release because the current release is partly broken (due to the switch from Trakt to a new API). Thus it would take a great effort to update but since I personally don't have the time I only provided that quick fix for you (and possibly others).
Anyways I'm planning to update the workflow to work with Trakt API v2 in the future.


[BACKLOG-5272] carte (jetty) will not shutdown or respond to CTRL+C to kill it

@pentaho-nbaker review please


Improve/property access

This is kind of a bigger one.
I always found it pretty annoying to access a property value and hard to debug when you got something wrong. It wasn't possible to access a property by ID.
So this first of all adds get_by_name and get_by_id to the Properties struct.
To make it easier to access the values of a property in cases where you know the property type or expect a specific property type, this adds the FromPropertyValue trait and a bunch of convenience methods.
The trait also allows the user to define a specific type in which they want to receive the value of a property.
For easy access to the boolean state of a checkbox property, the following boilerplate was necessary, and you still had annoying error handling.
let is_active = match page.properties.properties.get("active").unwrap() {
     PropertyValue::Checkbox { checkbox, .. } => Ok(checkbox),
      _ => Err("Wrong property type"), // What property types is it instead???
};

The above code can now be done as follows:
let is_active = page
    .properties
    .get_by_name("active")
    .unwrap() // None if property is missing
    .expect_checkbox() // or `.expect_value::<bool>()` if not explicit about the property type
    .unwrap() // Helpful error message with expected and actual types

Example using the trait for a custom type:
// We can use the new type pattern to create a custom type that implements FromPropertyValue
// This allows us easy access to property value in our desired type
struct TextValue(String);
impl FromPropertyValue for TextValue {
    fn from_property_value(value: PropertyValue) -> Result<Self, WrongPropertyTypeError> {
        match value {
            PropertyValue::Text { rich_text, .. } => {
                let combined_text = rich_text
                    .iter()
                    .map(|rt| rt.plain_text().to_string())
                    .collect::<Vec<String>>()
                    .join("");
                Ok(TextValue(combined_text))
            }
            _ => Err(WrongPropertyTypeError {
                expected: vec!["Text".to_string()],
                actual: value.type_name(),
            }),
        }
    }
}

assert_eq!(
    page.properties
        .get_by_name("Text")
        .unwrap()
        .expect_value::<TextValue>()
        .unwrap()
        .0,
    "hello world".to_string()
);

I've found this very useful in my application where I have to access a lot of properties. But it is, of course, a larger addition. Let me know what you think.

I like the idea. Did you consider TryFrom?
There are quite a lot of Clippy errors BTW.

Using TryFrom instead of a custom trait would definitely be a consideration. I don't know. I mostly end up writing my own trait as it feels more explicit for me. What would be the benefit of using TryFrom?
Where do you see the Clippy errors? Locally, there are none showing up for me, and in CI, there are also none…

In preparation for better page creation and support for page property updates, the structure of properties has to change more fundamentally. This, unfortunately, also includes breaking changes. I currently see no way around this.
The problem is that page creation or updating doesn't need the ID inside a property variant; it just needs the property value. The new, more flexible structure solves this and also makes the code more concise in other cases.
I also removed the custom FromPropertyValue trait in favor of TryFrom, which is indeed much more idiomatic. The convenience methods for this are also now wrapped inside the ExpectProperty trait, which makes the change a bit less intrusive.


Linking Lecture(-slides)/exercises not possible on lecture communication

Describe the bug
When trying to link a lecture slide in a message tothe lecture communication, it does nothing.
To Reproduce

Lecture with a Attachment Unit containing a file (can be any lecture and any lecture unit as long as there is some PDF to take the slide from somewhere.
Click on "New message" on the right in the communication's tab
Select a slide from the lecture and lecture unit.
See that nothing gets inserted

Expected behavior
I'd expect the correct link/image syntax to be inserted into the markdown editor as in the general communication's tab
Screenshots

Which version of Artemis are you seeing the problem on?
6.8.0
What browsers are you seeing the problem on?
Chrome
Additional context
Here the lecture gets loaded and saved to the field:
https://github.com/ls1intum/Artemis/blob/2e12d79145a02f20a08c9cd4d7eb984823111c2d/src/main/webapp/app/overview/course-lectures/course-lecture-details.component.ts#L75
Here we save it to the discussion section:
https://github.com/ls1intum/Artemis/blob/2e12d79145a02f20a08c9cd4d7eb984823111c2d/src/main/webapp/app/overview/course-lectures/course-lecture-details.component.ts#L87
Here the course gets saved to the cache storage:
https://github.com/ls1intum/Artemis/blob/2e12d79145a02f20a08c9cd4d7eb984823111c2d/src/main/webapp/app/overview/discussion-section/discussion-section.component.ts#L79-L80
And when we attemt to select the slide, this code gets executed:
https://github.com/ls1intum/Artemis/blob/2e12d79145a02f20a08c9cd4d7eb984823111c2d/src/main/webapp/app/shared/markdown-editor/commands/courseArtifactReferenceCommands/lectureAttachmentReferenceCommand.ts#L57
The issue here is that the course is retrieved from the lecture and has hence no lectures on it's own. I'm not sure if this has ever worked or when this bug got introduced. Anyway, the solution here is to find a way to supply all required information to the command through this chain of loading.
Relevant log output
ERROR TypeError: Cannot read properties of undefined (reading 'find')
    at ht.execute (lectureAttachmentReferenceCommand.ts:57:63)
    at markdown-editor.component.html:149:88
    at BI (core.mjs:24046:12)
    at o (core.mjs:24083:16)
    at HTMLButtonElement.<anonymous> (platform-browser.mjs:683:112)
    at v.invokeTask (zone.js:371:171)
    at Object.onInvokeTask (core.mjs:14387:25)
    at v.invokeTask (zone.js:371:54)
    at d.runTask (zone.js:173:39)
    at p.invokeTask [as invoke] (zone.js:448:26)
    at C (zone.js:1582:12)
    at D (zone.js:1623:23)
    at HTMLButtonElement.V (zone.js:1643:12)

Closing for now, since its not reproducible anymore.


HPX fails to build on POWER8 with Clang7

Expected Behavior
normal compilation
Actual Behavior
Compilation fails early with this error:
In file included from /home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/src/hpx_wrap.cpp:27:
In file included from /home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/hpx.hpp:15:
In file included from /home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/include/runtime.hpp:12:
In file included from /home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/include/components.hpp:43:
In file included from /home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/runtime/components/server/locking_hook.hpp:12:
In file included from /home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/runtime/threads/coroutines/coroutine.hpp:37:
In file included from /home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/runtime/threads/coroutines/detail/coroutine_impl.hpp:40:
In file included from /home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/runtime/threads/coroutines/detail/context_base.hpp:44:
In file included from /home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/runtime/threads/coroutines/detail/context_impl.hpp:130:
/home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/runtime/threads/coroutines/detail/context_posix.hpp:238:22: error: use of undeclared identifier 'cb'
                cb_(&cb)
                     ^
/home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/runtime/threads/coroutines/detail/context_posix.hpp:241:37: error: use of undeclared identifier 'Functor'
                funp_ = &trampoline<Functor>;
                                    ^
/home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/runtime/threads/coroutines/detail/context_posix.hpp:407:17: error: use of class template 'ucontext_context_impl' requires template arguments; argument deduction not allowed in typedef
        typedef ucontext_context_impl context_impl;
                ^~~~~~~~~~~~~~~~~~~~~
/home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx/hpx/runtime/threads/coroutines/detail/context_posix.hpp:219:15: note: template is declared here
        class ucontext_context_impl
              ^

Steps to Reproduce the Problem

Check out HPX "stable"
Configure HPX with:

cmake -DCMAKE_CXX_COMPILER=/storage/users/khuck/src/hpx/spack/opt/spack/linux-rhel7-ppc64le/gcc-4.8.5/llvm-7.0.0-dc22vkqqj3dmm4a6dpayi5jp7btyjntn/bin/clang++ -DCMAKE_C_COMPILER=/storage/users/khuck/src/hpx/spack/opt/spack/linux-rhel7-ppc64le/gcc-4.8.5/llvm-7.0.0-dc22vkqqj3dmm4a6dpayi5jp7btyjntn/bin/clang -DCMAKE_BUILD_TYPE=Debug -DBOOST_ROOT=/home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/build-centaur-ppc64le-Linux-clang/boost-1.65.1 -DHPX_WITH_MALLOC=system -DHWLOC_ROOT= -DCMAKE_INSTALL_PREFIX=. -DHPX_WITH_THREAD_IDLE_RATES=ON -DHPX_WITH_PARCELPORT_MPI=ON -DHPX_WITH_PARCEL_COALESCING=OFF -DHPX_WITH_TOOLS=OFF -DHPX_WITH_TESTS=OFF -DHPX_WITH_EXAMPLES=OFF -DHPX_WITH_THREAD_MANAGER_IDLE_BACKOFF=OFF -DHPX_WITH_APEX=TRUE -DAPEX_WITH_ACTIVEHARMONY=TRUE -DACTIVEHARMONY_ROOT=/usr/local/packages/activeharmony/4.6.0-ppc64le -DAPEX_WITH_OTF2=TRUE -DOTF2_ROOT=/usr/local/packages/otf2/2.0-ppc64le -DAPEX_WITH_PAPI=TRUE -DPAPI_ROOT=/usr/local/packages/papi/5.5.1 -DHPX_WITH_APEX_NO_UPDATE=FALSE -DHPX_WITH_APEX_TAG=develop -DHWLOC_ROOT=/usr/local/packages/hwloc/1.8 -DHPX_WITH_RDTSCP=OFF -DHPX_WITH_DEPRECATION_WARNINGS=Off -DHPX_WITH_MAX_CPU_COUNT=160 /home/users/khuck/buildbot/slaves/phylanx/ppc64le-clang5-debug/build/tools/buildbot/src/hpx

make

Specifications
... Please describe your environment

HPX Version:  stable
Platform (compiler, OS):  Power8 using Clang 7

@khuck I distinctly remember that we fixed that before. I even think it was you doing the changes. Are you sure you are using the latest aster for compilation on that platform? See here for current master: https://github.com/STEllAR-GROUP/hpx/blob/master/hpx/runtime/threads/coroutines/detail/context_posix.hpp#L233-L240
It does not refer to cb anywhere.

#3800 is the PR by the way.

@khuck please reopen if this is still an issue.


Fix Ruby nested exception EOFError

Ruby somewhat recently (2.1) added support for nested exceptions. If any code run within a rescue block raises an exception, Ruby will store the rescued exception in the newly-created exception as its cause.
Nack causes a problem with this by reading the incoming request buffer until an EOFError is raised, then calling handle, which runs the request, within the rescue block. This causes any exception raised in the Rack app to have a cause of EOFError.
The fix for this is actually pretty simple: set a flag when the EOFError is raised. Check for the flag once outside of the rescue, and handle the request.
I also added a test that covers this, which was failing before the change to server.rb was applied.

This issue has rarely been visible, but it is the cause of https://github.com/charliesome/better_errors/issues/44
This change in better_errors causes the issue to permanently break better_errors when running in a nack server (Pow for example) because it started looking at the exception cause for the first time. This PR was merged almost a year ago, and then the project went quiet and has not made a release that includes the PR.
So to see this issue, you must be:

Running Ruby 2.1 or higher
Using Pow
Using better_errors 2.2.0 or higher.

Can we get this merged?

Sorry, this repository is not maintained.

Is there a different repo?


The application plugin's "run" task should be able to take program arguments

The application plugin provides a run task which should be able to take command line arguments that get passed to the application's main class.
Expected Behavior
After applying the application plugin, it should work to pass command line arguments like e.g. -s and --long to the main class' main method like
./gradlew run -args -s --long

Current Behavior
Gradle interprets -args as -a -r -g -s arguments to Gradle itself (not to the run task) and says:
$ ./gradlew run -args -s -long

No argument was provided for command-line option '-g'.

USAGE: gradlew [option...] [task...]

Context
To test command line applications, using the run task is more convenient that manually running java -jar with the proper classpath set to run the application. But for that run needs a way to pass command line arguments for the application.
Your Environment
Running Gradle 3.4.1 on Windows 10 64-bit.

Perhaps trivially solvable now with https://docs.gradle.org/4.6/release-notes.html#tasks-api-allows-custom-command-line-options? --args="-s -long", although that makes nested strings annoying but oh well...

Unfortunately, it's not as trivial as just adding the @Option annotation to a setter as the run task is created programmatically.


Opt out of Insights by MyAnalytics

This article states that you can opt out of MyAnalytics by selecting the option from Delve. However since Microsoft is broadly releasing the add-in to lower-tier licenses (e.g. Business premium, E1, E3, etc.) and ONLY the add-in, this option isn't available, because they don't have access to the MyAnalytics dashboard. How can such a user opt out of the data collection? I assume that disabling the add-in through OWA is not enough?

Thank you, SCS-sysadmin, for your comments and questions. All users at any license tier can opt out by changing the settings in the new Dashboard preview at https://myanalytics.microsoft.com.
To open the settings panel, select the gear icon in the upper right corner of the dashboard page; then, under “MyAnalytics,” click the word Settings. The steps to opt out are described in MyAnalytics dashboard (preview).


support sudo make uninstall

This features reduces the pain of having to remove the installed libraries and headers in /usr/local/ one by one.
Before this change, after sudo make install
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/lib/libgflags.a
-- Installing: /usr/local/lib/libgflags_nothreads.a
-- Installing: /usr/local/include/gflags/gflags.h
-- Installing: /usr/local/include/gflags/gflags_declare.h
-- Installing: /usr/local/include/gflags/gflags_completions.h
-- Installing: /usr/local/include/gflags/gflags_gflags.h
-- Installing: /usr/local/lib/cmake/gflags/gflags-config.cmake
-- Installing: /usr/local/lib/cmake/gflags/gflags-config-version.cmake
-- Old export file "/usr/local/lib/cmake/gflags/gflags-targets.cmake" will be replaced.  Removing files [/usr/local/lib/cmake/gflags/gflags-targets-release.cmake].
-- Installing: /usr/local/lib/cmake/gflags/gflags-targets.cmake
-- Installing: /usr/local/lib/cmake/gflags/gflags-targets-release.cmake
-- Installing: /usr/local/bin/gflags_completions.sh
-- Installing: /usr/local/lib/pkgconfig/gflags.pc
-- Installing: /home/jasjuang/.cmake/packages/gflags/e5f7ce61772240490d3164df06f58ce9

there is no easy ways to remove these files, but with this change we can simply type sudo make uninstall and
Scanning dependencies of target uninstall
/usr/local
-- Uninstalling /usr/local/lib/libgflags.a
-- Uninstalling /usr/local/lib/libgflags_nothreads.a
-- Uninstalling /usr/local/include/gflags/gflags.h
-- Uninstalling /usr/local/include/gflags/gflags_declare.h
-- Uninstalling /usr/local/include/gflags/gflags_completions.h
-- Uninstalling /usr/local/include/gflags/gflags_gflags.h
-- Uninstalling /usr/local/lib/cmake/gflags/gflags-config.cmake
-- Uninstalling /usr/local/lib/cmake/gflags/gflags-config-version.cmake
-- Uninstalling /usr/local/lib/cmake/gflags/gflags-targets.cmake
-- Uninstalling /usr/local/lib/cmake/gflags/gflags-targets-release.cmake
-- Uninstalling /usr/local/bin/gflags_completions.sh
-- Uninstalling /usr/local/lib/pkgconfig/gflags.pc
-- Uninstalling /home/jasjuang/.cmake/packages/gflags/e5f7ce61772240490d3164df06f58ce9
Built target uninstall

Thanks, note however that this requires you to keep the build tree around.
You may also check out this file of my CMake BASIS project modules. It contains code to also install the manifest of installed files next to the package configuration file, i.e., gflags-config.cmake in this case. A simple invocation of cmake with a -P script can then be used to remove the files also when the build tree has been deleted already. But given that gflags is more likely to be installed in a system location such as /usr/local by a binary package rather than from a custom source built, I don't think it's needed for this project. If you don't install gflags using a binary package manager, I would rather assume that the installation is skipped altogether and the library be linked statically instead or as part of your project installation to not cause troubles with official gflags binary packages...
So I guess this change is just a handy thing for developers while they test some code. Otherwise I don't see any good use case for it. Fine by me to merge it, though.

Actually, just a minor modification request. Could you move the cmake_uninstall.cmake.in template file to the cmake folder? Also, please format the snippet added to CMakeLists.txt in the same way as the rest of the CMake code in there for some consistency even if no coding style is documented.

Finally, please add the uninstall target only when NOT GFLAGS_IS_SUBPROJECT.

@schuhschuh Updated based on your comments. Not entirely sure what kind of coding style you are referring to, so I adjusted the indention and brackets a bit. Feel free to commit on top of this PR.


Trained weight

I appreciate your approach to share the code for this amazing paper. Would you be kind enough to share the trained weights of the model

@ShuvenduBikash Yes, we will upload the well trained models later.

Any updates?

@AidasK As soon as possible.

@LynnHo How long it takes for you to complete this training? Are you running on multiple GPU's?
I tried running 128 images and it takes 4-5s per step on Nvidia Tesla K80. So it should take 9472004 / 60 / 60 /24 ~= 9 days
Though quality is very low and I am wondering how long it should take with HD images 512x512 (80 days?)

@AidasK I train the 128x128 network on GTX 1080 Ti, about 1~2s per step and less than two days to finish the training. The largest size I have tried is 384x384, and the training can be stopped at 4~5 days. The well-trained models will be upload in this week. You can also try a smaller network for faster training.

@ShuvenduBikash @AidasK the well-trained models are available here, the 128x128 model is uploaded, and the 384x384 models will be uploaded later.

Thanks! Any success with 384x384?

384x384 results are far from good. Attributes such as glasses and bold hardly works. What do you think is the cause?

@AidasK bold and glasses are really hard for existing methods. I don't exactly know the true reason why these attributes are so hard, but I guess that it is caused by the need of large appearance modification to edit these attributes. Do you have any idea? Besides, the 384-hd model has been uploaded (need need HD-Celeba).

Maybe a loss function is not suitable for these attributes. I have modified this code a bit to be able to run it on any image and these are my results:
My image:

Random celebA hd image:

I am searching for a way how to achieve https://www.faceapp.com/ quality, but attgan is far far away from it. Maybe you know projects/papers who has achieved such results?

@AidasK Which model did you use? Did you give a correct attribute vector for your own image (it's very important)?
I have tried the faceapp just now. I am not sure but I think it deals different attributes with different models (AttGAN uses only one), maybe CycleGAN? The quality for smile and eyeglasses is good, but for the other attributes such as age, mustache and gender, I think AttGAN is actually better. AttGAN is a research paper, but I think AttGAN will also perform well on many attributes with engineering effort.
Here are some special papers for attribute editing:
1. Facelet-Bank - high resolution. Paper Code
2. ST-GAN - good for eyeglasses. Paper Code
They have superior advantages and quality on some aspects, but they also have much limitation. I know many other methods for attribute editing, but to my knowledge, none of them handle all attributes with pretty good quality. Facial attribute editing still needs research effort.
Papers I know:
GAN based:
1. Sparsely Grouped Multi-task Generative Adversarial Networks for Facial Attribute Manipulation
2. Mask-aware Photorealistic Face Attribute Manipulation
3. Composable Unpaired Image to Image Translation
4. Modular Generative Adversarial Networks
5. RSGAN: Face Swapping and Editing using Face and Hair Representation in Latent Spaces
6. ELEGANT: Exchanging Latent Encodings with GAN for Transferring Multiple Face Attributes
7. Image Generation and Translation with Disentangled Representations
8. StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation
9. Learning Compositional Visual Concepts with Mutual Consistency
10. DNA-GAN: Learning Disentangled Representations from Multi-Attribute Images
11. Unsupervised Visual Attribute Transfer with Reconfigurable Generative Adversarial Networks
12. Fader Networks: Manipulating Images by Sliding Attributes
13. GeneGAN: Learning Object Transfiguration and Attribute Subspace from Unpaired Data
14. Unsupervised Image-to-Image Translation Networks
15. Learning Residual Images for Face Attribute Manipulation
16. Deep Identity-aware Transfer of Facial Attributes
17. Invertible Conditional GANs for image editing
18. Autoencoding beyond pixels using a learned similarity metric
Others:
1. Facelet-Bank for Fast Portrait Manipulation
2. Deep Feature Interpolation for Image Content Changes
3. Convolutional Network for Attribute-driven and Identity-preserving Human Face Generation

Thanks for this huge list, found some new stuff. I have tried Facelet-Bank before and it's as close as it gets to faceapp features.
And yes, I did some experiments with attributes. It has a huge impact on image quality, but it's still far from good. Also tried different face alignment, but situation doesn't change much.


CANBERRA

Hey mate love the idea. Great job executing it. Can you please add Conder, Gordon, Calwell and Casey in ACT. I noticed Banks is already in the results list :) cheers.

Hey @LukePrior just curious, noticed the ACT Suburbs have shown up in the all_suburbs.json. Does this mean they should now show up in lukeprior.github.io? Or do they still need to be added to the results/ACT folder / results.json? Cheers!

The suburbs are being added in the order they appear in this file: https://github.com/LukePrior/nbn-upgrade-map/blob/main/results/suburbs.json#L1542
This is the current progress
Progress vs Listed Suburbs:
ACT: 1 / 18  (5.6%)
NSW: 279 / 473  (59.0%)
NT: 0 / 13  (0.0%)
QLD: 3 / 386  (0.8%)
SA: 0 / 151  (0.0%)
TAS: 0 / 31  (0.0%)
VIC: 2 / 247  (0.8%)
WA: 0 / 224  (0.0%)
TOTAL: 285 / 1543  (18.5%)

done


fix(nodejs): compatible with Windows builds

closes #131

Should we rename the previous binaries? That way we don't have to do a re-release now


What after getting 429 error.

Hello,
I am getting 429 request limit error. After how many time I can re-request for translation. When this error gone ?

Hello,
let me start with a clarification: DeepLy is a client for the DeepL.com translation API. The limit is set by the API, not by the client.
Here is what the official API documentation has to say about that topic:
https://www.deepl.com/api.html

Code 429 Description Too many requests. Please wait and send your request once again.

Please ensure your client does not exceed the limits as specified in the quota documentation delivered to you. Your client should be prepared to back-off if you receive the HTTP response code 429 and retry the request later.

I asume if you use "DeepL Pro" (their premium service) you will get that "quota documentation" that specifies the request limits.
IF you do not use "DeepL Pro" the request limit is unknown.

After how many time I can retry for translation

Again, that remeains unknown since DeepL has not released any information about this topic. (At least not in their official API documentation.)
I would like to give you a better answer but I do not work for DeepL.

Ok thanks man.


Either way it's working for now. I'll reopen if I see it again


Optional ranges for dynamic nginx proxy-ing multiple services.

We have an application where we want to proxy multiple services dynamically based on etcd keys. At any given time the etcd keys may exist for one service but not the other. When not all keys are present one of the following tmpl blocks will fail and no configuration gets written so no service gets proxied. I tried using the 'exists'  but it does not seem to handle wildcards. Inside the poolone directory will be a hostname/ip which won't be known by anyone but the service itself. These blocks work fine when all the keys are present but we would like to write an empty block for any pool that does not have any keys yet. Is there a way to accomplish this?
upstream pool-one {
{{ range $server := getvs "/services/hosts/poolone/*" }}
server {{ $server }};
{{ end }}
}
upstream pool-two {
{{ range $server := getvs "/services/hosts/pooltwo/*" }}
server {{ $server }};
{{ end }}
}
Thanks...

@jeff-johnston there's an example in the integration test suite: https://github.com/kelseyhightower/confd/blob/master/integration/confdir/templates/iteration.conf.tmpl#L1-L5

Than you. While the "gets" in that pattern works also "if" all the configuration is set for both pools. It still fails and the template never gets written to destination if the in my test case there are etcd keys for poolone but no etcd keys for pooltwo. The problem isn't retrieving the values - the problem is that if no values exist confd won't keep going which is what we need to happen. Is there any way around that?

On 12 January 2015 at 21:35, jeff-johnston<EMAIL_ADDRESS>wrote:

Than you. While the "gets" in that pattern works also "if" all the
configuration is set for both pools. It still fails and the template never
gets written to destination if the in my test case there are etcd keys for
poolone but no etcd keys for pooltwo. The problem isn't retrieving the
values - the problem is that if no values exist confd won't keep going
which is what we need to happen. Is there any way around that?

Hi Jeff,
Here is a snippet that I use for haproxy which I think does what you need.
I use "if ls /resource" to test if the key exists, and do a gets, otherwise
I write out a dummy line.
{{ if ls "/servers/pbxadmin"}}{{range gets "/servers/pbxadmin/*"}}server {{
base  .Key }} {{.Value}} cookie {{ base .Key}} check
{{end}}{{else}}server dummy <IP_ADDRESS>:88888 backup{{end}}
Hope this helps.
-Barry Flanagan

I think @flantel's snippet solves this problem quite nicely.
@jeff-johnston does that work for you?

Yes I was able to get this working using the conditional if approach. Problem solved. Thx


node-rdkafka 0.8.0 fails to connect because of SASL Handshake not supported by broker

I wanted to upgrade the node.js sample to the most up to date version (0.8.0) of node-rdkafka but it seems there has been an incompatible change in the way how SASL authentication is handle. It produces the following error:
{ severity: 3,   fac: 'FAIL',   message: '[thrd:sasl_ssl://kafka05-prod01.messagehub.services.us-south.bluemix.]: sasl_ssl://kafka05-prod01.messagehub.services.us-south.bluemix.net:9093/bootstrap: Failed to initialize SASL authentication: SASL Handshake not supported by broker (required by mechanism PLAIN): try api.version.request=true' }

Ok the solution seems to be to change the parameter a bit to the following:
'metadata.broker.list': opts.brokers,
'security.protocol': 'SASL_SSL',
'ssl.ca.location': opts.calocation,
'sasl.mechanisms': 'PLAIN',
'sasl.username': opts.username,
'sasl.password': opts.password,
'api.version.request': true
then it works.

Yes we plan to update our sample app in the next few weeks.
Is there a particular feature you need from node-rdkafka 0.8 ? If not, we recommend you stick with 0.6.3  for now as it's the version we've tested the most.

@mimaison Thanks for the answer. Not specifically I was just using node-rdkafka and did not take a look which version you used, so I was confused when it did not work :)
But it seems that:
'metadata.broker.list': opts.brokers,
'security.protocol': 'SASL_SSL',
'ssl.ca.location': opts.calocation,
'sasl.mechanisms': 'PLAIN',
'sasl.username': opts.username,
'sasl.password': opts.password,
'api.version.request': true
works. But also the structure of the message object has change.

@dennisseidel We've now updated the Nodejs sample to run the latest node-rdkafka (0.10).
Closing this, if you still have issues, feel free to re-open


null check inside append()

Hey,
Can we get a null check or an undefined check on the value param inside the FormData.prototype.append function please?
/lib/form_data.js:25
if (typeof value == undefined)
{
    this._error(new Error('Undefined values are not supported.'));
    return;
}

Otherwise you end up with an uncaught exception inside of FormData.prototype._multiPartHeader on line 151
Cheers

@mavrik in @2.0 we are going to String all values in am effort to make the api symmetrical to the browser api which will fix this issue.

@alexindigo I think we should update this sooner than later, what's your thoughts?

how is this going on ?

Going to close this as a duplicate of https://github.com/form-data/form-data/issues/137.
Hope to tackle this soon.


 I did edit the main page to show the correct data pulled from firestore, without it having to be manually set. I slapped a temporary log out button in the footer because I removed the other one, do what you will with it. Otherwise, I don't know what and how you have changed things

Change-log of only the things I can remember off the top of my head

Footer login/logout changes
Responsiveness
Fixed width bugs
Added descriptions n' stuff
I kind of give up changelogs are too much work


Add the ability to prevent elements from the showing up in legend and tool-tip

As the title suggests, we're trying to prevent specific series from showing up in the legend and too-tips.
This patch allows series to be hidden from these when their names are set null via the data_names option.
I'll be happy to update the patch if there's an alternative approach that's preferred.

LGTM. Thanks!


docs/gh-pages

Issue# 170: This contains the first version of the GitHub Pages site. It's written with Hugo V 0.29 and uses the Hugo Material Docs Theme and is placed inside of the docs folder, and then into a gh-pages folder, i.e. /docs/gh-pages. The build command is simply hugo
My first PR was done incorrectly, so I was instructed by @zhakkarn to create another one directly to master (since it is for the docs/gh-pages website and won't break any code). Please forgive me if I misunderstood the instructions, but I basically copied the master branch, and simply added the gh-pages folder to the docs folder so the site can be ran with GitHub Pages.

This PR is made of 2 two commits. "Working site" which is the change you proposed last time in which you propose to delete the whole app and put your gh-pages in the root folder of the project. And "initial commit" which put the project back to its place and add the gh-pages in the docs folder. It effectively cancels out. But you can see a git tree as a state tree in which every node is a state of the application and if I merge this PR, even though it corrects itself, we would have a commit/node in which the application would be just not there.
Anyway, I feel like I'm nitpicking. I'll just squash your commits before mergin and it will be all good.

@zhakkarn Sorry for not catching that extra commit, and thank you again for the guidance!


Retrieve refreshable credentials as a set to avoid auth failures when refresh happens in the middle of auth signing process.

There is currently a problem that can be triggered during refresh time using refreshable credentials.
Because multiple properties (access key/secret key/token) of the credentials are accessed independently for the signing process and each access can trigger a refresh for that property we can end up signing our request with inconsistent values. IE an access key from the previous set and a secret and/or token from the refreshed set.
This addresses that issue by retrieving the credentials as a set (and triggering a refresh if necessary) and using that consistent set during the signing process.

Taking a look.  I think the approach looks good.  The one change I'd like to make before merging is to come up with a consistent approach for both temporary vs. permanent credentials so we can always use the same code path.

Thanks for the pull request.  I made some modifications to this PR.  It was still possible to trigger a (much smaller) race condition with this current approach.  I've built on your original commit here: https://github.com/boto/botocore/pull/790
Closing in favor of #790.


Weird behavior with long-running bi-directional streaming calls

Hi all, I'm experiencing weird behavior and would appreciate any hints on how to troubleshoot it. In short, client <=> server communication is based on long running bi-directional streaming calls which sometimes behave in the following way:
Server 'complete' streaming calls (await requestStream.MoveNext returns false) while from the client prospective everything is ok (client's streaming calls not aborted/finished).
Server keeps awaiting for requestStream.MoveNext while from the client prospective communication is aborted
Any hints on how to troubleshoot it?
Client's keepalive settings:
grpc.keepalive_time_ms = 2000
grpc.keepalive_timeout_ms = 10000
grpc.keepalive_permit_without_calls = 1
grpc.http2.max_pings_without_data = 0
grpc.max_receive_message_length = -1
grpc.max_receive_message_length = -1
Server's:
grpc.keepalive_time_ms = 2000
grpc.keepalive_timeout_ms = 10000
grpc.keepalive_permit_without_calls = 1
grpc.http2.max_pings_without_data = 0
grpc.enable_deadline_checking = 1
grpc.max_receive_message_length = -1
grpc.max_send_message_length = -1
grpc.http2.min_time_between_pings_ms = 2000

Seems similar to my issue: https://stackoverflow.com/questions/68125892/grpc-server-streaming-rpc-is-finished-before-cancellation

@ElderOrb is this still an issue?  If so can you please provide some more information so that we can try and help.
The stackoverflow question you linked to no longer exists.

Can you provide information about your environment (gRPC version, OS version, .NET version, etc)
Is there a simple way to reproduce the problem?  Providing a simple example would be helpful  (e.g. in a public github repo).
Are there firewalls between the client and server?

For some troubleshooting tips including how to turn on tracing can be found in:
https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md


Project export fails when materials use Max procedural textures

No appleseed project file is exported when the scene contains materials with MAX procedural textures assigned even though the scene renders without issue inside MAX (see screenshot)
I'm not sure if this is a bug of the current exporter or a feature which is not implemented. In the test scene I assigned two different substance materials which generate the textures for the appleseed DisneyMtl internally.
Screenshot attached:

@usakhelo Can we disable (gray out) exporting when Use Max Procedural Maps is checked?

I think we can.

A quick fix would be to change the text next to the checkbox from "use Max Procedural Maps (non-compatible mode)" to "use Max Procedural Maps (disables scene export)"

@Mango-3 Totally! I never liked that "non-compatible mode" mention, non-compatible with what? I much prefer "disables scene export". We should do both: the mention and actually graying out export options.
Thnaks for your input!

Nicely done Sergo! Much less confusing now.


Fund fund fund

resolves https://github.com/itchysats/itchysats/issues/1165
resolves https://github.com/itchysats/itchysats/issues/1164
resolves https://github.com/itchysats/itchysats/issues/1175
Needs some more testing and rebase

One more note:
I think my changes to OpeningFee are another breaking API change and we will have to adapt the automation when creating an offer.

One more note:
I think my changes to OpeningFee are another breaking API change and we will have to adapt the automation when creating an offer.

if it's still optional we won't have too adapt automation, unless we want to use it :) I don't think the automation uses opening fees yet (they've landed quite recently, after recent adjustments there!)

I added two more tests that show a rountrip so one can see complete examples. It helps my understanding.

bors r+


Blacklist items?

Hi, i was wondering if there is a way for me to blacklist items from TIAB being applied to them.
Thanks.

There is a way on 1.20.6+ -> https://github.com/RealMangorage/time-in-a-bottle/blob/1.21/common/src/main/resources/data/tiab/tags/block/un_acceleratable.json