[Azure Event Hub] Event Message with Partition Key is Null from kafkacat

azure-eventhub:
5.4.0:
MacOS:
3.8.7:

Describe the bug
After using azure-eventhub package to produce message with partitionKey, using azure-eventhub package to consume the message shows the body and partition_key in the event. But using kafkacat to consume the topic shows null/empty key for the message.
To Reproduce
Steps to reproduce the behavior:

Use azure-eventhub to produce message:

    event_data_batch_with_partition_key = producer.create_batch(partition_key='key1')     event_data_batch_with_partition_key.add( EventData(msg))     producer.send_batch(event_data_batch_with_partition_key)

use azure-eventhub to consume the message

  async def on_event(partition_context, event):     logging.info(f'event {event}')
the consumer log shows the event message with body, partition_key, and other fields, e.g
event { body: '{"name": "myname", "data": "msg 18"}', offset:<PHONE_NUMBER>68, sequence_number: 66430, partition_key=b'key1', enqueued_time=datetime.datetime(2021, 4, 30, 19, 41, 19, 410000, tzinfo=datetime.timezone.utc) }

use kafkacat to consume the topic:

kafkacat  -b $BROKER -t $TOPIC  -f '\n%t Key (%K bytes): %k :\nValue (%S bytes): %s\n%T \Partition: %p\tOffset: %o\n--\n' -o end
kafkacat consumes the msg with empty/null key:
mytopic Key (-1 bytes):  : Value (36 bytes): {"name": "myname", "data": "msg 18"}<PHONE_NUMBER>410 Partition: 1	Offset: 66430

similar result with empty key by using kakfa library e.g https://github.com/Shopify/sarama

Expected behavior

the msg partitionKey is visible and available for kafkacat (or other kafka consumers)

Screenshots
Additional context

@chongzhang , thanks for reaching out.
as far as I know, the partition_key is used by the service to decide partition, but I'm not sure whether or not the service would set the kafka message key using the partition_key.
hey @serkantkaraca , could you help give some more context on this one?

@yunhaoling
I did another test to use https://pypi.org/project/kafka-python/ 2.0.2 to produce msg with key:
    producer.send('mytopic', key='key1, value=msg)

from kafka-python consumer

    for msg in consumer:         logging.info('{} {} {} {}'.format(msg.partition, msg.offset, msg.key, msg.value))
the log shows the msg.key:
0 67212 b'key1' b'{"data": "msg 1"}'

similar with kafkacat and sarama consumer, which both print out the key (also offset and value fields).

The azure-eventhub consumer doesn't have the partition_key:

event { body: '{"data": "msg 1"}', properties: {}, offset:<PHONE_NUMBER>24, sequence_number: 67212, enqueued_time=datetime.datetime(2021, 5, 6, 18, 1, 51, 674000, tzinfo=datetime.timezone.utc) }

thanks for more information! yeah, this makes me further wonder whether the PartitionKey concept in Event Hub and Key concept in Kafka are the same thing -- apologize that I didn't have enough background to answer it.
I've looped in the service team to help answer your question.

Hi @yunhaoling, any update on this with service team?

Can you examine the messages with Service Bus Explorer and see if partition keys are present? Better to pinpoint whether the issue is on the producer side or the consumer side.

I have tried the confluent-kafka python sdk to send and receive events by following azure-event-hubs-for-kafka python sample.
I'm using the following steps to check the behavior difference between kafka sdk and python event hub sdk:
Step1. check kafka producer and consumer behavior on message key
The confluent-kafka producer and consumer sample are good with message key -- I have tweaked the producer.py and consumer.py in the confluent-kafka sample to set and get message key.
# on the producer, produce message with key-value pair
p.produce(topic, key='partition key', value=str(i), callback=delivery_callback)

# on the consumer side, print out the key-value pari
print(msg.key())
print(msg.value())

Step2. Use ServiceBusExplorer to check whether partition key is populated.
No, the partition key is NOT showing up in the explorer

Step3. receive the events sent by kafka sdk by python eventhub sdk
the received event doesn't have a partition key -- the python eventhub sdk inspect the "x-opt-partition-key" entry in the internal amqp message annotation.
however, the internal amqp message annotation contains an entry "x-opt-kafka-key" and the value is exactly the key set by the kafka producer.

@serkantkaraca , looks like "x-opt-partition-key" and "x-opt-kafka-key" are treated differently, is this a by-design difference?

Hi, is there any update on this?

hey @chongzhang , confirmed with @serkantkaraca that x-opt-kafka-key (which is set when event is sent by kafka sdk) is not used as partition key in the Event Hubs Service, so it is an expected behavior.
hey @hmlam do you have any thoughts on this issue? is there anything we could or should do on the service/sdk side or we handover it to the kafka developer?

hey @chongzhang, I have discussed with the service team. The summary is as follows:

The partition key of the EventHubs event is available in the kafka record headers, the protocol specific key being "x-opt-partition-key" in the header.
It is by-design that we don't promote the Kafka message key to be the Event Hubs partition key and nor the reverse because with the same value the Kafka client and the EH client likely send the message to two different partitions. It might cause some confusion if we set the value in the cross protocol communication case. Exposing the properties with a protocol specific key to the other protocol client should be good enough.
We should document it clearly for this scenario and will improve on the documentations.

Please let me know if you have any other questions and really appreciate your feedbacks!

@yunhaoling Thanks for your detail info.

For producer, my understanding is that in order for different languages/libraries to send same msg to same partition, they should use custom hash partitioner function to make sure that the same msg maps to same partition id.  Could you share some info on what hash function EH client uses to map the key to partition id, or how to provide custom partitioner?

For consumer, the msg Headers could have the msg key, but it's not standardized, so it would be great if EH consumer client can return msg key based on the 'x-opt-partition-key' or 'key' in the header.

Thanks again for your help!

You can print the partition key via message headers as below.
Formatting
Headers: %h
Sample output
Headers: x-opt-partition-key=�↑this-is-my-partition-key,

@chongzhang If we use the same key across multiple SDKs, messages go to the same partition as the hashing happens at the service side.

@kasun04 thanks! Just to clarify, what do you mean on "multiple SDKs"? I thought Adam @yunhaoling mentioned above that "because with the same value the Kafka client and the EH client likely send the message to two different partitions".

I was referring to using same partition keys from SDKs for different languages.


[irrlicht] Add OSX support

Add missing (or rather violently manually disabled) support for OSX host systems, since Irrlicht natively supports OSX, being a cross-platform 3D engine.

What does your PR fix?

Add missing platform support.

Which triplets are supported/not supported? Have you updated the CI baseline?

Tested successfully on OSX Big Sur

Does your PR follow the maintainer guide?

Yes

Could you please remove irrlicht:x64-osx=fail in ci.baseline.txt?
https://github.com/microsoft/vcpkg/blob/d2717c38db071506b13f9b0afb41a96e92bf6959/scripts/ci.baseline.txt#L490
Seems you forgot to update this file https://github.com/microsoft/vcpkg/blob/master/versions/baseline.json.

Related issue #15011

Have you tested these features in this PR?

Yes, as I have mentioned in the PR description, OSX Big Sur ✔
Additionally, just tested on Windows 10, ✔

qt5-3d failed on x64-osx:
ERROR: Feature 'system-assimp' was enabled, but the pre-condition 'features.assimp && libs.assimp' failed.
Could you please look into this?

I saw qt5-3d failing yesterday, thought it was some infrastructure issue - it has nothing to do with Irrlicht, really...

Okay, figured it out: the issue is in the qt5-3d port itself - it carelessly tries to link -lGL -lX11 -lXxf86vm on non-windows platforms. This fails on OSX.
if(VCPKG_TARGET_IS_WINDOWS)
    set(SYSTEM_LIBS "Advapi32.lib user32.lib gdi32.lib")
else()
    set(SYSTEM_LIBS "-lGL -lXxf86vm -lX11")
endif()

Hence adding the patch for that one too:
if(VCPKG_TARGET_IS_WINDOWS)
    set(SYSTEM_LIBS "Advapi32.lib user32.lib gdi32.lib")
elseif(VCPKG_TARGET_IS_OSX)
    set(SYSTEM_LIBS "-framework OpenGL -framework IOKit -framework Cocoa -framework Carbon -framework AppKit")
else()
    set(SYSTEM_LIBS "-lGL -lXxf86vm -lX11")
endif()

Makes sense, but this change added a new version to the versions/q-/qt5-3d.json - should there be just one?

Makes sense, but this change added a new version to the versions/q-/qt5-3d.json - should there be just one?

Yes, there should be just new one added.
Note: Sorry for my wrong operation. I should add comment in a new line instead of editing your content.

LGTM now, thanks for your fixing @shybovycha.


Finalize upwinding in MOLFiniteDifference

This requires a rule application so that the substitution can look for an arbitrary a *D(u) and rewrite with a . Almost working code is there as a comment:
        forward_weights(i,j) = DiffEqOperators.calculate_weights(discretization.upwind_order, 0.0, [space[j][i[j]],space[j][i[j]+1]])
        reverse_weights(i,j) = DiffEqOperators.calculate_weights(discretization.upwind_order, 0.0, [space[j][i[j]-1],space[j][i[j]]])
        upwinding_rules = [@rule(*(~~a,(Differential(nottime[j]))(u),~~b) => IfElse.ifelse(*(~~a..., ~~b...,)>0,
                                *(~~a..., ~~b..., dot(reverse_weights(i,j),depvars[k][central_neighbor_idxs(i,j)[1:2]])),
                                *(~~a..., ~~b..., dot(forward_weights(i,j),depvars[k][central_neighbor_idxs(i,j)[2:3]]))))
                                for j in 1:length(nottime), k in 1:length(pdesys.depvars)]

but this requires an additional feature in the SymbolicUtils rules for interpolation into rules.
@shashi @YingboMa

I'm working on this now, trying to ensure that upwind differences are only using the correct boundary conditions. The problem is that depending on the winding direction different BCs will be used. I can capture this with IfElse, true including an interior equation and false including the BC, but this raises an issue if there are higher order derivative terms which might need the boundary equation.
How do I ensure that the system is not overdetermined? One solution might be to substitute in boundary equations where needed by solving for the ghost node premptively, but this limits boundary conditions to being linear as this is all Symbolics.solve_for can handle.
An alternative might be to reduce the size of the interior, as mentioned here: https://github.com/SciML/DiffEqOperators.jl/pull/382#issuecomment-828728351

This turned out to be a non issue, Upwinding now works at  first order but there is still instability at higher order


[SPARK-26080][PYTHON] Disable 'spark.executor.pyspark.memory' always on Windows

What changes were proposed in this pull request?
resource package is a Unix specific package. See https://docs.python.org/2/library/resource.html and https://docs.python.org/3/library/resource.html.
Note that we document Windows support:

Spark runs on both Windows and UNIX-like systems (e.g. Linux, Mac OS).

This should be backported into branch-2.4 to restore Windows support in Spark 2.4.1.
How was this patch tested?
Manually mocking the changed logics.

cc @rdblue, @vanzin and @haydenjeune

Test build #98892 has started for PR 23055 at commit 2d3315a.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/5065/
Test PASSed.

Test build #98892 has finished for PR 23055 at commit 2d3315a.

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

Merged build finished. Test PASSed.

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

Test build #98952 has started for PR 23055 at commit 52a91cc.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/5102/
Test PASSed.

Test build #98952 has finished for PR 23055 at commit 52a91cc.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

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

retest this please

Test build #98962 has started for PR 23055 at commit 52a91cc.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/5109/
Test FAILed.

Test build #98962 has finished for PR 23055 at commit 52a91cc.

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

Merged build finished. Test PASSed.

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

adding @BryanCutler and @ueshin as well FYI.

btw, there is a typo: a Unit specific package, in the PR description.

Retest this please.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/5226/
Test PASSed.

Test build #99120 has started for PR 23055 at commit 52a91cc.

Test build #99120 has finished for PR 23055 at commit 52a91cc.

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

Merged build finished. Test PASSed.

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

Test build #99148 has started for PR 23055 at commit fd92a4e.

Sorry, may I ask to take another look please? I thought it's quite a straightforward fix by a consistent way of fixing.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/5252/
Test PASSed.

Test build #99148 has finished for PR 23055 at commit fd92a4e.

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

Merged build finished. Test PASSed.

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

retest this please

Let me get this in in few days if there are no more comments.

Test build #99278 has started for PR 23055 at commit fd92a4e.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/5361/
Test PASSed.

Test build #99278 has finished for PR 23055 at commit fd92a4e.

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

Merged build finished. Test PASSed.

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

Test build #99491 has started for PR 23055 at commit bd1acf2.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/5557/
Test PASSed.

Merged build finished. Test PASSed.

Test build #99490 has finished for PR 23055 at commit 741d64a.

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

Merged build finished. Test PASSed.

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

Test build #99491 has finished for PR 23055 at commit bd1acf2.

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

Merged build finished. Test PASSed.

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

+1 once the docs are updated to note that resource requests still include python memory, even in Windows.

@vanzin and @rdblue, I updated the doc because it sounds not wrong to me. But, for clarification, we shouldn't really document we support something that's not tested (in particular such case above that the failure case was found). Also, IMHO, it's better to make it simple when there's Windows issue in terms of maintenance since not so many Windows maintainers exist in Spark.
The main functionality of that configuration is limiting resource if i'm not mistaken. The allocation ones in other modes is secondary if I am not mistaken. Technically someone should test it and fix the doc with showing how it works in another PR.

Test build #99531 has finished for PR 23055 at commit 5fe1c09.

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

Merged build finished. Test PASSed.

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

+1 with the latest changes. Thanks for taking care of this, @HyukjinKwon!
Functionality is in two parts: changing the resource requests (which doesn't change) and limiting memory use in python.
It is too bad that this broke, but I'm not sure how to deal with a platform that, as you say, has few contributors. I certainly wouldn't want to gate a feature like this on making sure someone tested it in Windows, unless we have CI set up for Windows builds.

Thanks, @rdblue.
Merged to master and branch-2.4.

@HyukjinKwon, for the future, I should note that I'm not a committer so my +1 for a PR is not binding. I'm fairly sure @vanzin would +1 this commit as well, but it's best not to merge based on my approval.

(Belated +1.) Doc update looks fine. The previous one was misleading for reasons that Ryan explains above, it has nothing to do with whether it's Windows or not.

Last comment was a minor comment for a doc - actually the whole point was a minor one. It does related with Windows.

I am new to this. So this may be a simple/stupid question. When is this fix getting released? I suppose this fix is planned for Apache Spark 2.4.1 build which is not available for download at the moment. If i need this fix (even if its not a stable release) how do i get 2.4.1 binaries?

@manojfaria , this fix will be in the 2.4.1 and 3.0.0 releases, see SPARK-26080. If you want it before then, you will have to apply the patch and build Spark yourself. The patch can be downloaded by adding a .diff to the pull request link. Hope that helps!

@HyukjinKwon thanks for the fix. Workers run well with 2.4.0 now.


:scroll: Update ETL docs

Uh, I didn't mean to assign you as a reviewer before finishing it. I've added a couple more sections. I'm gonna merge it tomorrow if you don't object. Feel free to improve it as you like!


GSB(SR-10483): Prioritize synthetic superclass requirements

Resolves SR-10483.
Why was this happening?
class A: P {} // error: type 'A' does not conform to protocol 'P'
protocol P: A {
  func foo()
}
extension P {
  func foo() {}
}

For any conformer B :  B: A, the RequirementEnvironment initializer adds a synthetic t_0_0: B constraint with an explicit requirement source kind and the GSB naturally derives t_0_0: A from t_0_0: P later on. This works fine when A != B because the derived t_0_0: A requirement gets filtered out, leaving us with the desired t_0_0: B. As for A == B , we get 2 t_0_0: A constraints that end up killing each other:

a derived requirement is always preferred over an explicit one when the types involved match.
the remaining derived requirement gets filtered out during enumeration.

This patch introduces a syntheticRequirement flag for *RequirementSource to allow for prioritizing requirement sources for synthetic constraints.
cc @slavapestov

I think @DougGregor should review this.

I'd be nice to have this fixed in 5.1. Do we roughly know how much time we have before the release?

@DougGregor Reminder

@DougGregor Reminder..

@DougGregor Is there anyone else we can ask to review this?

@DougGregor Does this look better?

Reminder

@DougGregor Hi Doug. It happens this particular bug can also be solved by simply adding the covariant Self as a SameType requirement instead of Superclass. I know this makes Self concrete in a sense, but since we have a concrete conformer, I suppose the GSB would still be able to make correct assumptions. However, this breaks a couple of SILGen tests, and I'm afraid it could also break the Standard Library's ABI. Could you give me some expertise on this?

Can one of the admins verify this patch?

@DougGregor If you are still too busy, is there anyone else qualified to take on the review?

Please update the base branch to main by Oct 5th otherwise the pull request will be closed automatically.

How to change the base branch: (Link)
More detail about the branch update: (Link)


Add make ocamlfind-install to parser Makefile

When I added flow_parser.0.32.0 to opam (https://github.com/ocaml/opam-repository/pull/7348), I promised that I would add do this in time for 0.33.0. Then I forgot. Whoops.
Basically, this saves us from having a really gross opam file. The small downside is that this is one more place where we need to bump the version.
To test I did
$ make ocamlfind-install
ocamlbuild parser_flow.cma parser_flow.cmxa
Finished, 25 targets (25 cached) in 00:00:00.
ocamlfind install flow_parser META \
		_build/parser_flow.a \
		_build/parser_flow.cma \
		_build/parser_flow.cmxa \
		_build/*.cmi
Installed /Users/glevi/.opam/4.02.1/lib/flow_parser/spider_monkey_ast.cmi
Installed /Users/glevi/.opam/4.02.1/lib/flow_parser/parser_flow.cmi
Installed /Users/glevi/.opam/4.02.1/lib/flow_parser/parser_env.cmi
Installed /Users/glevi/.opam/4.02.1/lib/flow_parser/parse_error.cmi
Installed /Users/glevi/.opam/4.02.1/lib/flow_parser/loc.cmi
Installed /Users/glevi/.opam/4.02.1/lib/flow_parser/lexer_flow.cmi
Installed /Users/glevi/.opam/4.02.1/lib/flow_parser/parser_flow.cmxa
Installed /Users/glevi/.opam/4.02.1/lib/flow_parser/parser_flow.cma
Installed /Users/glevi/.opam/4.02.1/lib/flow_parser/parser_flow.a
Installed /Users/glevi/.opam/4.02.1/lib/flow_parser/META
glevi-mbp15r:parser glevi$ ocaml
        OCaml version 4.02.1

# #use "topfind";;
- : unit = ()
Findlib has been successfully loaded. Additional directives:
  #require "package";;      to load a package
  #list;;                   to list the available packages
  #camlp4o;;                to load camlp4 (standard syntax)
  #camlp4r;;                to load camlp4 (revised syntax)
  #predicates "p,q,...";;   to set these predicates
  Topfind.reset();;         to force that packages will be reloaded
  #thread;;                 to enable threads

- : unit = ()
# #require "flow_parser";;
/Users/glevi/.opam/4.02.1/lib/flow_parser: added to search path
/Users/glevi/.opam/4.02.1/lib/flow_parser/parser_flow.cma: loaded
# Parser_flow.program "1+1";;
- : Parser_flow.Ast.program * (Loc.t * Parser_flow.Error.t) list =
(({Loc.source = None; start = {Loc.line = 1; column = 0; offset = 0};
   _end = {Loc.line = 1; column = 3; offset = 3}},
  [({Loc.source = None; start = {Loc.line = 1; column = 0; offset = 0};
     _end = {Loc.line = 1; column = 3; offset = 3}},
    Parser_flow.Ast.Statement.Expression
     {Parser_flow.Ast.Statement.Expression.expression =
       ({Loc.source = None; start = {Loc.line = 1; column = 0; offset = 0};
         _end = {Loc.line = 1; column = 3; offset = 3}},
        Parser_flow.Ast.Expression.Binary
         {Parser_flow.Ast.Expression.Binary.operator =
           Parser_flow.Ast.Expression.Binary.Plus;
          left =
           ({Loc.source = None;
             start = {Loc.line = 1; column = 0; offset = 0};
             _end = {Loc.line = 1; column = 1; offset = 1}},
            Parser_flow.Ast.Expression.Literal
             {Parser_flow.Ast.Literal.value =
               Parser_flow.Ast.Literal.Number 1.;
              raw = "1"});
          right =
           ({Loc.source = None;
             start = {Loc.line = 1; column = 2; offset = 2};
             _end = {Loc.line = 1; column = 3; offset = 3}},
            Parser_flow.Ast.Expression.Literal
             {Parser_flow.Ast.Literal.value =
               Parser_flow.Ast.Literal.Number 1.;
              raw = "1"})})})],
  []),
 [])
# ^D

i've seen packages that generate META. that would avoid having to bump its version.


fix: allow reserved names in the experimental parser.

The experimental parser is too strict regarding reserved names in the parse, specifically in metadata and parameter metadata sections, where keys are allowed to be reserved names.
This commit fixes the parser to accept reserved names in addition to identifiers; the places where reserved names are not allowed will be checked during (forthcoming) validation of the tree instead.
This also fixes the incorrect recovery in metadata sections which might cause an infinite loop: the recovery was incorrectly set to recover at a value instead of any identifier, which meant that recovery would move to a token that would immediately fail, recovery would then not move, and the cycle would repeat.
Added tests for both problems.
Additionally the NameNode and QualifiedNameNode nodes have been removed from the tree in favor of simply looking for "any identifier token child" in the forthcoming AST.
Before submitting this PR, please make sure:

[x] You have added a few sentences describing the PR here.
[x] You have added yourself or the appropriate individual as the assignee.
[x] You have added at least one relevant code reviewer to the PR.
[x] Your code builds clean without any errors or warnings.
[x] You have added tests (when appropriate).
[x] You have updated the README or other documentation to account for these
changes (when appropriate).
[x] You have added an entry to the relevant CHANGELOG.md (see
"keep a changelog" for more information).

Additionally the NameNode and QualifiedNameNode nodes have been removed from the tree in favor of simply looking for "any identifier token child" in the forthcoming AST.

Can you elaborate on this? Won't this make resolving namespaces more difficult, as instead of a QualifiedNameNode, we will have to peek() for Dot and then do some kind of join on following Ident tokens?

Can you elaborate on this? Won't this make resolving namespaces more difficult, as instead of a QualifiedNameNode, we will have to peek() for Dot and then do some kind of join on following Ident tokens?

The plan is to have a task method on the CallStatement AST node that returns (Option<Ident>, Ident), where the first is the namespace and the second is the task name.
It will accomplish this by finding the first child ident token; it will then look for one more ident token child. If only one was found, it'll return (None, task); if both are found, it'll return (Some(namespace), task).
If we kept it as-is, the search for the two child tokens still occurs, it would just happen in a QualifiedName type rather than the CallStatement type, which would instead have a name method that returns QualifiedName.
This change simply reduces the depth of the tree slightly, as it isn't really needed.

I'll also add that peek()ing will no longer be necessary as we've already constructed the CST from the input.
The forthcoming AST representation is a facade over the CST which knows how to navigate the tree to extract only semantically relevant information; users of the AST won't need to navigate the CST in most cases (an exception would be a lint rule that wants to see if the document ends with a newline; that's not represented in the AST, but one can easily answer that question from the CST).


Document article-sort-order default and explain it better

ce2e53a80f186b521fb6c4096a74ea5869826d24 introduced an
article-sort-order setting, adding ways to sort by fields other than
the date. For unspecified reason, the default order for the new fields
was different from the date field: "date" meant descending order (newest
first), while other fields used ascending order by default (for strings
that meant lexicographic: a, b, c, d, e...). The issue which that commit
fixed, https://code.google.com/archive/p/newsbeuter/issues/40, doesn't
explain this oddity in defaults.
ad5c5ea049f39c814840bd4fad197e473b12e1dc documented the new setting.
It's worth noting that the "date" sorting was done in SQL upon loading
the feed, whereas all other sorts were implemented in C++. This worked
at the time because the setting was fixed in the config, and there was
no way to change it at runtime.
64b6fc1f838f8a600b438313eee167b9f6e6ea3f allowed to change the setting
at runtime using g and G keys. By necessity, the "date" sorting was
moved from SQL to C++. This introduced an interesting bug: the
comparison function for dates was implemented such that it sorted in
ascending order by default. That was different from what SQL was doing,
but Newsboat's sorting function wasn't adjusted to match. As a result,
sorting by "date-desc" resulted in ascending sort, where oldest items
came first.
Instead of addressing this change by fixing the sorting function, that
commit changed the meaning of "-desc" and "-asc" for "date", and changed
the default for article-sort-order. The new default, "date-asc", meant
descending order (newest first), while "date-desc" meant ascending order
(oldest first).
This counter-intuitive behaviour survives to this day in Newsboat.
I think it's too late to change now, since it'll break configurations
that set article-sort-order to "date", "date-asc", or "date-desc".
Instead, this commit improves docs somewhat, and promises to fix this
inconsistency in some future major version of Newsboat.
Fixes #1560.

@PetraOleum, you filed #1560, so please take a look — does this PR improves the situation at all?

I filed https://github.com/newsboat/newsboat/issues/1566 for specific steps to fix this in some future major release.

Coverage remained the same at 58.843% when pulling 6b3a744a90da3fefeef93d9f251ae8c44ec9532c on bugfix/1560-explain-date-desc into f7d8ab4ac8d85b6947b150ff8b3388c89dd9f730 on master.

That looks like the best that could be done without actually making a breaking change.

Thanks to both of you for taking the look! Merging ^_^


[BUG] append_transform with an initialised R3MTransform will append the transform as the first transform

Describe the bug
Because R3M does not create the transforms when initialised, appending a transform will place it first.

Solved by #803


[Bug] Transfer CIAs game via Wifi

Ho everybody, I try to use the Network Instalation when I pushed (trought Socketpunch) in my 2DS I recieve the instalation but... never complete and start a infinite loop trying to install it, please fix it :+1: nice work guys (Sorry for my bad English :'( )

Have you tried with sockfile?

Hmmm I've never done before, some tutorial or guide :D! thanks for response :+1:

Thanks, Shall give this a try, I was getting a familiar issue with SocketPunch
There have been a few untitled commits to it's repo, with last updates a month ago
But I'll ping @Olmectron and see if there's an upcoming release

@Scrxtchy Yeah. It's a problem with SocketPunch. I'm releasing a new update, yes, but it's coming in some more days. Maybe next Saturday. Thanks for pinging.


Document return types for standard Kitura responses in swagger

Context and Description
Kitura currently cannot programatically generate an accurate description of each possible response from a route handler, as there is no way to determine this at handler registration time.
SwaggerGenerator currently generates a generic "200" response for every registered route with the description "successful response".
WIP changes to improve this: https://github.com/IBM-Swift/Kitura/pull/1346

#1346 is merged.


update offsets 13.3 xD

thx bro，but could you provide the compiled version like the resulting DLL？i’m truly grateful for your help.

PLS UPDATE THIS TO LATEST VERSION IF SOMEONE CAN 🙏🏽 🙏🏽


Metrics: split a independent "barrier" section?

We have a "streaming" section but there are many "source throughput" panels which could be large and need time to load when the cluster is big. And the barrier latency and barrier number is a very important metrics when we want to check a cluster's status. So maybe we need to make barrier metrics independent?

Agree.

+1. Btw, should we have a separate section for all important metrics?


Proof of concept: Assets as first class concept

This is very much NOT ready to pull.  But I would like some feedback.  I originally just wanted to make the url used by font awesome configurable (as I use a more recent version personally and also to allow one to use licensed locally installed versions if one so desires).  And I didn't particularly like that currently the font awesome url is in every base.html.
But I ended up writing something that might just make all but base.html unnecessary. So if one would take what I did to the logical extremes, one could delete base_bulma.html, base_foundation.html and so on unnecessary.
Maybe more importantly the code would compose more nicely that is if hypothetically one would compose a style using a different icon package + bootstrap base, there would be no need to separately touch some template file somewhere.
That all said this is not all roses yet.  Maybe most importantly the way I crowbarred support for assets into Style.py and then bound it inside render_root probably shows that I haven't really understood neither tri.declarative nor how it is used in iommi.
I also haven't done the work to adjust all the styles (in fact I haven't even done the remaining, albeit trivial work) to get rid of what is left of base_bulma.html.
And lastly the code that gathers all the assets together in Style.__init__ should be changed such that the resulting order is both what one would expect and controllable by the programmer.
Thoughts?

I like it!
I think the biggest change would be that assets should be a namespace where all the components are named. So for example for fontawesome you'd have assets__icons=...., and then for bulma you'd have assets__css=..., and assets__navburger_script. This way the assets compose, which they don't if they are a list that can only be overwritten totally.
So to use a local bulma css file you'd make your own style: Style(bulma, assets__css='my_local_thing'.... and use that instead.
This would also mean that the base style could have assets__select2 and since all the styles are based on base they'd get this automatically. This should also mean that to get rid of select2 you could do assets__select2=None in your style.

Hmm I agree on a conceptual level -- I think.  At least the word Namespace sounds right.  But practically I'm staring at the "documentation" of Namespace (the source wasn't much help either).  And I'm not even sure I understand what exactly a namespace represents.  Much less the exact API.  That said its early in the morning and I'm not sure the coffee is working...  If you can give me a few hints I'll be grateful, otherwise expect this to take a little while until I understand what's going on.

class tri_declarative.Namespace(*dicts, **kwargs)[source]

    __call__(*args, **kwargs)[source]

        Call self as a function.

    __init__(*dicts, **kwargs)[source]

        Initialize self. See help(type(self)) for accurate signature.

    __repr__()[source]

        Return repr(self).

    __str__()[source]

        Return str(self).

    __weakref__

        list of weak references to the object (if defined)

And I must say I feel a little like I'm missing

The Namespace-class is the result of several years of polishing the same 30 lines of code. The only definitive blueprint is the head of Anders and me :^) I probably should try to write something with a lot of examples in the documentation on github.

(But it has stopped moving and almost always does exactly what we want I think it is the right thing)

The idea of namespaces is roughly that these things are roughly logically equivalent:
car = Car()
car.engine.cylinders = 4

car = Car(engine__cylinders=4)

car = Car(engine=dict(cylinders=4))

I'm waving my hands in the air a bit vaguely now :) To make stuff like this work everything must have a name (so no lists!).

We've tried to write about this:
https://docs.iommi.rocks/en/latest/architecture.html
https://docs.iommi.rocks/en/latest/philosophy.html
https://kodare.net/2018/06/25/refinableobject-object-orientation-refined.html
https://kodare.net/2020/09/14/transparent_apis.html
As you see we're still trying to find a way to explain this in a way everyone can understand :P

The Namespace class is what does the parsing of paths with '__', and the mergeing with other namespaces.
For example:
from tri_declarative import Namespace
n = Namespace(foo__bar=17)
assert n.foo.bar == 17

defaults = Namespace(foo__bar=1, foo__baz=2)
result = Namespace(defaults, n)
assert result.foo == dict(bar=17, baz=2)

After back-channel feedback it was suggested to use less abstract variable names:
from tri_declarative import Namespace
banana = Namespace(peel__color='yellow')
assert banana.peel.color == 'yellow'

defaults = Namespace(peel__color='red', peel__thickness=1)
result = Namespace(defaults, banana)
assert result.peel == dict(color='yellow', thickness=1)

Another hint: The Namespace class is mostly used through the @dispatch decorator on the constructor.

Thanks that is all very useful.  I did indeed try to use @dispatch on Style.__init__ but I think the additional magic done on it's kwargs arguments for self.config collide with that.  And I don't yet understand what that part of the function does well enough.
Anyhow I have  to run off to a meeting but I'll have another look at it later today.

Me and Johan have also been discussing assets generally. At work I built a little wrapper for render_bundle that makes sure you can use it many times in a template but you only get that asset bundle rendered once in the html. This makes it much easier to work with as you can have stuff like assets per component and if you render 100 of that component you get the assets once, but if you have zero you don't get that asset. I think we should do something similar here. I'm going to think about this a bit :P

Well basically if we would just give each distinct asset a unique id than it would be pretty trivial to first collect all assets exactly once in a  set / dict, inside render_root.
So the question really becomes what should that id be.
Options:

string representation of the fragment (means one could even have different libraries that didn't know about each other and just happen to require the same asset and still one requires the asset just once, for that to work one has to make sure that the fragments are always generated in the same way, but some nice helpers for link to javascript, link to css (with / without the various optional arguments) and inline-script should take care of that.

id of the python object representing the asset, disadvantage: now one needs to explicitely share the python objects to get unification.  Advantage it is pretty obvious what will and will not get shared.

Some explicit id stored with the asset object.  Roughly the same advantage / disadvantage as using the python id.  One could sometimes explicitely choose the id to get sharing.

One could also imagine designing a very explicit asset naming path and always just using one thing per path.   That path could of course be an iommi name.  But I suspect down that path hilarious bugs can be found (imagine getting a slightly different url depending on the order in which some libraries are imported...)

All in I am leaning towards the string representation unification proposal, but then you have probably build more websites than me...

The iommi way(tm) is to name all the parts. So it's really not one of those at all I would say! It's a user supplied name on the way in, like the names of Fields in a Form all have names. So we'd have the same for our assets.
I'm building this now. It's going to be great! :P

K -- I'll just step aside and watch the master at work ;-)

Well.. it will be great. It's just that there's a nasty bug that mutates stuff on the side during styling application that this feature is blocked on. It just so happens Johan is already working on fixing that for an unrelated reason :P

There we go. This is what I think it should look like but as I said it's broken right now.
But I hope you see where I was going with the general sort of feel of the code...

Hmm can I ask a question?  I don't understand that line in Style.__init__ :
    self.assets = setdefaults_path(
            *(base.assets for base in bases),
            assets,
        )

Doesn't that mean that we don't even know exactly what assets will end up being passed as target to setdefaults_path (it might be one of the one in bases, or assets itself is bases is [])? And that should matter shouldn't it because one should generally know what will and will not get mutated?
I am clearly missing something what is it?

Staring at that section a bit I realized I was missing a reversed. It should look like this:
        self.assets = setdefaults_path(
            *(base.assets for base in reversed(bases)),
            assets,
        )

It means that we take the assets of the bases and then the assets of the style object itself. So let's take a concrete example of the bulma Style. First there's the assets defined in base:
    assets=dict(
        jquery=...,
        select2_js=...,
    ),

Then there's the assets defined in `bulma`:

```python
    assets=dict(
        css=...,
        js=....,
    ),

The end result of this will be a merged dict looking like:
    assets=dict(
        jquery=...,
        select2_js=...,
        css=...,
        js=....,
    ),

Now you can make a new style:
foo = Style(
    bulma,
    assets__js=None,
)

which just throws away the js.
Does that make sense?

Thanks for taking the time to write that long explanation.  Sadly I think I didn't express my confusion correctly.  Let me try again.
The part that I don't understand is that setdefaults_path modifies it's first argument (__target__ by calling dict.update on it).
So doesn't that mean that you are modifying in your example base.assets to look like that merged dictionary you mentioned when the Style.__init__ for bulma has run?  And isn't that undesirable?  I mean sure one is unlikely to actually use the base style anywhere but still...

The right way to do it is setdefaults_path(Namespace(), ..., ...)

The best way to trip up is to have an audience ;^)

Awesome find. Yes.

This all works super nicely now btw! Thanks!

NP.  Glad to hear that I was confused for good reason ;-).  The ship has probably sailed as the lack of a proper type checker makes it much harder to modify function signatures after the fact.  But maybe setdefaults_path should have taken target as a required keyword argument.  Something like: setdefaults_path(target=..., ...)

It can't really, because then you can't set a member called "target":
setdefaults_path(
   target=foo,
   target=bar,
)

...would be invalid python.

Sigh makes sense.

I think I'm done in moving all the assets to this new much improved system. I would like @jlubcke to review but then I think we can merge this.

Sweet
On Fri, 9 Oct 2020 at 10:16, Anders Hovmöller<EMAIL_ADDRESS>wrote:

I think I'm done in moving all the assets to this new much improved
system. I would like @jlubcke https://github.com/jlubcke to review but
then I think we can merge this.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/TriOptima/iommi/pull/65#issuecomment-706040997, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHQUJNX2QZEKL7TQLLS3JLSJ3BE5ANCNFSM4SHY7FJA
.


use orisis chams when enemies are behind a wall and when they are visible

I'm trying to make a legit config for CS:GO and I cant find out how to put chams in my config. I enabled it and it doesn't work somehow I want to make it so that the chams would work and show the players and that I can see them through walls like other cheats do like Botlucky pandora.gg and so on and I need some help on this because this is like my 3rd time using this cheat on CS:GO and I made my cheat basically what im saying is that i need to know how to make it so that i can see enemies through walls

I'm trying to make a legit config for CS:GO and I cant find out how to put chams in my config. I enabled it and it doesn't work somehow I want to make it so that the chams would work and show the players and that I can see them through walls like other cheats do like Botlucky pandora.gg and so on and I need some help on this because this is like my 3rd time using this cheat on CS:GO and I made my cheat basically what im saying is that i need to know how to make it so that i can see enemies through walls

There is a checkbox in Chams called "Ignore-Z" sets the chams for invisible players. You can make chams for visible players using an other tab of chams .


Expose websocket routes

Envoy has support for WebSockets now (https://github.com/lyft/envoy/pull/1274). However, routes that support WebSockets must be explicitly marked using the use_websocket option.
This has two implications:

For a HTTP port (say 80) on a service, that has several routes (plain http and websocket) (/foo, /bar and /websocket), the user needs to mark websocket enabled routes explicitly through route rules.
For services that have websocket on a dedicated port (i.e., no http routes), the user could name the port as a websocket port (like http, grpc, etc.). This would mean that all routes on that port are websocket routes (preventing normal http connections from working.

WE could start with option 1 and then see if it makes sense to introduce a new port name/type (Websocket) as I feel that option 2 is redundant.
cc @kyessenov

makes more sense for ingress while 2) is more in-line how we use services in-cluster. I think we might need both options, but for different proxies.

(1) also makes sense for in-cluster proxies, if there are multiple services on same port. Or, if a given service has HTTP routes and one or more websocket routes. (2) is more of a coarse grained solution.

fixed by #1094


Register CBFToolbox

@JuliaRegistrator register
Release notes:
First release of CBFToolbox!

Registration pull request created: JuliaRegistries/General/113261
Tagging
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.0 -m "<description of version>" feef006c5ab9f45c54933eb9f2363e3b4a43dbcd
git push origin v0.1.0

Changed package name to ControlBarrierFunctions and started new registration process.


Regarding closing my previous MR

I wanted to confirm once with @mirjan-hoffmann before raising the MR. Thats all, Re-raising the MR. Also, .gitignore file was missing

Made the necessary changes

@mirjan-hoffmann . Please give feedback.

missed this is the review

Performed the changes. Please review.

FYI, DSpace recommends work_user and dspace_user to be different.

FYI, DSpace recommends work_user and dspace_user to be different.

Can you please add this info to the README. Including the link to the related dspace-documentation?

I also reopened the tomcat-version-task in the first review

I SOLVED the tomcat-version-task in the first review


Import fix for thaw.js

Import fix for thaw.js
Description
Import fix which helps to resolve the issue in topic https://github.com/BrainJS/brain.js/issues/614
Motivation and Context
The async training of neural network is failing in web browser with the follow message
TypeError: _thaw2.default is not a constructor
 in brain.js/dist/neural-network.js — line 599

How Has This Been Tested?
It works in my pet project)
Screenshots (if appropriate):

Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Author's Checklist:

[x] My code focuses on the main motivation and avoids scope creep.
[x] My code passes current tests and adds new tests where possible.
[x] My code is SOLID and DRY.
[x] I have updated the documentation as needed.

Reviewer's Checklist:

[ ] I kept my comments to the author positive, specific, and productive.
[ ] I tested the code and didn't find any new problems.
[ ] I think the motivation is good for the project.
[ ] I think the code works to satisfies the motivation.

I think the issue is actually an export problem in thaw.js.  That is one of my repo's as well.  Could you investigate a fix there, then upstream here the version?

I think I found the issue.  Thaw uses lofi-bundler, which strips out exports when using thaw in the browser and because we're using brain.js, in the browser, it has nothing to import.  I committed a fix to lofi-bundler, and upgraded brain.js usage of it in master.
Brain will require a bit more work on master for a release.  I'll put some time into that when I have free time this week.


[Letters] Typos fix.

Fixed all of the requested changes except 1.

I believe all requested changes have been made

Thank for the PR.


drivers: pinmux: deprecate pinmux

Pinctrl API has taken over pinmux. As planned, pinmux is going to be
deprecated for the next release (3.2). This patch flags all pinmux APIs
as deprecated.
Platforms currently blocking deprecation:

Microchip MEC1501 boards: mec15xxevb_assy6853 and mec1501modular_assy6885

@jvasanth1 MEC15xx boards are currently blocking this PR, can you please update?

Added https://github.com/zephyrproject-rtos/zephyr/pull/48893 draft PR to update the drivers to use pinctrl instead of pinmux. I will be updating the drivers one by one,

@gmarull, can we close this PR as PR https://github.com/zephyrproject-rtos/zephyr/pull/50326 has been merged.

Can you also help update the release notes with pinmux deprecation information.


Why desktop templates use server images?

The files:

ubuntu1404-desktop.json
ubuntu1604-desktop.json
ubuntu1804-desktop.json

are using "iso_url": "http://old-releases.ubuntu.com/releases/bionic/ubuntu-18.04.1-server-amd64.iso", Why don´t you use desktop image?

Because the desktop images boot into a desktop and they can't be automated. The desktop install is equivalent of a standard server install plus the ubuntu-desktop meta-package.

ooh okay, so it is installed on the script/desktop.sh script right? Thank you.

Yes


Restore per-line text reveal

Add a function to only play sound when certain characters are not being typed out. Perhaps something like scribble_autotype_set_sound_per_char_unless_char


Update bdk to v0.26.0

In 0.26 bdk added the transaction sorting we were doing, so now we can just call .sort
It also updated the esplora dep so we can now use the same code from https://github.com/lightningdevkit/rust-lightning/pull/1870

will it eventually get to the point where we can use that directly? I guess when that PR merges or can we import that branch until the meantime?

will it eventually get to the point where we can use that directly? I guess when that PR merges or can we import that branch until the meantime?

once that's merged and released we can use that, for now copy-paste should be stable enough


Ubuntu 21.04 release

Hi I'd like to have Ubuntu 21.04 hirsute in the PPA or the command in the Installation documentation should be updated.
For now the workaround is adding the ppa using the command:
# add-apt-repository ppa:o2sh/onefetch

After that I can go and edit /etc/apt/sources.d/o2sh-ubuntu-onefetch-RELEASE.list and change hirsute to groovy there.

I've just added the binary for hirsute

Sorry for your trouble @FlyinPancake

Very cool man, thanks :smile:
working just fine now
Get:12 http://ppa.launchpad.net/o2sh/onefetch/ubuntu hirsute/main i386 Packages [472 B]


Unsupported execution model with GS

Run ToHlsl under GeometryShaderTest.
Expected:
Pass the test.
Actual:
"Unsupported execution model" error in SM4 or SM5.

It's caused by https://github.com/KhronosGroup/SPIRV-Cross/issues/121.


ResultsetTable returns to the first page when re-rendered.

Describe the bug
When the resultsetTable is re-rendered it always returns to the first page.
If we have inside the resultsetTable one component that changes its state, independently of the page in which it is when the state changes the resultsetTable returns to the first page.
To Reproduce

Create a resultsetTable with several pages and with radio buttons in one of its columns.
Move to the last page.
Click on one radio button.
ResultsetTable returns to the first page

Expected behaviour
ResultsetTable should stay on the page it was on.

To give some context, the specific case where this occurs is when we are handling the actions in a way that the rows value is modified (for example, when storing checkbox states). This is caused by the useEffect that is present in the ResultsetTable, which currently has the following:
useEffect(() => {
    if (!hidePaginator) {
      rows.length > 0 ? changePage(1) : changePage(0);
    }
  }, [rows]);

I think it would be appropiate to adjust the logic, in my opinion the best approach would be to check the previous length of rows and compare to the current one. Depending on whether the size remains equal or have changed, we can adjust the page. The logic that I have thought is something like this:
if current_rows_length == previous_rows_length:
    // Do nothing
else if current_rows_length > previous_rows_length:
    // Move to the last page (according to the new size)
    last_page = calculate_last_page(current_rows_length)
    current_page = last_page
else:
    // Check if the current page is now empty
    if current_page * page_size >= current_rows_length:
        // Go back to the previous page
        current_page = max(0, current_page - 1)
    else
        // Do nothing

Hi!
We have found an issue related to the checkboxes in a ResultsTable. We talked about it with @Jialecl and he recommended us to post the case in a comment on this issue:

When we select an item from the table, the selected status of the checkbox is inconsistent.
Here, you have the implementation of the checkbox in the table cell:
{
    displayValue: (
      <DxcCheckbox
        defaultChecked={deploymentPackage.isSelected === true}
        disabled={disabled}
        size="fillParent"
        value={`deploymentPackages.${deploymentPackage.id}`}
      />
    ),
    sortValue: `${deploymentPackage.isSelected ?? false}`,
},

Thanks, everyone! 😃

Hi!
We have found an issue related to the checkboxes in a ResultsTable. We talked about it with @Jialecl and he recommended us to post the case in a comment on this issue:

When we select an item from the table, the selected status of the checkbox is inconsistent.
Here, you have the implementation of the checkbox in the table cell:
{
    displayValue: (
      <DxcCheckbox
        defaultChecked={deploymentPackage.isSelected === true}
        disabled={disabled}
        size="fillParent"
        value={`deploymentPackages.${deploymentPackage.id}`}
      />
    ),
    sortValue: `${deploymentPackage.isSelected ?? false}`,
},

Thanks, everyone! 😃

Hi Alan, first of all thanks for your review.
I would like to see the rest of the code (including the search and the criteria for the isSelected property) to be able to provide more details.
From what I can see, what you are currently experiencing is the expected behavior. I assume that the first row (Assure CSAM Console Application) is being checked because of the defaultChecked condition being true. On the other hand, when you are checking one of the boxes, according to the code that you provided it seems that no onChange option is set in order to maintain each Checkbox's value updated so, as soon as you rerender the component (for example, changing the page), the value for the Checkbox does not persist by default.

AFAIK, you would need to implement something similar to this inside of a loop to achieve the wanted result.
Please let me know if that helps.

Thank you for the feedback @AlanPadi95 , I am currently working on a solution for it.


Proposal: publish a release candidate 1-2 weeks before releasing breaking changes

Hello Crystal team! Congrats on a new release 🎉
I have an idea for easing the transition to new releases.
Issues with the current process
The main issue is that different platforms get official releases at different times. For example, right now if a Linux user installs Crystal they are likely to get 0.27, but a Mac user using Home-brew installs they'll get 0.26.1
So if I release a new version of Lucky or some other library with support for 0.27, it will break Mac users on 0.26.1. Of course Mac users can upgrade but it requires gong around homebrew and most people will just give up or wait for homebrew. If I don't update Lucky or some other library then Mac users can use it, but Linux users can't w/o downgrading.
Proposed solution
My proposed solution is to release a release candidate a week or two beforehand. The release candidate would also be available on homebrew.
This way when the final version comes out and it is inevitably delayed on homebrew (which is to be expected and totally ok since they need to verify everything on their end) library owners can suggest users install the release candidate with homebrew.
This will make it so library owners can update their install docs to let Mac users know to install the release candidate with homebrew and Linux users can install the latest using the usual means. Once Homebrew is up-to-date with the official release, library owners can tell Mac users to install the official release again.
I'm not sure I explained this clearly, so if it doesn't make sense, let me know

Another idea I had right after posting this: could we release the Linux version and blog post once homebrew accepts the latest version? My assumption here is that it is easier/faster to release a blog post and linux versions and is under Crystal team's control so this may be a way to sync things up as well. But my assumptions may be totally wrong here :)

I fear this proposal would only complicate things more and doesn't really solve anything. Even with a release candidate, there will inevitably be version mismatches, where the current version of a library is targeted at a different compiler version than the one available. Or even two or more libraries that are supposed to be used together might target different compiler versions.
I don't think a release candidate can add any improvemen. It probably makes it only more confusing because there are more compiler versions in play.
With a language that is constantly changing, it is to be expected that there are breaking changes from time to time. And not only package managers but also libraries need to catch up to the latest releases.
If you're always using the latest development version of a library, there is no way avoiding failing builds from time to time because of breaking changes in the compiler, stdlib or other libraries.
In order to avoid this, the solution is to lock compiler and library versions and only upgrade when all dependencies work with the current compiler release.

The only native solution is to have a repo for each one to control the release date, and deploy them simultaneously, but this is heavy maintenance wise.
I don't see any problem particular to Crystal, every language/application face this  issue.
One convenient solution I see is using Docker, the users can now run it in major platforms.

Maybe part of the problem is that in the shard file you can put a crystal version, but it doesn't actually check anything or raise a warning. So people don't know what to do.
I don't mind the breaking changes, what I think is a problem is that people often don't know what to do.
I see what you mean about having lots of package managers, but we need some way to make it clear to users what is wrong. Right now they just see compilation errors because of missing methods and don't know what to do.
Maybe if crystal/shards checked the version defined in shards.yml and raised/warned that would be enough. As it stands now I have to manually respond to these issues and it gets tiring. Automating it with shards.yml would be awesome! Thoughts?

@j8r I agree it is not specific to Crystal, but Crystal has a lot of breaking changes. I think that is good because it is rapidly improving, but it is problematic because we don't have a good version manager or a good way of warning users when they are using unsupported versions of Crystal with a library.
I think we need to either make the releases (at least for the most popular package managers) in sync, or have some way of helping users figure out they need to downgrade w/o them having to ask in chat/stack overflow

I also like a release candidate because it makes it easier to test w/o going through so many hoops. That would be really cool! Right now you can't brew install it so most people don't bother. I bet if there was a release candidate on home-brew that was easily installable we'd have more people testing and getting ready before the official release, which would be awesome!

You could tell the users to use https://github.com/pine/crenv ? There are also nightly builds.

I think we need to either make the releases (at least for the most popular package managers) in sync,

I don't think that's an option. The Crystal team can't possibly sync releases in package managers it doesn't govern. Even if it was practically possible, it would  unnecessarily delay releases in all but the slowest-to-adopt package manager. That'd be nonsense.

if there was a release candidate on home-brew that was easily installable we'd have more people testing and getting ready before the official release

We don't necessarily need a RC for that. Nightly builds are totally fine. And it actually works like a charm on CI using Docker (see Using CircleCI 2.0 for your Crystal projects). We just need a way to make nightly builds easily available through package managers (this is also discussed in #5836).

Ok sounds like this is a no go. I'll go ahead and close it


feat/configurable-drain

This PR adds options to configure connection draining (drain-time and drain-strategy) in Envoy, both when using sidecars or EnvoyDeployments. The description of these 2 drain options can be found in Envoy's documentation:

drain-time: https://www.envoyproxy.io/docs/envoy/latest/operations/cli#cmdoption-drain-time-s
drain-strategy: https://www.envoyproxy.io/docs/envoy/latest/operations/cli#cmdoption-drain-strategy

These 2 options are optional to avoid breaking backwards compatibility, and are active only when the shutdown-manager is active.
I also fixed some recurrent diffs I found in the reconcile of Deployment, Service and ServiceAccount resources, which were causing unnecessary reconcile loops.
/kind feature
/priority important-longterm
/assign

/ok-to-test

/lgtm

/approve


ARROW-17980: [Python] Add find_package(Protobuf) to python/CMakeLists

During testing of this internally. We found that python/CMakeLists.txt is missing find_package(Protobuf) so we cannot use internal version of protobuf. This PR should fix that.

cc @westonpace and @wjones127


FreeMote.csproj missing when trying to compile

When cloning the solution and trying to compile in VS it says that FreeMote.csproj can't be found. 2 of 6 projects can't be loaded. The FreeMote folder is in fact empty.

Found it, just used the contents of the official github repo.


make workflowlevel1 model uuid non-editable

Purpose
Workflowlevel1 models uuid field can not be editable by  Activity API  create and update methods.
Approach
Added editable feature to uuid field with value of False.
Related ticket: Humanitec/ActivityAPI#175

Coverage remained the same at 49.874% when pulling f9b7d1d3b41950894d60bac1fe4b1df9e8cc3443 on yilmazbekdemir:issue-175 into b68e4a84a9513371092c1ef5041191c3b01847f2 on toladata:dev-v2.


The image is not extracted for the build folder (flutter web & android)

image not deploy in path

build

web

asset
when deployed app by flutter build web
note: i added photos in web folder, path in pubspec.yaml and project show correctly in debug mode

[√] Flutter (Channel unknown, v1.10.2-pre.40, on Microsoft Windows [Version 10.0.17134.1006], locale en-US)
    • Flutter version 1.10.2-pre.40 at C:\flutter\flutter
    • Framework revision b4ab5cfe79 (5 days ago), 2019-09-16 20:34:25 -0700
    • Engine revision 7ea9884ab0
    • Dart version 2.5.0 (build 2.5.0-dev.4.0 be66176534)

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at C:\flutter\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = C:\flutter\sdk
    • Java binary at: C:\flutter\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b01)
    X Android license status unknown.
      Try re-installing or updating your Android SDK Manager.
      See https://developer.android.com/studio/#downloads or visit https://flutter.dev/setup/#android-setup for detailed instructions.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 3.3)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 34.0.1
    • Dart plugin version 182.5215
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)

[√] Android Studio (version 3.5)
    • Android Studio at C:\flutter\android-studio
    • Flutter plugin version 34.0.4
    • Dart plugin version 191.6183.88
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b01)

[√] VS Code (version 1.38.1)
    • VS Code at C:\Users\Mahmoud salah eldin\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.4.1

[√] Connected device (2 available)
    • Chrome • chrome • web-javascript • Google Chrome 76.0.3809.132
    • Server • web    • web-javascript • Flutter Tools

According to the documentation: Note that only files located directly in the directory are included. To add files located in subdirectories, create an entry per directory.
Perhaps you need to add - assets/icons/ to your pubspec.yaml.

Thank you @sma ! @mahmoudsalah37 Please report if you got it working. Or you are concerned about it working in debug but not working in release?

yes it is work now but why worked with debug and not with release

Hi @mahmoudsalah37
Based on comment and it should definitely work with release if correct paths are provided
given your last message I feel safe to close this issue,
if you disagree please write in the comments and I will reopen it.
Thank you

Now when i write my code like below code:-
  assets:
     - assets/icons/

Icons repeat again (see below photo).

But if i change path to below code:-
  assets:
     - assets/

Icons not repeat again (see below photo).


Failed to load zones (reason: enoent)

After building the release and running the console command,
$ _build/default/rel/service_discovery/bin/service_discovery console

...I'm getting the following error:

Failed to load zones (reason: enoent)

It seems to be coming from erldns_zone_loader.erl. Any insight in fixing it would be very much appreciated.

That is an "error" log from erldns but isn't actually an error. I have meant to patch erldns to at least be configurable to not log this as an error.
Since service_discovery does not use a static file of zones there is no file to load, it isn't required by erldns but does result in that log despite it being just fine.

I'm also getting 400 on PUT and 404 on GET requests.

curl -v -XPUT http://localhost:3000/service -d '{"name": "webapp2", "attributes": {"attr-1": "value-2"}}'

* upload completely sent off: 56 out of 56 bytes
< HTTP/1.1 400 Bad Request
< Connection: Keep-Alive
< Content-Length: 21

I thought it might be related to this error.
This request works fine when I use the prod profile to make the release.


restarting loop

Hi, i have a issues since today after the container ran perfect for a few month:
die container starts and directly restarts.
The log shows the following:

[deconzcommunity/deconz] Starting deCONZ...
[deconzcommunity/deconz] Current deCONZ version: 2.13.04
[deconzcommunity/deconz] Web UI port: 8888
[deconzcommunity/deconz] Websockets port: 443
[deconzcommunity/deconz] Modifying user and group ID
[deconzcommunity/deconz] Checking device group ID
[deconzcommunity/deconz] VNC port: 5901
Use of uninitialized value in pattern match (m//) at /usr/bin/tigervncserver line 490.
tigervncserver: Can't parse pid file '/home/deconz/.vnc/9780ba8a4d7f:1.pid'!
Use of uninitialized value in pattern match (m//) at /usr/bin/tigervncserver line 490.
tigervncserver: Can't parse pid file '/home/deconz/.vnc/9780ba8a4d7f:1.pid'!
A VNC/X11 server is already running as :1 on machine 9780ba8a4d7f
Warning: 9780ba8a4d7f:1 is taken because of /tmp/.X1-lock
Remove this file if there is no X server 9780ba8a4d7f:1
WebSocket server settings:

Listen on :6080
Flash security policy server
Web server. Web root: /usr/share/novnc
SSL/TLS support
Backgrounding (daemon)
[deconzcommunity/deconz] NOVNC port: 6080
qt.qpa.screen: QXcbConnection: Could not connect to display :1
Could not connect to any X display.

I started it with the following command:
sudo docker run -d     --name=deconz     --restart=always     -p 8888:8888     -p 443:443     -p 6080:6080     -p 5901:5901     -v /etc/localtime:/etc/localtime:ro     -v /opt/deconz:/opt/deCONZ     -e DECONZ_WEB_PORT=8888     -e DECONZ_VNC_MODE=1     -e DECONZ_VNC_PASSWORD=**********     -e DECONZ_VNC_PORT=5901     --device=/dev/ttyACM0     deconzcommunity/deconz:stable
Anybody knows how i can fix this?

No clue, but turn off VNC mode and it should start. I got the same issue on my Synology.

perhapse try to remove the vnc in /opt/deCONZ folder

This issue is clearly due to tigervncserver not being able to access its files. Doing what's suggested above should solve the issue.


Components documentation missing for version 9.0.0

Reproduction link
https://stackblitz.com/edit/ng-zorro-antd-start-yajka8 (not applicable for documentation, but that link is required)
Steps to reproduce
When browsing https://ng.ant.design/docs/introduce/en (which is for version 9.0.0), there is no documentation of the individual component; the Components menu is missing.
When browsing https://ng.ant.design/version/8.5.x/docs/introduce/en there is a Components menu with all components
What is expected?
The Components menu should be there on https://ng.ant.design/docs/introduce/en
See for version 8.5:

What is actually happening?
The Components menu is missing there on https://ng.ant.design/docs/introduce/en
See for version 9.0:

Environment
Info

ng-zorro-antd
9.0.0

Browser
any

Well, I found that components documentation have been moved out to a new tab in v9.0:

But then this tab bar is missing the old blog button, maybe that's intended.


"Connection: close" added to response in SSE use-case

"Connection: close" is appended to the HTTP response by wekzeug despite the client code having already added the "Connection: keep-alive" header.
I am using werkzeug to implement a Server-Sent-Event (SSE) stream (see https://html.spec.whatwg.org/multipage/server-sent-events.html). In this use-case:

the request method is a GET;
the response status code should be 200; and
the response content length is not known and therefore the 'Content-Length' header is not in the response.

Despite setting the "Connection: keep-alive" header on the response object, werkzeug still appends an additional "Connection" header to the response: "Connection: close".
The "write" function in WSGIRequestHandler.run_wsgi makes as number of checks before adding the extra header, but for the SSE use-case none of them prevent the extra header being added.
Specifically it will add the header unless any one of the following conditions are true:

the 'Content-Length' header is present in the response
the request method was 'HEAD'
the response status code is <200
the response status code is 204
the response status code is 304

For SSE I don't think any of these are true but the it should still be possible for a user to set the "Connection" header value to "keep-alive".
Since SSE is a standard use-case I think this is a bug.
Arguably an extra check could be added so that the "Connection: close" header is not added if a "Connection" header already exists on the response object?
 1 from flask import Flask, Response
 2 from datetime import datetime
 3 from time import sleep
 4
 5 app = Flask(__name__)
 6
 7 @app.route('/')
 8 def root():
 9     def generate():
10         while True:
11             sleep(1)
12             yield 'data: ' + str(datetime.now()) + '\r\n\r\n'
13     response = Response(generate(), mimetype='text/event-stream')
14     response.headers['Connection'] = 'keep-alive'
15     return response

I would expect the response to have a single "Connection" header with value "keep-alive" but instead to has two:

"Connection: keepalive" (added by the client code); and
"Connection: close" (added by werkzeug).

Environment:

Python version: 3.6.8
Flask version: 2.0.3
Werkzeug version: 2.0.3

I can't reproduce your requirement. SSE works fine without setting the Connection header. The page you've linked to describing SSE does not mention keep-alive.
The application can't set the Connection header, because the application is not the server, and the server controls what HTTP features it supports. HTTP/1.1 keep-alive is not handled well by Python's http.server, so it's not enabled. There's a long comment explaining this right above the code you wrote about.
If you need keep-alive, you can use a production WSGI server such as Gunicorn.


Restore kotlin-dsl xref doc link

Description
Since camel-kotlin-dsl is removed on the main branch, we need to do a temporary workaround so that the Camel website can remain buildable.
Reverting it should be done on the 3.15.x branch.

Done in https://github.com/apache/camel-quarkus/commit/e4a997099dd61fd543d959c3557e01f2b174d243.


Fix usage documentation with options

📖 Description and reason
We use options in a few checks, we need them!
🦀 Dispatch
#dispatch/elixir

🦀 Requesting reviewers for this pull request:

@MathieuLegault1 (contributor with 6 commits in the last 90 days and 6 commits overall)
@JoeyBG (reviewer for the elixir stack)

🦀 Mentionning users for this pull request:

@EtienneStPierre (learner for the elixir stack)


netopeer2 server- client over TLS

Has any one tried netopeer2 server- client over TLS?.
i'm trying to establish  connection b/w netopeer2 server- client over TLS. i tried following the steps mention in https://github.com/CESNET/Netopeer2/tree/master/server/configuration and was not succesful
Any  inputs to achieve would be helpful.
Thanks

Hi,
you say you were not successful, a bit more details please. There are exact steps in the README how to configure it, which step did not produce the expected result? Also, it would be best if you used devel versions but it should work in master, too.
Regards,
Michal

i'm using the master version . i was trying with existing crt file Netopeer2/server/configuration/tls/server.crt. It a bit confusing as i'm new to this TLS enabling .
could guide me on this?

I wrote the README so that I do not have to guide every person separately. If you are completely new to TLS, you have 2 choices. Either you first try to understand all the basics (which is not that trivial) or you simply follow my guide word-by-word without knowing exactly what it is you are doing. In the long run, if you want to change anything and not just use my examples, you must have some understanding of TLS.
If you decide to study something first, I suggest you first learn how certificates work (certificate authorities, trust anchors and certificate chains, ...). Then, it is best to at least read RFC 7589 even if not to full understanding of everything. Next, I would definitely advise to look at the YANG models we are using, descriptions of the valid fields. The models are ietf-keystore, ietf-tls-server (and the main module ietf-netconf-server), and most importantly ietf-x509-cert-to-name (which configures how usernames are obtained when using TLS, the main difference in comparison to SSH). These models can be found in netopeer2/modules.
If, on the other hand, you want to make it work before anything else, you should be fine with the README. You want to look at the section Listen/TLS and there are links to a few other sections that are relevant. There you have exact steps of what to do, I have nothing more to add, really.
Regards,
Michal

okay . thanks!
In the README file we have
"In the XML tls_listen.xml, which you need to send to the server, you will see that again all IPv4 interfaces are listened on and the port used si the default TLS one, 6513. Other than that, the server will use the certificate test_server_cert we configured in the step before."
XML tls_listen.xml, which you need to send to the server? how is this done?

Hi,
it is short for "send to the server as the content of an edit-config operation". The point is, it must be set as the server configuration and it is prepared as an input file for edit-config command of netopeer2-cli. Still, you can get the configuration to the server also some other ways. For instance, if you have no daemons (sysrepo, netopeer2-server) running, you can use sysrepocfg to directly modify ietf-netconf-server startup configuration. When you then start netopeer2-server, it will listen and expect TLS transport connections.
Regards,
Michal

using the below command (sysrepo, netopeer2-server daemons not running).
sysrepocfg --import=load_server_certs.xml --format=xml --datastore=startup ietf-keystore
The new configuration was successfully applied.
and then
sysrepocfg --import=tls_listen.xml --format=xml --datastore=startup ietf-netconf-server. getting the below error
[ERR] (srcfg_import_datastore:836) Data returned by sysrepo are not valid: Leafref "/ietf-keystore:keystore/ietf-keystore:private-keys/ietf-keystore:private-key/ietf-keystore:name" of value "ssh_host_rsa_key" points to a non-existing leaf. (/ietf-netconf-server:netconf-server/listen/endpoint[name='test_ssh_listen_endpt']/ssh/host-keys/host-key[name='test_ssh_listen_key']/public-key)
Errors were encountered during importing. Cancelling the operation.

Hi,
that is quite expected since you erase the ssh_host_rsa_key from ietf-keystore configuration using the first command. Try repeating all the steps but use --merge instead of --import (if you have used edit-config, you would not have this problem).
Regards,
Michal

i tried --merge instead  of --import, it still the same .
could you please provide me with all commands to be executed with sysrepocfg to get started before "connect -tls"

Hi,
I will not keep helping with you basic things when it is obvious you have no idea what you are doing. You want to have ietf-keystore startup configuration a merge of /netopeer2/keystored/stock_key_config.xml and /netopeer2/server/configuration/load_server_certs.xml, there are many ways of achieving this and I have already mentioned at least 2. You can look at the configuration using sysrepocfg --format=xml --editor=vim --datastore=startup ietf-keystore, for example (you can even directly edit it this way).
Regards,
Michal

okay . i missed configuring  /netopeer2/keystored/stock_key_config.xml .
sysrepocfg --merge=../../keystored/stock_key_config.xml --format=xml --datastore=startup ietf-keystore
sysrepocfg --merge=load_server_certs.xml --format=xml --datastore=startup ietf-keystore
sysrepocfg --merge=tls_listen.xml --format=xml --datastore=startup ietf-netconf-server
netoper2-server  started  with Listening on <IP_ADDRESS>:6513 for TLS connections.
Thanks for the help

Great, stock_key_config.xml is set during installation, but you have removed it when you imported another file, so you did not miss anything.
Regards,
Michal


Added "awesome-cpp-mobile" - A curated list of build scripts to compi…

…le C/C++ libraries for mobile environments.

Hi,
Thanks for processing the PR so quickly. However, would you mind giving a rationale about not merging this PR ?
I believe you don't want awesome-cpp to be a list of list but I am waiting your answer to know if I hit the spot.
TIA


Add dependencies for multiple frameworks in NuSpec file

I've created a Nuget package from a project targetting .Net Standard 2.0 but when coming to install this project from the Nuget feed it is not visible within a .Net framework 4.7 solution. The reason for the is having .Net Standard 2.0 as a dependency.
I fixed this in the end by using
  <TargetFrameworks>netstandard2.0;net47</TargetFrameworks>
but it would have been ideal if the NuSpec file has an override dependency area where I could remove this dependency and state any other dependencies. We have a Dependencies field in the metadata of the nuspec file but it doesn't work as expected

Issue moved to NuGet/Home #7597 via ZenHub


test: 💍 SQFormMultiSelect

✅ Closes: 270

I think it would be good to add another test for an initial value that is part of the options.

I think it would be good to add another test for an initial value that is part of the options.

done!


deploy this model from GS storage

Trained a distilbert model
@max-27 thats how the output files under ./cache look like.
https://console.cloud.google.com/storage/browser/model_senti_anal/pretrained-distilbert-2022-01-18-13-50-17/
from google.cloud import storage
import pickle

BUCKET_NAME = ...
MODEL_FILE = ...
Localpath = ./model_checkpoint.chpt

client = storage.Client()
bucket = client.get_bucket(BUCKET_NAME)
blob = bucket.get_blob(MODEL_FILE)
blob.download_to_filename(Localpath)

# load one of these options
# 1
model2 = model.load_from_checkpoint(Localpath)

# 2
model_def: pl.LightningModule = hydra.utils.instantiate(
        cfg.model,
        **{
            "model_name_or_path": cfg.data.datamodule.model_name_or_path,
            "train_batch_size": cfg.data.datamodule.batch_size.train,
        },
        optim=cfg.optim,
        data=cfg.data,
        logging=cfg.logging,
        _recursive_=False,
    )

model2 = model.load_from_checkpoint(Localpath)

also requirements.txt / config hydra etc is uploaded.

maybe good idea to get #65 done locally first

is done with functions by max


Getting TTL exhausted with AWS ElastiCache

I'm getting TTL exhausted with AWS ElastiCache Redis 5 Cluster.
I've tried using the configuration endpoint from AWS as the host, tried adding all nodes in the shard to the startup_nodes, just the configuration endpoint to the startup_nodes. Nothing seems to be able to fix the issue. I'm running this inside EKS (AWS' Kubernetes service).
I have a separate app deployed which uses nodejs and that one behaves correctly and returns the data.

 The root cause is from this try/except block specifically https://github.com/Grokzen/redis-py-cluster/blob/unstable/rediscluster/client.py#L364 and without known knowing which exception as what the content is of it, i can't help.

I have got the same error like it.
As you say, i tried to found the specifical exception. Since "ttl" in the try block, it will retry many times. I used pdb to debug it and found that they were MovedError and ConnectionError.
Specially, service that connected to redis cluster was deployed in my local docker and redis cluster was not.
When i got MovedError, the "r" was like it.

And while ConnectionError with this one.

Yeah. The first error is a very common error and problem that many people encounter when they run stuff inside Docker. For some reason, redis inside a docker container have a tendancy to map all cluster nodes to <IP_ADDRESS> if all other nodes run inside the same container/envrionment. Technically this is correctly done by redis. But from the clients pov, this is wrong. What all cluster clients does is to ask the cluster for CUSTER INFO and/or CLUSTER SLOTS and parse the output. This output will say Hi, your cluster nodes is located at <IP_ADDRESS>:30002 .... The problem here is that your clients will parse this and save this and belive that all redis nodes is at that address that redis says it is on. So when your client is on your host and not inside your container or from another machine, the client will pick up <IP_ADDRESS> and then you get the messages above.
There is a few different solutions for this. One is to not run all nodes in the same container, then redis is forces to track a real IP address that is reachable from the outside envrionment. It should track for example a 172.x.y.z.address between containers. Or you have to fix and run your code from the same machine so <IP_ADDRESS> lookups works.
MovedErrors is a expected result/output that in of itself it not wrong. It basically says that the current cluster cache that the client is holding is wrong and that you tried wrong or that you forced a lookup to the wrong node. This error resolves it self where when it get this back it will try the new node that the cluster tells you to talk to.
What can happen tho is if your nodes points to wrong addresses like the :30001 port points to a proper ip address and 30002 points to <IP_ADDRESS> or something else wrong and that is why it can't look it up properly.


Python 3.5 deprecation

Python 3.5 has been deprecated, and every time you run pip install in a python:3.5-* based container, you get the following warning:
DEPRECATION: Python 3.5 reached the end of its life on September 13th, 2020. Please upgrade your Python as Python 3.5 is no longer maintained. pip 21.0 will drop support for Python 3.5 in January 2021. pip 21.0 will remove support for this functionality.

In our case, we need to keep using Python 3.5 in our images, and rebuild them often.
When pip drops support for Python 3.5, what will happen to pip inside those docker images? Will it remain as the current version (20.2.3)?
OTOH, I noticed the Dockerfiles for said versions have been removed (https://github.com/docker-library/python/commit/93ddb24e33564a4f70f945a9fe603488bfd3a31e). Will the images remain available in Docker Hub? For how long?

Since the Dockerfiles have been removed (and references dropped from docker-library/official-images), we won't ever touch the built images and they will remain indefinitely available to pull from Docker Hub (related: https://github.com/docker-library/official-images/issues/8552#issuecomment-679251691).


can't start auto-guest-login

Hey, I need your help please.
after I have installed your script and want to run it, I see the "Start Page" for a short moment, but it's terminated again.
I get the following message.
Can you help me?

Hi @MrThiemann, I see you closed the issue. Did you solve your issue?


Use update alternatives for resolv.conf

Contributor checklist

[x] Changes have been tested
[x] Change-type present on at least one commit
[x] Signed-off-by is present
[x] The PR complies with the Open Embedded Commit Patch Message Guidelines

Reviewer Guidelines

When submitting a review, please pick:

'Approve' if this change would be acceptable in the codebase (even if there are minor or cosmetic tweaks that could be improved).
'Request Changes' if this change would not be acceptable in our codebase (e.g. bugs, changes that will make development harder in future, security/performance issues, etc).
'Comment' if you don't feel you have enough information to decide either way (e.g. if you have major questions, or you don't understand the context of the change sufficiently to fully review yourself, but want to make a comment)

Were these changes tested? "Changes have been tested" looks not marked.

They were tested. Just checked the box too

Cool. Looks good.


widgets are unresponsive in almost all of the reference guide

guide->gallery
for example—but have found many more places—:
https://hvplot.holoviz.org/user_guide/Widgets.html

It looks like hvPlot has never been rebuilt with the warnings that you can see all over the rest of the HoloViz tools, e.g. http://holoviews.org/user_guide/Live_Data.html (see box on the right).  @jlstevens ?

thank you!  I wanted to add 2 points since i think the problem goes deeper in my case:

in the provided link all of the widgets work (http://holoviews.org/user_guide/Live_Data.html)
interaction seems to be broken (at least in my case) even when running locally.
for example, when i run the following example (provided here :https://hvplot.holoviz.org/user_guide/Geographic_Data.html)
i get the exact same results as in the mentioned link: no interaction at all

air_ds = xr.tutorial.open_dataset('air_temperature').load()

air_ds.hvplot.quadmesh(
    'lon', 'lat', 'air', projection=ccrs.Orthographic(-90, 30),
    global_extent=True, frame_height=540, cmap='viridis',
    coastline=True
)

If the doc build is not pinning nbsite, it should be adding the warning. I'll double check that it is correctly configured to warn otherwise.

I'm not sure when exactly, but the page has been rebuilt and the interactivity warning is showing:

(and the same for Live Data).

interaction seems to be broken (at least in my case) even when running locally.

air_ds.hvplot.quadmesh(
    'lon', 'lat', 'air', projection=ccrs.Orthographic(-90, 30),
    global_extent=True, frame_height=540, cmap='viridis',
    coastline=True
)

Could you check if this is still true with the latest releases of hvplot and holoviews? If so, please report that in a new issue: I'm going to close this one as everything else here issue concerns the website which is now fixed.


Replace "failure" error handling

Handling gdal crate errors in other crates requires the "failure" crate which is deprecated. We should use a crate / error strategy which does not require additional crates.

My preference would be https://github.com/dtolnay/thiserror, which is used in https://github.com/georust/proj as well. I could also help you with this task

Just to add that my experience using thiserror in proj has been very positive. The only drawback is its dependency on syn, which adds to compile times, but it's worth it in my opinion.


Abort keyring restore

Closes #224

Try CI rebuild

CI errors appear to be inside closure-library... Local tests are passing.  Can someone confirm error/success?

I've opened an issue with closure-compiler here: https://github.com/google/closure-compiler/issues/904

Rebuild CI


Initial commit of airtable custom block code

Links

Issue link
Documentation links: https://airtable.com/developers/blocks/api

GIF/Screenshots:

Changes:

OH so many changes
the emailing script is now a react app. This gives us SO much potential for if we want to have branching/nonlinear workflows / choosing which type of email to do / displaying errors more comprehensibly / ANYTHING really

also using the block cli we can add cities as "remotes" and then, eventually, set up a deploy script that uses block release so that any time we make a change to the code it goes to all the cities! We're a bit of a ways off from that right now... but this is a necessary first step.
Plus, now the code that's checked into git will be the code that's running, no way to copy-paste a bugfix to one city but not the other, or fix it on staging but forget to make the same change on live cities...
How To Test:

I've "released" this block on staging, bottom of the "Send Email Notifications" block dashboard

Feedback I'm looking for:

send_email_messages/frontend/index.js  is the new, non-generated code so that's where I'd like review
the remote.json and paterson.remote.json files are just base IDs and block IDs -- they're identifiers but not passwords, don't grant access. So I think it's fine to have them checked in here, lmk if that seems wrong

Things left to do before deploying:

[ ] ...

Wow, thanks for finding this and making this switchover! Awesome that we can build anything we want now and have a better deployment flow. Left some minor comments in the code. A couple general thoughts:

how can I develop on this locally? Do I need to also sign up for the blocks beta on my individual account?
I wasn't able to figure out how to access the settings screen. Would be curious for Erin+Anya's thoughts on the config process. The one thing I'm curious about is only providing minimal necessary config -- I wonder if there's any settings we can remove where the flexibility isn't actually needed across cities. (I don't have enough context about our current + upcoming cities to know the answer)
in terms of testing: my general flow has been to match some deliveries in staging and then enqueue+send. any other primary flows worth testing?

Settings is the gear icon:

(it may have not been showing up when you were reviewing, because I had not released this latest code with the settings page to Staging. Deploy script coming soon!)
Local development: great call, I will write a README :)
Settings: some thoughts above. Now that I've released it to staging, I'd love Erin or Anya to take a look at the settings page and weigh in on whether it seems clear, or how we'd want to change the descriptions. So now we can deprecate this 7 page google doc! https://docs.google.com/document/d/1dIwW4wjCLAsPzFua05cCJLnL7OMx_bsFq3ab07blNF4/edit#
Testing:
for speed, I've been using the same test delivery and volunteer, and just deleteing the "Sent" message record to erase the record of it having ever been sent. Then refreshing the queue finds and sends the same email. Sometimes I don't even click send (when I'm only testing changes to the enqueue step) just verify in the Template Data column that I'm seeing what I expect.
I will noodle some on how to automate testing...

I've deployed this manually to staging, wc and paterson. I am merging now to reflect that -- pretty soon, whatever's on master will be whatever's live :)


Feature of Multiple correct option in the quiz template.

@opticod @croozeus
We can add a feature of multiple correct answers in the Quiz Template. It will increase the vastness of the questions the teachers can put in the Quiz Template.
If you find this issue relevant enough. Should I proceed to add this enhancement. Here's a pic depicting how the template will look after the feature has been added.
Thanks.

@croozeus @opticod Can I work on this issue stated here.

@sm86 I am already done with the code. If it is approved I will send the PR. thanks

@croozeus, your views on this issue for our next version?

@octacode Are you planning to use CheckBox instead of RadioGroup?

@shikharbhuddi I am using RadioGroup only but the question having multiple correct answers will be marked with an asterisk.

@octacode , you can proceed. But before creating the PR, please discuss your complete implementation.

@octacode, check box will be good for multiple correct questions and radio buttons for single correct questions. Marking asterisk will also help, hence add it to editor, simulator and created apks. You can proceed. Please also create PR to templates repo for the same.

@opticod, yeah this implementation sounds better. I will make the changes you have suggested and will send a PR.


redisson-3.27.1 OSGi MANIFEST.MF imports package jdk.net which is not available under Java 8

When using the OSGi-enabled redisson-3.27.1 JAR I cannot properly do the Tycho/OSGi build with Java 8:
[ERROR]   Missing requirement: redisson 3.27.1 requires 'java.package; jdk.net 0.0.0' but it could not be found
Checking the manifest, I see it has an Import-Package for jdk.net. The OSGi system bundle correctly doesn't export that for Java 8. But the redisson manifest also states:
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
so should work with Java 8. Should the jdk.net dependency be "Optional" maybe?

Fixed. Thanks for report


remove dev deps from package details

Dev packages are not necessary for downstream consumers

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


[zh-cn] resync reference/command-line-tools-reference/feature-gates.md

Resync content/zh-cn/docs/reference/command-line-tools-reference/feature-gates.md with en upstream PR #38734.
Format line 930.

Thank you for proposing this fix. However, we will not merge partial fixes as per stated in the guideline. To find out what are the upstream changes to be synced, do this on the main branch:
./scripts/lsync.sh content/zh-cn/docs/reference/command-line-tools-reference/feature-gates.md

/hold

@tengqm Thanks. I have checked the file and add the missing part.

@tengqm Thanks. I have checked the file and add the missing part.

Did you check the output from the script? The description for gate DynamicResourceAllocation, CrossNamespaceVolumeDataSource, WindowsHostNetwork, CSIMigrationRBD all need update.

@@ -496,6 +502,8 @@ Each feature gate is designed for enabling/disabling a specific feature:
   [downward API](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information).
 - `DryRun`: Enable server-side [dry run](/docs/reference/using-api/api-concepts/#dry-run) requests
   so that validation, merging, and mutation can be tested without committing.
+- `DynamicResourceAllocation": Enables support for resources with custom parameters and a lifecycle
+  that is independent of a Pod.
 - `EndpointSliceTerminatingCondition`: Enables EndpointSlice `terminating` and `serving`
    condition fields.
 - `EfficientWatchResumption`: Allows for storage-originated bookmark (progress

Refer to this section.
I see this change has been synced already.
CrossNamespaceVolumeDataSource, WindowsHostNetwork, CSIMigrationRBD are all synced in that PR.
I am confused do I miss something?

Okay. Maybe the English change was merged after the Chinese sync had been merged.
/lgtm
/approve

/unhold