[BREAKING CHANGE PROPOSAL] new "outputs" syntax

Problem
Originally proposed and discussed in #569
Nearly all identifiers in bicep share a global namespace. This means I cannot declare a parameter with the same name as a variable, or a resource with the same name as an output, etc.
// not valid since both symbols are called "foo"
param foo string
var foo = 123

In most cases, this is actually a good thing for readability, otherwise we would need the referencing syntax to disambiguate whether the identifier is a param or a var (i.e. param.foo or var.foo). However, outputs are unique because they are never referenced within the same bicep file, so it is overly limiting to not allow for duplicate identifiers in this case. Consider a more realistic example that is not possible today, where the variable storageAccountName stores a dynamic value that you'd like to output:
var storageAccountName = uniqueString(resourceGroup().id)
output storageAccountName string = storageAccountName // not valid

Proposed syntax change
As a result of this problem, we'd like to propose the following syntax change for output declaration:
output <EXPRESSION> as <TYPE> [<IDENTIFIER>]

var foo = 123
output foo as int

With the optional identifier, you would have
output 1 + 1 as int foo

Going back to our previous realistic example, that would change to:
var storageAccountName = uniqueString(resourceGroup().id)
output storageAccountName as string

Other options explored
You can see a full accounting for all of the options we explored in #568, but the only other top contender was this option which aligns closer to the current syntax and would not be a breaking change:
var foo = 42
output foo int = foo

While most familiar to the current output syntax, we feel it's too confusing since in the above case it looks like the output is assigning a value of itself, even though it is assigning the value of the var foo.
ASK
We've already gotten some feedback in #569 that gives us confidence in our proposal, but we wanted to create this issue to make a more formal thread to give folks a final chance to review it. Please let us know if you see any potential issues with this new outputs syntax.

I'm not a fan of the proposed syntax.

This would be the only place where we put type before a name/identifier
The 'as' keyword can be just as confusing or more as the circular dependency (for me it implies trying to cast to type)
When trying the proposed syntax in my bicep files I find it harder to see all output names, sometimes the output name is implied by the expressions being a reference and sometimes it is renamed. Always having the output name in the same place makes it a lot easier to scan the code without spending unnecessary brain-cycles on parsing the line. It breaks the flow of the code and I don't like it.

var foo                = 42
var storageAccountName = uniqueString(resourceGroup().id)

output storageAccountName as string myStorageAccountName
output storageAccountName as string
output 1 + 1 as int two
output myVnet.subnets as array

I do like the other option suggested, the only downside I can see is the potential confusion of an output name being identical to an identifier. I don't see that as a problem, output names are not identifiers and it should be very easy to learn.
Also this suggestion gives me the option to use spaces to format output to align the equal signs for a very clean looking code.
var foo                = 42
var storageAccountName = uniqueString(resourceGroup().id)

output myStorageAccountName string = storageAccountName
output storageAccountName string   = storageAccountName
output two int                     = 1 + 1
output subnets array               = myVnet.subnets

I agree with @SimonWahlin that the alternative is a better option than the proposed change.  I would argue that as output objects are always identified with the output syntax that it is clear (or at least easily taught) indicator of why output storageAccountName string   = storageAccountName

I would go with the proposed syntax for the already stated reasons. Do not have strong opinion but if I have to choose the proposed syntax looks better to me. I am missing how this would look if you have copy/loop that outs array of objects.

I also agree with @SimonWahlin here.  I prefer the second option over the suggested syntax for the same reasons that Simon covers in his comment.

I think the ‘as’ syntax is simple enough and straightforward. The current output name collision problem is serious. Therefore, I choose the proposed syntax.

+1 to @SimonWahlin
The order of something like this just feels really weird to me output 1 + 1 as int foo

Agreeing with @SimonWahlin as well, having as in only the output feels clunky and out of place (I also connect the keyword mainly with type conversion from C# for example). I agree with the points he makes against the proposal.

+1 for @SimonWahlin .
I feel the first option more confusing as it breaks how you for example write parameters.
The second option, defining outputs as

output two int                     = 1 + 1
output subnets array               = myVnet.subnets

feels more consistent with how you are writing bicep templates today.

After giving some though on pros and cons - 👍🏻 for @SimonWahlin and @bmoore-msft.
I think the only reason why the as syntax can be better is to avoid the clash of the names if we use the shortened version.
However, as I looked at my bicep files currently in use, in opposite to the ARM, I don't use variables that often (n.b. vars aren't variables but constants they do not change during runtime). In ARM we used variables so we would not need to build the resource name every time we reference it. Now in bicep I tend to define name directly in resource and then use myResource.name which makes using myResourceName obsolete. For child resources i still use vars, but with #127 and #1564 that will not needed anymore.
That said, I think situations where we'll output a variable or parameter is going to be very rare and we can safely use the little 'confusing' syntax output myResourceName string = myResourceName (which I don't find confusing at all - there are more confusing language syntaxes like in javascript 😉)
More often the case might be when where we'll name the output same as some existing resource for referencing it or using as parent in other module However, considering #923 and #1170 we even might not need to do that explicitly as bicep will generate some technical outputs for us.

@miqm - well stated...  re: this...

More often the case might be when where we'll name the output same as some existing resource for referencing it or using as parent in other module.

More common (in bicep) will be outputting the resourceId in one file such that I can easily create a resource reference to it in the next...  Which I think is to your overall point.

Output loops will look like the following with both syntaxes:
Current
output myOutput array = [for thing in things: <loop body>]

Proposed
output [for thing in things: <loop body>] as array

I agree with @SimonWahlin. I also like the alternative more. (For the same reasons as @SimonWahlin and @miqm set out above).

More common (in bicep) will be outputting the resourceId in one file such that I can easily create a resource reference to it in the next... Which I think is to your overall point.

Agree, resourceId for references and that will be most common case in future.
But now resourceName I use for parent/child relationship (i.e. you create KeyVault in top-level file and secrets with db passwords in db modules)  - last(split()) is a bit too extensive, now it's easier to output name.
Speaking of working with resourceIds - would be great if we could convert string resourceId to a bicep resource so we can use it for parent/child relationships, e.g.
param existingResourceId string

resource existingResource from existingResourceId

resource existingResource:child 'subtype@api-version' = {
  name: 'childName'
}

But not sure if this is possible in this way. I think we need to specify type regardless the fact that we will have it in resourceId string. But still at least name could be extracted by bicep.
param existingResourceId string

resource existingResource 'Microsoft.Type/resource@version' existing from existingResourceId

resource existingResource:child 'subtype@version' = {
  name: 'childName'
}

Just jumping in with my two cents, but is there ever a situation where the output value isn't based on an expression assigned to a variable or parameter? Or could it be acceptable that outputs can only be set by a variable in Bicep?
What if, instead of designating a whole line with the output keyword, we instead made this a decoration appended to the end of the declaration expression, as in:
var two = 1 + 1 with output
param existingResourceId "abc123" with output

The attached "with output" would indicate that two is used in the context of assigning a variable and also should be emitted as part of the output.

as unfortunately blends in far to much, whereas a symbol like = breaks the line into chunks, which make it more easily scan read whilst ensuring the context of the line still stays with the reader.
I personally think the below works better for readability (variation on @SimonWahlin suggestion)
output string myStorageAccountName = storageAccountName
output string storageAccountName   = storageAccountName
output int two                     = 1 + 1
output array subnets               = myVnet.subnets

this feels more easily read as I have an output which is a string called myStorageAccountName
but that maybe because this is a common way to read in dotnet based languages

Just jumping in with my two cents, but is there ever a situation where the output value isn't based on an expression assigned to a variable or parameter? Or could it be acceptable that outputs can only be set by a variable in Bicep?

I don't think so. it's pointless to engage nested deployment only to output what've input (with slight change). user defined functions will do this better and faster. outputs usually exposes values taken from resources that you create i.e. keys, identity ids, etc.

@majastrz  in this example:
output [for thing in things: <loop body>] as array
what's the name of the output?

@bmoore-msft We could choose something based on the expressions specified or always require an explicit name. With explicit names the proposed syntax would look like this:
output [for thing in things: <loop body>] as array myOutput

@majastrz we already require an explicit name for every output & that should not change

@kilasuit the proposal, if implemented, in this issue would actually change it (the expression is used to determine the default name of the output), so my loops comment was inline with the proposal.
I definitely agree it's a fairly big downside of the proposal to make output names less obvious/explicit.

I've already suggested #1389 that would ensure ability for readable context - but also understand that it'll take you down the "too ARMy" path if you did that

I would definitely support the syntax that @SimonWahlin proposes.  As you start to get to more and more complex objects, the "value before type" syntax breaks:
value before type
output 1 + 1 as int foo  <- Works
output {id = 1, value = 2} as object foo <- awkward
output {id = 1,
            value1 = "a",
            value2 = "b",
            value2 = "c"} as object foo <- ugly

**type before value **
output foo as int = 1 + 1 <-  Works
output foo as object = {id = 1, value = 2} <- better

As for the global namespace - I'd suggest that all of Param, Var and Output into a single space is broken.  Remember that Bicep is a simplification of ARM, but still represents ARM.  While collapsing the Param and Var into a single namespace makes sense, adding output to that namespace shows issues like this.
I would also ask that all outputs require a name and type, although type can be inferred
output foo = {id = 1, value = 2} <- inferred object
output foo = 1 + 1 <-  inferred Int, but what about int64s ?
output foo as string = 1 + 1 <-  Works, yielding a string "2"

I too prefer the second option discussed by @SimonWahlin. It help the code stay cleaner and easier to read.

We discussed this yesterday, and based on all of the responses we have decided to go with Option 2 which effectively creates an outputs namespace that will not conflict with the other symbols in the same bicep file. This will no longer be a breaking change, but we will still try to get this done for our 0.3 release.
Thank you all for jumping on this issue quickly and for articulating the concerns clearly. It made it really easy for us to discuss and revert our decision. I know I speak for the whole team in saying we are very thankful for how this community is operating! We will get the spec updated.

Oh and I should also clarify that the same restrictions apply for all symbols in the outputs namespace. That means you still cannot have two outputs with the same name, for example:
output foo int = 1
output foo int = 2

This will result in a red squiggle under both declarations of foo since we don't know which one is the "right" one. This is the same logic and UX we have for duplicate symbols in the global namespace.

The problem at hand is serious enough to require it to be addressed asap.
That said, the proposed workaround is okay, but far from ideal. In fact I like the alternative a hundred times better. This is probably my take on it looking at it from a programmer's perspective, where "as" implies casting, conversation as isn't typical for a declaration, whilst the output foo int = foo (which I prefer) is similar to a declaration and initialization in almost any other programming language where the initialization commands the value of the local to take on the value of a parameter or class member.
Put differently, I prefer the latter option because its common to the syntax of other programming languages, feels more natural and follows a more intuitive approach. I could even see linting easily analyzing Bicep code and suggesting fixes to the output declaration and these would (or should) be easily understandable.

@anthony-c-martin So which one is it finally?

We are going to be implementing what @johndowns asked for in #569. Anthony has a PR out now: #1623.
Closing this since we are no longer going to do the original breaking change proposal in this issue.


Add methods for finding subsequences in a collection

Work in Progress

Description
Methods for finding the first, last, or all ranges of a given subsequence.
Detailed Design
TK
Documentation Plan
Guide and docs to come…
Test Plan
Initial unit tests included.
Source Impact
This is an additive change only.
Checklist

[ ] I've added at least one test that validates that my change is working, if appropriate
[ ] I've followed the code style of the rest of the project
[ ] I've read the Contribution Guidelines
[ ] I've updated the documentation if necessary

You could probably generalize the Collection.firstRange(of:) method (and therefore BidirectionalCollection.lastRange(of:) too) with an equivalence predicate and/or letting the collections differ in Element type.  The given predicate would be allowed to throw.

Have you seen @milseman ’s CollectionSearcher prototype? https://forums.swift.org/t/prototype-protocol-powered-generic-trimming-searching-splitting/29415
I wonder if that would serve as a useful base to include in this library. We could implement things like the generic 2-way search algorithm and Z algorithm mentioned in that post.

@CTMacUser and @karwa Absolutely, still exploring the API surfaces here. Thanks!

@swift-ci Please test

This functionality is handled by the string-processing package.


Revert "Map uuid to id from already loaded relationship in spatie media library"

Reverts filamentphp/filament#6242

@danharrin can you please tag this?


update please

I would just like to say the app is not working since steam updated

thought it was me phew


updated to kubernetes v1

updated to kubernetes v1

Refer to this link for build results (access rights to CI server needed):
https://fabric8-ci.fusesource.com/job/fabric8-quickstarts-master-pullreq/546/
Test PASSed.


Project name on the portal isn't the passed in project name

When creating a project with this action, the projectName input is not making it through to the name given on the Equinix Metal portal. Instead you get a project named "GHACTION-sha5eb1d946d203fa2480559c5e9942a54c6b60f8b0"

Fixed in #22, released in v0.13.0


Info about pokemon stats

it will be nice to add info of pokemon, hp, power
and it will be nice to add buton for select a location on map (tag)
search location seem's to not working

The pokemon's stats are directly dependent on your level upon finding them.
I am unsure if the stats are determined by your app or by the servers at this time however.


Race condition between ReplicaFetcherThread and RemotePartitionMetadataStore.

Have a cluster with 2 kafka nodes.  Create a topic with replication factor of 2.  Shutdown broker 2.
Produce some data to the topic and wait for the local segment file deletion finished.
Bring back broker 2.  When broker 2 try to fetch data from segment 1 and handle offset moved to remote storage, the following exception was hit because the idToRemoteLogMetadataCache in RemotePartitionMetadataStore hasn't been populated yet:

[2023-06-26 22:11:04,980] ERROR [ReplicaFetcher replicaId=1, leaderId=0, fetcherId=0] Error building remote log auxiliary state for topic4-0 (kafka.server.ReplicaFetcherThread)
org.apache.kafka.server.log.remote.storage.RemoteResourceNotFoundException: No resource found for partition: IWXjwq-vSsS8cu9DkGj6EQ:topic4-0

https://the-asf.slack.com/archives/C05A1NF5SFM/p1687845983795619

Stack trace of the error:
[2023-06-26 22:11:04,980] ERROR [ReplicaFetcher replicaId=1, leaderId=0, fetcherId=0] Error building remote log auxiliary state for topic4-0 (kafka.server.ReplicaFetcherThread)
org.apache.kafka.server.log.remote.storage.RemoteResourceNotFoundException: No resource found for partition: IWXjwq-vSsS8cu9DkGj6EQ:topic4-0
at org.apache.kafka.server.log.remote.metadata.storage.RemotePartitionMetadataStore.getRemoteLogMetadataCache(RemotePartitionMetadataStore.java:152)
at org.apache.kafka.server.log.remote.metadata.storage.RemotePartitionMetadataStore.remoteLogSegmentMetadata(RemotePartitionMetadataStore.java:164)
at org.apache.kafka.server.log.remote.metadata.storage.TopicBasedRemoteLogMetadataManager.remoteLogSegmentMetadata(TopicBasedRemoteLogMetadataManager.java:211)
at kafka.log.remote.RemoteLogManager.fetchRemoteLogSegmentMetadata(RemoteLogManager.scala:790)
at kafka.server.ReplicaFetcherThread.$anonfun$buildRemoteLogAuxState$2(ReplicaFetcherThread.scala:192)
at kafka.server.ReplicaFetcherThread.$anonfun$buildRemoteLogAuxState$2$adapted(ReplicaFetcherThread.scala:188)
at scala.Option.foreach(Option.scala:437)
at kafka.server.ReplicaFetcherThread.$anonfun$buildRemoteLogAuxState$1(ReplicaFetcherThread.scala:188)
at kafka.server.ReplicaFetcherThread.$anonfun$buildRemoteLogAuxState$1$adapted(ReplicaFetcherThread.scala:186)
at scala.Option.foreach(Option.scala:437)
at kafka.server.ReplicaFetcherThread.buildRemoteLogAuxState(ReplicaFetcherThread.scala:186)
at kafka.server.AbstractFetcherThread.$anonfun$fetchOffsetAndBuildRemoteLogAuxState$2(AbstractFetcherThread.scala:734)
at kafka.server.AbstractFetcherThread.fetchOffsetAndApplyFun(AbstractFetcherThread.scala:707)
at kafka.server.AbstractFetcherThread.fetchOffsetAndBuildRemoteLogAuxState(AbstractFetcherThread.scala:733)
at kafka.server.AbstractFetcherThread.handleOffsetMovedToTieredStorage(AbstractFetcherThread.scala:748)
at kafka.server.AbstractFetcherThread.$anonfun$processFetchRequest$7(AbstractFetcherThread.scala:393)
at scala.Option.foreach(Option.scala:437)
at kafka.server.AbstractFetcherThread.$anonfun$processFetchRequest$6(AbstractFetcherThread.scala:329)
at kafka.server.AbstractFetcherThread.$anonfun$processFetchRequest$6$adapted(AbstractFetcherThread.scala:328)
at kafka.utils.Implicits$MapExtensionMethods$.$anonfun$forKeyValue$1(Implicits.scala:62)
at scala.collection.convert.JavaCollectionWrappers$JMapWrapperLike.foreachEntry(JavaCollectionWrappers.scala:359)
at scala.collection.convert.JavaCollectionWrappers$JMapWrapperLike.foreachEntry$(JavaCollectionWrappers.scala:355)
at scala.collection.convert.JavaCollectionWrappers$AbstractJMapWrapper.foreachEntry(JavaCollectionWrappers.scala:309)
at kafka.server.AbstractFetcherThread.processFetchRequest(AbstractFetcherThread.scala:328)
at kafka.server.AbstractFetcherThread.$anonfun$maybeFetch$3(AbstractFetcherThread.scala:128)
at kafka.server.AbstractFetcherThread.$anonfun$maybeFetch$3$adapted(AbstractFetcherThread.scala:127)
at scala.Option.foreach(Option.scala:437)
at kafka.server.AbstractFetcherThread.maybeFetch(AbstractFetcherThread.scala:127)
at kafka.server.AbstractFetcherThread.doWork(AbstractFetcherThread.scala:108)
at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:96)

[2023-06-26 22:11:04,779] INFO Initializing the resources. (org.apache.kafka.server.log.remote.metadata.storage.TopicBasedRemoteLogMetadataManager)
[2023-06-26 22:11:04,935] INFO Received leadership notifications with leader partitions [] and follower partitions [bgi8NmhaSHKQnf0nuK7Eaw:topic3-0, IWXjwq-vSsS8cu9DkGj6EQ:topic4-0] (org.apache.kafka.server.log.remote.metadata.storage.TopicBasedRemoteLogMetadataManager)
[2023-06-26 22:11:04,978] INFO Initialized resources successfully. (org.apache.kafka.server.log.remote.metadata.storage.TopicBasedRemoteLogMetadataManager)
[2023-06-26 22:11:04,979] INFO Assign partitions: [bgi8NmhaSHKQnf0nuK7Eaw:topic3-0, IWXjwq-vSsS8cu9DkGj6EQ:topic4-0] (org.apache.kafka.server.log.remote.metadata.storage.TopicBasedRemoteLogMetadataManager)
[2023-06-26 22:11:04,980] ERROR [ReplicaFetcher replicaId=1, leaderId=0, fetcherId=0] Error building remote log auxiliary state for topic4-0 (kafka.server.ReplicaFetcherThread)
org.apache.kafka.server.log.remote.storage.RemoteResourceNotFoundException: No resource found for partition: IWXjwq-vSsS8cu9DkGj6EQ:topic4-0
[2023-06-26 22:11:05,025] INFO Received leadership notifications with leader partitions [27Fe4HEbQ4KUKGO6wupDqg:topic2-0] and follower partitions [] (org.apache.kafka.server.log.remote.metadata.storage.TopicBasedRemoteLogMetadataManager)
[2023-06-26 22:11:05,025] INFO Assign partitions: [27Fe4HEbQ4KUKGO6wupDqg:topic2-0] (org.apache.kafka.server.log.remote.metadata.storage.TopicBasedRemoteLogMetadataManager)

Thanks for reporting this. I am back from holidays so I am going to start looking into this.

Testing with upstream + retention PR, I can reproduce a similar issue:
[2023-07-10 12:32:37,873] ERROR [ReplicaFetcher replicaId=1, leaderId=0, fetcherId=0] Error building remote log auxiliary state for t3-0 (kafka.server.ReplicaFetcherThread)
org.apache.kafka.server.log.remote.storage.RemoteStorageException: Couldn't build the state from remote store for partition: t3-0, currentLeaderEpoch: 1, leaderLocalLogStartOffset: 54522, leaderLogStartOffset: 0, epoch: 1as the previous remote log segment metadata was not found
        at kafka.server.ReplicaFetcherTierStateMachine.buildRemoteLogAuxState(ReplicaFetcherTierStateMachine.java:252)

and second broker is not able to replicate.
Steps to reproduce:
Using:

Demo from this PR: https://github.com/aiven/tiered-storage-for-apache-kafka/pull/300
Base docker image built from this branch: https://github.com/aiven/kafka/tree/jeqo/ts-delete (I may need to test against latest commits tho)

Create topic with RF=2
make rf=2 topic=t3 create_topic_ts_by_size
docker exec -e KAFKA_OPTS= kafka-ts \
        kafka-topics \
        --bootstrap-server kafka:29092 \
        --create \
        --config remote.storage.enable=true \
        --config segment.bytes=1000000  \
        --config retention.bytes=20000000  \
        --config local.retention.bytes=5000000  \
        --partitions 1 \
        --replication-factor 2 \
        --topic t3
Created topic t3.

Check directories:
Broker 0:
make topic=t3 kafka_container=kafka-ts show_local_data | grep '.log$'
-rw-r--r--. 1 appuser appuser 976K Jul 10 12:22<PHONE_NUMBER>0000054522.log
-rw-r--r--. 1 appuser appuser 975K Jul 10 12:22<PHONE_NUMBER>0000055464.log
-rw-r--r--. 1 appuser appuser 976K Jul 10 12:23<PHONE_NUMBER>0000056403.log
-rw-r--r--. 1 appuser appuser 976K Jul 10 12:23<PHONE_NUMBER>0000057343.log
-rw-r--r--. 1 appuser appuser 976K Jul 10 12:23<PHONE_NUMBER>0000058283.log
-rw-r--r--. 1 appuser appuser 807K Jul 10 12:23<PHONE_NUMBER>0000059223.log

Broker 1:
make topic=t3 kafka_container=demo-kafka1-1 show_local_data | grep '.log$'
Error response from daemon: Container 00cbed84d7a8a46e0f6610e76c5d7dedd4b57a3016549aec6a73d1bdc8e15452 is not running

Then, start Broker 1, observe logs and directory:
[2023-07-10 12:32:37,873] ERROR [ReplicaFetcher replicaId=1, leaderId=0, fetcherId=0] Error building remote log auxiliary state for t3-0 (kafka.server.ReplicaFetcherThread)
org.apache.kafka.server.log.remote.storage.RemoteStorageException: Couldn't build the state from remote store for partition: t3-0, currentLeaderEpoch: 1, leaderLocalLogStartOffset: 54522, leaderLogStartOffset: 0, epoch: 1as the previous remote log segment metadata was not found
        at kafka.server.ReplicaFetcherTierStateMachine.buildRemoteLogAuxState(ReplicaFetcherTierStateMachine.java:252)
        at kafka.server.ReplicaFetcherTierStateMachine.start(ReplicaFetcherTierStateMachine.java:102)
        at kafka.server.AbstractFetcherThread.handleOffsetsMovedToTieredStorage(AbstractFetcherThread.scala:761)
        at kafka.server.AbstractFetcherThread.$anonfun$processFetchRequest$7(AbstractFetcherThread.scala:412)
        at scala.Option.foreach(Option.scala:437)
        at kafka.server.AbstractFetcherThread.$anonfun$processFetchRequest$6(AbstractFetcherThread.scala:332)
        at kafka.server.AbstractFetcherThread.$anonfun$processFetchRequest$6$adapted(AbstractFetcherThread.scala:331)
        at kafka.utils.Implicits$MapExtensionMethods$.$anonfun$forKeyValue$1(Implicits.scala:62)
        at scala.collection.convert.JavaCollectionWrappers$JMapWrapperLike.foreachEntry(JavaCollectionWrappers.scala:407)
        at scala.collection.convert.JavaCollectionWrappers$JMapWrapperLike.foreachEntry$(JavaCollectionWrappers.scala:403)
        at scala.collection.convert.JavaCollectionWrappers$AbstractJMapWrapper.foreachEntry(JavaCollectionWrappers.scala:321)
        at kafka.server.AbstractFetcherThread.processFetchRequest(AbstractFetcherThread.scala:331)
        at kafka.server.AbstractFetcherThread.$anonfun$maybeFetch$3(AbstractFetcherThread.scala:130)
        at kafka.server.AbstractFetcherThread.$anonfun$maybeFetch$3$adapted(AbstractFetcherThread.scala:129)
        at scala.Option.foreach(Option.scala:437)
        at kafka.server.AbstractFetcherThread.maybeFetch(AbstractFetcherThread.scala:129)
        at kafka.server.AbstractFetcherThread.doWork(AbstractFetcherThread.scala:112)
        at kafka.server.ReplicaFetcherThread.doWork(ReplicaFetcherThread.scala:98)
        at org.apache.kafka.server.util.ShutdownableThread.run(ShutdownableThread.java:130)

Update: there seem to be a misconfiguration on my environment (upstream) that lead to this issue.
User topic was configured with RF of 2, but internal topics were not, TBRLMM was complaining:
kafka-ts  | [2023-07-11 08:20:58,884] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-19 from OfflinePartition to OnlinePartition (state.change.logger)
kafka-ts  | [2023-07-11 08:20:58,884] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-15 from OfflinePartition to OnlinePartition (state.change.logger)
kafka-ts  | [2023-07-11 08:20:58,884] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-29 from OfflinePartition to OnlinePartition (state.change.logger)
kafka-ts  | [2023-07-11 08:20:58,884] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-9 from OfflinePartition to OnlinePartition (state.change.logger)
kafka-ts  | [2023-07-11 08:20:58,884] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-45 from OfflinePartition to OnlinePartition (state.change.logger)
kafka-ts  | [2023-07-11 08:20:58,887] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-35 from OfflinePartition to OnlinePartition (state.change.logger)
kafka-ts  | [2023-07-11 08:20:58,888] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-17 from OfflinePartition to OnlinePartition (state.change.logger)
kafka-ts  | [2023-07-11 08:20:58,888] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-31 from OfflinePartition to OnlinePartition (state.change.logger)
kafka-ts  | [2023-07-11 08:20:58,888] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-13 from OfflinePartition to OnlinePartition (state.change.logger)
kafka-ts  | [2023-07-11 08:20:58,888] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-25 from OfflinePartition to OnlinePartition (state.change.logger)
kafka-ts  | [2023-07-11 08:20:58,888] ERROR [Controller id=0 epoch=1] Controller 0 epoch 1 failed to change state for partition __remote_log_metadata-47 from OfflinePartition to OnlinePartition (state.change.logger)

By applying this fix (https://github.com/aiven/tiered-storage-for-apache-kafka/commit/2a36ac086c88effc5d673e5b1870c19f076a0fd5) I haven't been able to reproduce this issue, and replication started to work as expected:
Screencast from 2023-07-11 11-42-48.webm
There's still more scenarios to test about replication in general, but wanted to note here that at least this scenario is not reproducible with upstream. @HenryCaiHaiying could you confirm if the internal topics (__remote_log_metadata specifically) have the proper replication factor on your environment?

Please, ignore my latest comments. The race condition seems to be possible in upstream as well -- following up in this issue: https://issues.apache.org/jira/browse/KAFKA-15181

Upstream PR at https://github.com/apache/kafka/pull/14012

I was able to reproduce the similar ERROR:
org.apache.kafka.server.log.remote.storage.RemoteStorageException: Couldn't build the state from remote store for partition: t3-0, currentLeaderEpoch: 1, leaderLocalLogStartOffset: 54522, leaderLogStartOffset: 0, epoch: 1as the previous remote log segment metadata was not found
Under this test setup: Kafka node-3 died, launched a replacement broker: node-4 and reassign the partitions from node-3 to node-4.  Node-4 broker starts up prints out the above ERROR repeatedly.   In my test up, the topic has a shorter retention.ms with only a few hours (for both local and remote), because there was no new incoming data to the topic, all remote segments were deleted.  When PrimaryConsumerTask is handling DELETE_SEGMENT_FINISHED metadata event, it removes idToSegmentMetadata for the given segment in RemoteLogMetadataCache.  This caused the lookup failed in the following line in TopicBasedRemoteLogMetadataManager:
  override protected def buildRemoteLogAuxState(partition: TopicPartition,
                                                currentLeaderEpoch: Int,
                                                leaderLocalLogStartOffset: Long,
                                                leaderLogStartOffset: Long): Unit = {
    replicaMgr.localLog(partition).foreach { log =>
      if (log.remoteLogEnabled()) {
        replicaMgr.remoteLogManager.foreach { rlm =>
          var rlsMetadata: Optional[RemoteLogSegmentMetadata] = Optional.empty()
          val epoch = log.leaderEpochCache.flatMap(cache => cache.epochForOffset(leaderLocalLogStartOffset))
          if (epoch.isDefined) {
            rlsMetadata = rlm.fetchRemoteLogSegmentMetadata(partition, epoch.get, leaderLocalLogStartOffset)

Not sure about the best way to fix this, maybe keeping remote log segment retention really long?  Or always keep the last segment in RemoteLogMetadataCache?

New upstream bug is at https://github.com/apache/kafka/pull/14127


opensync: add various RADIUS configuration

Add functionality to configure RADIUS NAS-Id and Operator-Name
Add functionality to configure RADIUS accounting interval
Enable RADIUS Chargeable User Identity

Signed-off-by: Arif Alam<EMAIL_ADDRESS>

merged into pending, Thanks !


[BUG] AnsiCastOpSuite fail in spark331 shim

Describe the bug
AnsiCastOpSuite UT failed in spark331 shim (branch-22.10)
- Write longs to int (values within range) *** FAILED ***
  java.lang.IllegalStateException: Expected 1 ansi_cast expressions, found 0
  at com.nvidia.spark.rapids.AnsiCastOpSuite.assertContainsAnsiCast(AnsiCastOpSuite.scala:837)
  at com.nvidia.spark.rapids.AnsiCastOpSuite.doTableInsert(AnsiCastOpSuite.scala:743)
  at com.nvidia.spark.rapids.AnsiCastOpSuite.$anonfun$new$136(AnsiCastOpSuite.scala:579)
  at com.nvidia.spark.rapids.SparkQueryCompareTestSuite.collect(SparkQueryCompareTestSuite.scala:495)
  at com.nvidia.spark.rapids.SparkQueryCompareTestSuite.collect$(SparkQueryCompareTestSuite.scala:491)
  at com.nvidia.spark.rapids.GpuExpressionTestSuite.collect(GpuExpressionTestSuite.scala:21)
  at com.nvidia.spark.rapids.SparkQueryCompareTestSuite.$anonfun$runOnCpuAndGpu$1(SparkQueryCompareTestSuite.scala:427)
  at com.nvidia.spark.rapids.SparkSessionHolder$.withSparkSession(SparkQueryCompareTestSuite.scala:134)
  at com.nvidia.spark.rapids.SparkQueryCompareTestSuite.withCpuSparkSession(SparkQueryCompareTestSuite.scala:195)
  at com.nvidia.spark.rapids.SparkQueryCompareTestSuite.withCpuSparkSession$(SparkQueryCompareTestSuite.scala:190)
  ...
- Write longs to short (values within range) *** FAILED ***
  java.lang.IllegalStateException: Expected 1 ansi_cast expressions, found 0
  at com.nvidia.spark.rapids.AnsiCastOpSuite.assertContainsAnsiCast(AnsiCastOpSuite.scala:837)
  at com.nvidia.spark.rapids.AnsiCastOpSuite.doTableInsert(AnsiCastOpSuite.scala:743)
  at com.nvidia.spark.rapids.AnsiCastOpSuite.$anonfun$new$138(AnsiCastOpSuite.scala:584)
  at com.nvidia.spark.rapids.SparkQueryCompareTestSuite.collect(SparkQueryCompareTestSuite.scala:495)
  at com.nvidia.spark.rapids.SparkQueryCompareTestSuite.collect$(SparkQueryCompareTestSuite.scala:491)
  at com.nvidia.spark.rapids.GpuExpressionTestSuite.collect(GpuExpressionTestSuite.scala:21)
  at com.nvidia.spark.rapids.SparkQueryCompareTestSuite.$anonfun$runOnCpuAndGpu$1(SparkQueryCompareTestSuite.scala:427)
  at com.nvidia.spark.rapids.SparkSessionHolder$.withSparkSession(SparkQueryCompareTestSuite.scala:134)
  at com.nvidia.spark.rapids.SparkQueryCompareTestSuite.withCpuSparkSession(SparkQueryCompareTestSuite.scala:195)
  at com.nvidia.spark.rapids.SparkQueryCompareTestSuite.withCpuSparkSession$(SparkQueryCompareTestSuite.scala:190)
  ...

- Detect overflow from int to byte *** FAILED ***
  AnsiCastOpSuite.this.exceptionContains(e, msg) was false "Column contains at least one value that is not in the required range" not in "Part of the plan is not columnar class org.apache.spark.sql.execution.ProjectExec
  Project [checkoverflowintableinsert(cast(c0#41800 as tinyint), a) AS a#41804]
  +- Exchange SinglePartition, REPARTITION_BY_NUM, [plan_id=119874]
     +- LocalTableScan [c0#41800]
  " (AnsiCastOpSuite.scala:796)
- Detect overflow from short to byte *** FAILED ***
  AnsiCastOpSuite.this.exceptionContains(e, msg) was false "Column contains at least one value that is not in the required range" not in "Part of the plan is not columnar class org.apache.spark.sql.execution.ProjectExec
  Project [checkoverflowintableinsert(cast(c0#41805 as tinyint), a) AS a#41809]
  +- Exchange SinglePartition, REPARTITION_BY_NUM, [plan_id=119947]
     +- LocalTableScan [c0#41805]
  " (AnsiCastOpSuite.scala:796)

Steps/Code to reproduce bug
mvn clean package -Dbuildver=331  -DwildcardSuites=com.nvidia.spark.rapids.AnsiCastOpSuite

might be related to https://github.com/NVIDIA/spark-rapids/issues/6185

hi, as this is block the nightly build and tests, are we OK to skip the test in 331 for now before we get the fix merged?

If @amahussein can't figure out root cause today, I would say yes we skip it.

I won't be able to finish the fix today.
The cause:

As mentioned in #6185 , Spark331 added a new unaryExpression CheckOverflowInTableInsert. This breaks the tests on both CPU and GPU:
the new executed plan for insertion is now

|-- a: integer (nullable = true)
), org.apache.spark.sql.execution.datasources.InMemoryFileIndex@c4cf8fe5, [a]
     +- *(1) Project [checkoverflowintableinsert(cast(c0#28L as int), a) AS a#32]
        +- Exchange SinglePartition, REPARTITION_BY_NUM, [plan_id=198]
           +- LocalTableScan [c0#28L]

Instead of
 |-- a: integer (nullable = true)
), org.apache.spark.sql.execution.datasources.InMemoryFileIndex@abab41d5, [a]
      +- *(1) Project [ansi_cast(c0#4L as int) AS a#8]
         +- Exchange SinglePartition, REPARTITION_BY_NUM, [id=#22]
            +- LocalTableScan [c0#4L]

This breaks the test on both CPU and GPU
For CPU, counting cast needs to handle that the Alias may have CheckOverflowInTableInsert instead of castBase.
For GPU, the new expression is not handled.

Posted a new PR  #6218


Accessing auth state from a different reducer

Is there a way for me to access the auth state from a different reducer?
I'm trying to update User information when user's edit their profile, but I can't access or set user information from the auth state if I'm not in the authReducer.  And there's no component available that allows users to edit their information (with the exception of password).  Does anyone have a work around or suggestions?

You can write a middleware that will look for your action type for updating user profile and extend payload with data taken from authReducer.
It will be something like:

const extendUserProfile = store => next => action => {
  const state = store.getState();
  const attributes = state.auth.getIn(['user', 'attributes']);
  if (action.type === SET_USER_PROFILE && attributes) {
    action.payload.attributes = attributes;
    return next(action);
  }

  return next(action);
};

Ah, nice, thanks!  I was able to work around it by setting a separate user state in the store (instead of trying to use the user property in auth.user), and whenever 'EMAIL_SIGN_IN_COMPLETE' action was triggered, I would set the user state from the payload.  Then I just use that data for profile editing/updating.  But I like the middleware approach much better.


Add method point is on line

What type of PR is this? (check all applicable)

[ ] ♻ Refactor
[x] ✨ Feature
[ ] 🐛 Bug Fix
[ ] 👷 Optimization
[ ] 📝 Documentation Update
[ ] 🔖 Release
[ ] 🚩 Other

Description

This PR [adds/removes/fixes/replaces] this [feature/bug/etc].
Related Tickets & Documents

Added tests?

[x] 👍 yes
[ ] 🙅 no, because they aren't needed
[ ] 🙋 no, because I need help

Added to documentation?

[x] 📓 docs
[ ] 🙅 no documentation needed

@chuongmep When you open a PR could you please:

add the label
select a reviewer
write compensable information about what the PR is trying to solve.
Thanks

Hi @sonomirco , can give me publish a new verison ? I don't have any way to can use it now from nuget package.

@chuongmep yes, something went wrong in the last merge.
I’ll have a look as soon as I can.

@chuongmep just published release 2.2.0
It should be ready as a Nugets in a couple of minutes.


Style/profile

Conflicts exist, possible rebasing needed of style/Profile

[x] Local NPM test pass
[ ] No new Codacy errors

Branch should be merged into its parent feature branch first and NOT REBASED!!


Create duplicate orders reports

 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.

Closing this pull request for now.  We can easily recreate it later.


A problem with tensorflow 1.8.0!

Hi, everyone I had a problem as you can see from the link below and I do not really want anyone to bother him/herself for days like me. Till the next update, don't use last verified version of tensorflow which is 1.8.0 but use 1.7.1. Hopefully someone will take care of it soon.
https://github.com/raghakot/keras-vis/issues/116

Hi, guys.
I created PR( #120 ) so please refer to it.
And... , please merge it soon and release a new version. :-)

Duplicate #119

Pushed @keisen PR.


Link to pretrained models is dead?

Hi, great work! I hate to ask, but I think the link to the pretrained models is now dead?
https://people.eecs.berkeley.edu/~ronghang/projects/snmn/pretrained_models/exp_vqa/tfmodel/
Any chance the pretrained models are still available somewhere? Thanks!

Sorry that the links expired. I've uploaded the models here: https://drive.google.com/drive/folders/152Ad_dX5cS5gBYYToBy9jgN9OI-9Cumw?usp=sharing

Thanks! :)


update messaging for focus to be less keyboard-specific

Quick updates to the Control node documentation to include gamepad references and remove explicit references to keyboard where focus works across keyboard, gamepad, and mouse inputs.
Master version: https://github.com/godotengine/godot/pull/66852

If you'd rather I let the maintainers backmerge the master version (if it gets approved), I can close this one.


Same version working a week ago no longer working

Hi all,
Several days ago (last Wednesday or so) blob storage was working per the instructions in https://github.com/umbraco/Umbraco.StorageProviders#readme
Suddenly, today, this is no longer working. Despite no version, configuration or code changes, media is now being stored on the file system.
I've checked csproj and the same version is there
		<PackageReference Include="Umbraco.StorageProviders.AzureBlob" Version="1.0.0" />
	"Umbraco": {
		"Storage": {
			"AzureBlob": {
				"Media": {
					"ConnectionString": "DefaultEndpointsProtocol=https;AccountName=xxxx;AccountKey=xxxx;EndpointSuffix=core.windows.net",
					"ContainerName": "media"
				}
			}
		},

Configuration copied from appsettings and matches the copy/paste configuration from Azure. Container name the same.
			services.AddUmbraco(_env, _config)
				.AddAzureBlobMediaFileSystem()
				 .AddBackOffice()
				 .AddWebsite()
				 .AddComposers()
				 .Build();

And
			app.UseRouting();
			app.UseImageSharp();
			app.UseStaticFiles();
			app.UseUmbraco()
				 .WithMiddleware(u =>
				 {
					 u.UseBackOffice();
					 u.UseWebsite();
					 u.UseAzureBlobMediaFileSystem();
				 })...

I have not specified
.AddCdnMediaUrlProvider()
but that is listed as optional.
We DO have a validator for height/width to mitigate querystring manipulation but this is returning OK as it was before (unlikely to be relevant but included for completeness).
		// ImageSharp
		services.AddImageSharp(
			 options =>
			 {
				 options.OnParseCommandsAsync = c =>
					 {
						 var imageSharpValidator = new ImageSharpValidator();
						 return imageSharpValidator.Validate(c);
					 };
			 });

However, I have commented this out with the same result.
I can't see a reason why this would have stopped working, and as far as I can find nothing has changed in terms of how Azure might be dealing with how images might be being written to Azure storage.
Can anyone think of a reason why I might be encountering this issue?
Thanks.

@drbldgtl I can see two potential issues:

The AddAzureBlobMediaFileSystem() should be called after all Umbraco services are registered (just before the Build(), like shown in the read-me), otherwise services and configuration might be overwritten by Umbraco's defaults;
Calling services.AddImageSharp() will also reset all services and configuration to ImageSharps defaults, depending on when this is executed.

You can add the custom OnParseCommandsAsync using:
builder.Services.Configure<ImageSharpMiddlewareOptions>(options =>
{
    options.OnParseCommandsAsync = c =>
    {
        var imageSharpValidator = new ImageSharpValidator();
        return imageSharpValidator.Validate(c);
    };
});

Also note that using this custom callback will override the default one Umbraco sets that removes width/height parameters that exceed the configured maximums...


How can i generate an animated webp image with multi images?

Looking forward to hearing from you

This requires the future libvips v8.9.0 and PR #2012

Thanks for your reply, sharp is a great library, hope to use this feature in the official version as soon as possible.


IDENTITY-7024 - Policies are not getting deployed until server is restarted

Issue migrated from: https://wso2.org/jira/browse/IDENTITY-7024
Steps to reproduce

Create a role

Create a user and assign the role

Follow the steps given in [1] and create a SP and publish a policy with the created role.

Then delete the SP and the policy and recreate them and try to log into the SP with a user who is not assigned to the role created.

Expected Outcome:

User should not be able to authenticate

Actual Outcome

User is successfully authenticated.

Labels
Type: Bug
Component/s: xacml
[1] -https://docs.wso2.com/display/IS530/Configuring+Access+Control+Policy+for+a+Service+Provider

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


Various suggestions for changes and improvements.

Renames SequentialC to C, and MulticoreC to Multicore, in line with Futharks convention. This also simplifies the code in a number of places.
Unifies the _gen_c functions by using to_feature() instead of having different functions.
Removes the "None" backend.
Simplifies the code in a number of places, and handles some clippy warnings.
Panics and stops the process if the futhark compilation fails, instead of potentially failing silently.
Adds optimization flags for the different backends in build.rs.
Begins an implementation of explicit free(), in order to allow handling of #15. Implementing Drop would require a much more involved rewrite it seems. Being able to explicitly call free() instead might be good enough, and work.

Looks like some good changes.

Begins an implementation of explicit free(), in order to allow handling of Missing deallocation of context object #15. Implementing Drop would require a much more involved rewrite it seems. Being able to explicitly call free() instead might be good enough, and work.

Regarding this point, I think the free function should be marked unsafe as the caller have to ensure that no methods to it are ever used again else we would run into a use-after-free.
The solution would likely be to remove the inner arc from the type and resolve the issue in that way, though this leads to some degradation of the user experience so maybe the api has to be changed around a bit for it.

I used the built-in github "sync fork" functionality, but that turns out to merge the master branch into the fork, so I undid it, and found a way to rebase instead. This is why the history has been messed up a bit.


Feature: Add IP via API

Thanks for making/maintaining this app. I have a feature request.
I have Opnsense running and want to seutp a cronjob to iterate through dhcp.leases. I will add new IPs via the API.
From the docs, I don't see an option to add new IPs, only edit.

+1.
and hostnames, etc etc.


vxVerifyGraph

hi,I want to ask a question, hope you can help me
I used this routine
https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-acinto7/latest/exports/docs/vision_apps/docs/user_guide/APP_C7X.html
I modified the app_create_graph(AppObj *obj) in the main() function of the app_c7x_kernel function
I want the photos created to be RGB, and the output is also RGB
Therefore, I modified this variable
obj->input_img1 = vxCreateImage(obj->context, obj->width, obj->height, VX_DF_IMAGE_U8);
I changed VX_DF_IMAGE_U8 to VX_DF_IMAGE_RGB
obj->input_img1 = vxCreateImage(obj->context, obj->width, obj->height, VX_DF_IMAGE_RGB);

vxVerifyGraph() Reported an error
ERROR: Input/Output image format not correct !!!
0.2188s:  VX_ZONE_ERROR:[ownGraphNodeKernelValidate:535] node kernel validate failed for kernel app_c7x_kernel.img_add at index 0
0.2206s:  VX_ZONE_ERROR:[vxVerifyGraph:1947] Node kernel Validate failed
0.2213s:  VX_ZONE_ERROR:[vxVerifyGraph:2115] Graph verify failed
0.6728s:  VX_ZONE_ERROR:[tivxObjectDeInit:180] Is kernel use failed
0.6753s:  VX_ZONE_ERROR:[tivxObjectDeInit:276] Is error use failed
The error function is  node->kernel->validate()
status = node->kernel->validate(node, node->parameters,  num_params, meta);
The result of the statue is：-10

status ：-10 corresponds to the definition as：
VX_ERROR_INVALID_PARAMETERS         = -(vx_int32)10,/*!< \brief Indicates that the supplied parameter information does not match the kernel contract. */
When the status is 0, it is successful

Hope you can help me answer, thank you very much

read the parameter of the kernel


Old device keys not removed in etcd

when we recompiled dacd to test all names on the DAC, previous nvme0n1 was not updated or removed. it should also be noted that dacd currently treats nvme0n1 as the mgt and the mdt in lustre

This is fixed in the new code base by having a single key for each host. There might be some strange issues the follow on from this work, but its better now.


Add whitespace as safe char

In react table it should be safe to use white spaces in accessors.
For example accessor = 'nospace.with space' will be split up into ['nospace', 'with space'] which is used like normal keys starting from some base object base_obj['nospace']['with space'].
Details can be found in https://github.com/tannerlinsley/react-table/blob/master/src/utils.js#L202

Coverage remained the same at 90.934% when pulling 36ed6ab515d2a427aa98b077892eca61f8e6ca1b on RobinPapke:master into 689536a7585311f803bd5a39d3134d1ba144a7b0 on kayak:master.


FAQ ALB ip vs instance mode rationale incorrect?

How do I use Karpenter with the AWS load balancer controller?
Set the ALB target type to IP mode for the pods. Use IP targeting if you want the pods to receive equal weight. Instance balancing could greatly skew the traffic being sent to a node without also managing host spread of the workload.

This sounds incorrect?  I think instance-mode will send traffic equally to all nodes (to a NodePort), and thence equally to all pods (that are ready and match the service selector).
Maybe this section is confusing instance-mode with internalTrafficPolicy=Local ?

Hey Gus! Feel free to cut a PR. I can check in with @chrisnegus on where this information came from.

@anguslees it probably depends on how pods are distributed across the nodes in the cluster. If you don't have a pod anti-affinity policy or are not using topology spread constraints, multiple pods in a Deployment can wind up running on a small number of instances. IP targets are generally recommended because it avoids routing traffic through kube-proxy (> overhead). Unless you're using IPVS, kube-proxy will always default to RR for routing traffic so, assuming an even distribution of pods and a traffic policy of cluster, each pod should have equal weight when the target type is instance.

routing traffic through kube-proxy (> overhead)
Curious if we have benchmarks on this. IPTables should be pretty fast at most scales.

Using IP targets can preserve the source IP in the HTTP header, making it easier to trace back to the source of the traffic. While I think the recommendation is sound (use IP targets) the rationale might need to be updated.

And just to be clear, I'm saying instance mode will send an equal number of queries to pods even when those pods are packed unevenly onto nodes.
(Because the pod-level assignment is actually done by kube-proxy and iptables RR as you described)

We decided that this type of content is best suited for the AWS load balancer documentation. So I removed the content from the Karpenter FAQ (see PR #2245). I then opened an issue for the ALB docs (see Issue 2747).


bots UI: Display message for empty 'Active/Inactive bots' tab.

Add a line of text stating that there are no active or inactive bots.
This is for better understanding of the user, as blank screen that
used to appear in case of no bots being present might seem broken
to some.
Follow up task for #5733

Merged, after fixing the English in the error message.  Thanks @abhijeetkaur!


refactor: BlockExplorerLink component

Thank you for your contribution to the KodaDot NFT gallery.
👇 _ Let's make a quick check before the contribution.
PR type

[x] Bugfix
[ ] Feature
[ ] Refactoring

What's new?

[x] PR closes #3298
[ ] Requires deployment <rubick/magick_issue>
[ ] <brief_description_of_what_I've_added>

Before submitting Pull Request, please make sure:

[x] My contribution builds clean without any errors or warnings
[x] I've merged recent default branch -- main and I've no conflicts
[x] I've tried to respect high code quality standards
[x] I've didn't break any original functionality
[x] I've posted a screenshot of demonstrated change in this PR

Optional

[x] I've tested it at </rmrk/collection/26902bc2f7c20c546a-1FVG7>
[ ] I've tested PR on mobile and everything seems works
[ ] I found edge cases
[ ] I've written some unit tests 🧪

Had issue bounty label?

[x] Fill up your KSM address: Payout

Community participation

[x] Are you at KodaDot Discord?

Screenshot

[x] My fix has changed something on UI; a screenshot is best to understand changes for others.

RMRK:
history\holder\filppers...

BSX:
history\holder\filppers...

pay 50

😍 Perfect, I’ve sent the payout
💵 $50 @ 45.99 USD/KSM ~ 1.087 $KSM
🧗 Caiv9TbPz68q5dC8EcHu5xKYPRnremimGzqmEejDFNpWWLG
🔗 0x77fc597b0732c11c5adca231363f34c8088993167eaebca4dc084c4faf6ddc5b
🪅 Let’s grab another issue and get rewarded!
🪄 github.com/kodadot/nft-gallery/issues


[Feature][Plugin]TaskSPI

Purpose of the pull request

Brief change log

Verify this pull request

This pull request is code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:

Codecov Report

Merging #6133 (2dd5279) into dev (1f838e6) will decrease coverage by 3.30%.
The diff coverage is 2.69%.

@@             Coverage Diff              @@
##                dev    #6133      +/-   ##
============================================
- Coverage     42.83%   39.52%   -3.31%
+ Complexity     3614     3382     -232
============================================
  Files           635      650      +15
  Lines         25901    25975      +74
  Branches       2936     2871      -65
============================================
- Hits          11095    10267     -828
- Misses        13735    14768    +1033
+ Partials       1071      940     -131

Impacted Files
Coverage Δ

...in/alert/dingtalk/DingTalkAlertChannelFactory.java
0.00% <ø> (ø)

...r/plugin/alert/email/EmailAlertChannelFactory.java
98.63% <ø> (ø)

...plugin/alert/feishu/FeiShuAlertChannelFactory.java
97.14% <ø> (ø)

...ler/plugin/alert/http/HttpAlertChannelFactory.java
96.55% <ø> (ø)

...plugin/alert/script/ScriptAlertChannelFactory.java
95.23% <ø> (ø)

...r/plugin/alert/slack/SlackAlertChannelFactory.java
100.00% <ø> (ø)

...plugin/alert/wechat/WeChatAlertChannelFactory.java
97.50% <ø> (ø)

...scheduler/api/controller/AlertGroupController.java
7.69% <0.00%> (-0.65%)
:arrow_down:

...ache/dolphinscheduler/common/enums/PluginType.java
0.00% <0.00%> (ø)

...pache/dolphinscheduler/common/utils/DateUtils.java
77.24% <0.00%> (-4.52%)
:arrow_down:

... and 118 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1f838e6...2dd5279. Read the comment docs.


fix(toast): remove word-break attribute

Proposed Changes
Bug: https://coveord.atlassian.net/browse/ADUI-7490
Remove the word-break attribute as it is preferable to display a full word on a second line than break it.
Before:

After:

Potential Breaking Changes
Shouldn't be the case.
Acceptance Criteria

[ ] The proposed changes are covered by unit tests
[ ] The potential breaking changes are clearly identified
[ ] README.md is adjusted to reflect the proposed changes (if relevant)

Before

After

Before

After
![image](https://user-images.githubusercontent.com/35579930/134524188-07786157-a07d-4a81-82a0-c7706e641f75.png

You've bring a good point! Do you think there's some instance that it might happen? (like a warning that has a really long regex or something?) If so, I'll close and reject the initial bug (I know that this component will soon be revamp, so at some point this issue will not be seen anymore)

Do you think there's some instance that it might happen? (like a warning that has a really long regex or something?)
It can happen if displaying the id of a resource or just a silly name that the user has given to a resource.
I'll close and reject the initial bug
There might be a way to have the best of both 🤓

I'll close and reject the initial bug

There might be a way to have the best of both

You right, I found a workaround that will break a word only if a specific word is really long.


chore: release main

:robot: I have created a release beep boop
postgres-env: 2.0.0
2.0.0 (2024-10-25)
⚠ BREAKING CHANGES

✨ setup postgres-env project (#212)

Features

✨ setup postgres-env project (#212) (6330d49)

Bug Fixes

🐛 fix template and image names (#197) (e481ea2)
remove development environment  from create-issue-action (#28) (09f31e4)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

postgres-env-v2.0.0
:sunflower:


Add note about devhub/latest tag

Adding a note about our internal process for keeping our node template, tutorial write-ups and solutions up-to-date.
Not exactly sure where this should live but this feels ok for now.
CC: @NukeManDan: step 3. needs a little more details. Can you add your edits in please? Just commit directly to this PR 😎 .

Good start! 😀
I think we should make these changes, and also describe the E2E testing required before anyone moves this tag. You make changes that make it into main on the templates, and only after testing do you move the latest tag. So the steps are in need of being tweaked.

Do you have any other suggestions to address the E2E testing? Feel free to commit directly to this branch.

@NukeManDan : ping ! :)

This can be closed I believe. We're no longer following this process anymore. @NukeManDan can you find a reference PR or issue to add more context and close?

This seems to be obsolete with the other changes and this tag never made it into the core substrate repo, so I suggest closing this as clutter that won't be merged.


Fix #1 and Add better Types

This Fixes #1, adds improved types & makes #5 redundant.

This still needs some testing.

thank you very much @N0tExisting for contributing :+1:. I'm going to check your PR

@jfgodoy What do you think about adding a test project, that can be used to test this package?

sorry @N0tExisting, I had to do a lot of changes to make ssr works. This PR now requires a lot of work to be up to date. The good news is that I have added support for "inline" param (or any other) in the main branch.
I would love to see this PR split in three:

support for "comp" (if you are still interested)
types
update documentation

thank you very much for your time :+1:

@jfgodoy Sorry for the late response I was working on a bunch of different stuff.
Will try to get this done on the weekend
Note that updating the documentation and types go hand in hand.


test_duplicated e2e test pod is getting OOMed on OpenShift

Running the test_duplicated_pod E2E test on an default OpenShift4 cluster would often get OOM killed by the Kernel. I am assuming the Kernel is OOMKilling them since there is no LimitRanges set.
The Node has a quite beefy VM already (amazon EC2 m4.large) and not sure if we can increase this
This is probably not OpenShift specifics, it just that I have access to test it in there.

/bug

/kind flake
/area testing


mask expiry

I've got a rough idea for how to express this:
<jess> addmask /^jesstest!/ +1d $spam

but the question is: one day from when? syn masks are an absolute expiry, so it would mean "one day from this moment", but those never really made sense. something better might be "one day from the last time this mask catches something".
another note to be made is maybe what we want the "expiry" to be is "time until downgrade" - thus, after a day, it would downgrade from LETHAL to WARN, and then after another day it would downgrade from WARN to disabled.

i like the downgrade aspect of it, good idea

Probably wouldn’t be hard to implement either of those things. One question though is how often would we want to check for expired masks? My first instinct is to check every time we get a PONG from the server but maybe that’s too often?

I'm interested in how you'd do that without leaving timers hanging around if a mask has already been toggled. my idea was loop every second and check for expired things


AllyManager.request - Cannot read property push of undefined

If i set Memory.allyTrading to false, then inside simpleAllies.ts -> tickConfig() the this.myRequests = [] get never initialized.
If some requests like requestAttack() or requestResource() get called later on from other functions an error will happen.
My solution:
    tickConfig() {
        this.myRequests = []

        if (!Memory.allyTrading) return

        if (!Memory.allyPlayers.length) return

        this.currentAlly = Memory.allyPlayers[Game.time % Memory.allyPlayers.length]

        const nextAllyName = Memory.allyPlayers[(Game.time + 1) % Memory.allyPlayers.length]
        RawMemory.setActiveForeignSegment(nextAllyName, Memory.simpleAlliesSegment)
    }

Thanks! Good fix


The forgetme tool does not replace the pseudonym when the username is associated with the domain name

Steps

Create a user : test
Login to the management console with user test
Try to delete a user without proper permissions. Then an exception will be logged
Logout from management console
Delete the user
Run the forgetme tool

Issue
Login and logout logs are replaced. But, the name in the exception was not replaced.
Ex:
WARN {org.wso2.carbon.user.mgt.UserRealmProxy} -  An attempt to delete a user who has admin permission by user : PRIMARY/test

@dilinisg This particular line logs about an administrative operation which cannot be performed by an end user. Hence not anonymizing this log is correct.


[FeatureFlag] Propose a simple version

Simple FeatureFlags component
Introduction
Co-authored with @Neirda24 who is at the origin of this component.
See initial pull request #51649.
Proposal
The FeatureFlags component provides a service that checks if a feature is enabled. A feature is a callable which returns
a value compared to the expected one to determine is the feature is enabled (mostly a boolean but not limited to).
The component
Declare features and the default result if a feature is not found:
<?php

use Symfony\Component\FeatureFlags\FeatureChecker;
use Symfony\Component\FeatureFlags\FeatureRegistry;

$features = new FeatureRegistry([
    'weekend_feature' => fn() => date('N') >= 6,
    'feature_version' => fn() => random_int(1, 3),
];
$featureChecker = new FeatureChecker($features, false);

Check the feature's value:
$featureChecker->isEnabled('weekend_feature'); // returns true on weekend
$featureChecker->isEnabled('not_a_feature'); // returns false

Check the feature's value on a specific value or simply retrieve it:
$featureChecker->isEnabled('feature_version', 1); // returns true if random version is 1
$featureChecker->getValue('feature_version'); // returns a random version between 1 and 3

Once the feature's value is resolved, it is stored to make it immutable:
$featureChecker->getValue('feature_version'); // returns a random version between 1 and 3
$featureChecker->getValue('feature_version'); // returns the previous value

The bundle
Feature as a service
With a name
#[AsFeature('beta_feature')] # the name could be optional and default to the FQCN
class MyFeature
{
    public function __construct(private readonly \Symfony\Component\HttpFoundation\RequestStack $requestStack)
    {
    }

    function __invoke(): bool
    {
        return $this->requestStack->getMainRequest()->request->getBoolean('use_beta');
    }
}

With a specific method
#[AsFeature('beta_feature', method: 'compute')]
class MyFeature
{
    function compute(): bool { /* ... */ }
}

On a method
class MyFeature
{
    #[AsFeature('beta_feature')] # the name could be optional and default to the FQCN + "::" + the method's name
    function compute(): bool { /* ... */ }
}

Usage with Twig
{% if is_feature_enabled('my-feature') %}
    {# do stuff #}
{% endif %}

You're using version {{ get_feature_value('feature_version') }}.

Usage with Router
Using yaml
my_route:
    # ...
    condition: 'is_feature_enabled("weekend_feature")'

my_route:
    # ...
    condition: 'get_feature_value("feature_version") == 1'

Using attribute
#[Route(condition: 'is_feature_enabled("weekend_feature")')]

#[Route(condition: 'get_feature_value("feature_version") == 1')]

The profiler

Going further (to discuss)

[ ] Add tests
[ ] Add documentation
[ ] SaaS tool integration (Gitlab, DarkLaunchy, etc.) by adding a dedicated FeatureRegistry

class GitlabFeatureRegistry implements FeatureRegistryInterface
{ /* call Gitlab API to get the feature's value */ }
class ChainFeatureRegistry implements FeatureRegistryInterface
{ /* iterate over inner registries to get the feature's value */ }

[ ] Declare feature in configuration using the ExpressionLanguage

feature_flags:
    features:
        beta_feature: 'request.query.getBoolean("beta")'

[ ] Add {% if 'my-feature' is enabled %} Twig tag
[ ] Add a debug command
[ ] Allow feature's value caching (ex: opening my feature to a percentage of my visitors will only require a single
user get the same value)
[ ] Propose pre-implemented features (see previous example)

Closed in favor of https://github.com/symfony/symfony/pull/53213.


Allow to switch reqwest tls implementations

OpenSSL is causing a lot of pain during cross compilation. Allowing to choose the TLS implementation for any crate that uses it is a big help.


Delay v1.2 by 1 week

Let's delay release v1.2 by 1 week as we had a blocker[1] that delayed https://github.com/kubevirt/kubevirt/releases/tag/v1.2.0-rc.1.
This will give us a bit more time to stabilize the release branch.

https://github.com/kubevirt/kubevirt/issues/11308

/lgtm
Thanks!


Update README.md

@shoc71 This would be the final PR for the time being

prolly should have it as [on hiatus]

I thought you wanted to have KOG put away for good, that's why I put "indefinite"


Remove is.layout, layout_container_id, and redundant component test

This PR proposes changes to Dash for R layout handling, in efforts to bring this aspect of the internal API in line with Dash for Python:

:hocho: is.layout() and layout_container_id()
:hocho: redundant is.component(layout_) test
:hocho: componentify step within layout_render
remove implicit dependency on dashHtmlComponents

https://github.com/plotly/dashR/blob/9aace061a7a957fc79285cc21a87a212489ecf1b/R/utils.R#L18-L25
The original implementation of layout_render sought to allow users to pass components as ..., which is non-standard for Dash. We now use ... for wildcards within components (such as html-* and aria-*), so this is no longer possible.
Closes #120.

This PR should fix the issue noted in https://github.com/facultyai/dash-bootstrap-components/issues/370; I'll test that package when Dash for R is rebuilt and post an update with my findings.

@alexcjohnson @Marc-Andre-Rivet I believe I have addressed the underlying issue which prevented merging this PR previously. The problem was related to the original implemention of layout(), which had remained essentially unchanged since the early development of Dash for R:
https://github.com/plotly/dashR/blob/9c5a30760e3be985c866f122e9c2bd6ce2a516a6/R/dash.R#L774-L778
The ... is vaguely analogous to kwargs in Python, and so the earlier code was permitting layouts in which multiple arguments could be used to pass components or functions that return components, e.g.
app$layout(
   htmlDiv("a", id="a"),
   htmlDiv("b", id="b")
)

was seen as valid. This made excising the call to htmlDiv which occurred below difficult, since much of the original layout_render() code was intended to enable users to pass a function, a component with zero or more children, or  a series of components as arguments.
This PR now implements what I believe to be the correct behaviour, and tests to ensure that the syntax above will fail to update the layout. This would be a breaking change in the official release, so I think it's good to tie up this very loose end prior to releasing on CRAN.

💃 Looks great, nice to have this match the Python side more closely.

Yeah, not sure how I didn't pick up on this before, but the immediate impact is that users of third-party components (such as dashBootstrapComponents) won't always need to load dashHtmlComponents when building apps when it isn't explicitly required.

Perhaps at some point we would want the renderer itself to support a list of components as the top-level layout - and then we could allow that in the back ends too. But now is not that time 😁

That seems like it could be potentially desirable, if it doesn't cause sibship issues within React. Seems like <React.Fragment> could help with that:
https://medium.com/@jmegilman/react-error-adjacent-jsx-elements-must-be-wrapped-in-an-enclosing-tag-32bc21c4434b
Anyway, glad to see this one finally getting put to 🛌 .


Update version.py to follow semver rules

In its current state _make_version would generate version strings that were not compatiable with semver rules. This was causing issues in that pre-release versions of the code were being downloaded.
The code has been updated to always include minor version and to use a hyphen to separate pre-release versions.

The following commands all generate an error:
python -c "import semver as s; print(s.parse_version_info('5.0a3'))"
python -c "import semver as s; print(s.parse_version_info('5.0.0a3'))"
python -c "import semver as s; print(s.parse_version_info('5.0-a3'))"
This one works:
python -c "import semver as s; print(s.parse_version_info('5.0.0-a3'))"

I'm curious where are seeing incorrect downloads.  I'm using the same conventions as Python itself, specified in PEP 440, and understood by pip.

I'm seeing it with pip-compile. I'm able to reproduce it if the requirements.in file contains the text "coverage>=4.0a6". As it turns out one of my internal dependencies has this exact line within its requirements file. This seems more like a bug in pip-compile, it shouldn't be going to pre-release versions if the --pre flag is not specified. I'll file an issue with pip-compile. Would you like to close this, since apparently the hyphen breaks compatibility with PEP 440?

pip-tools issue: https://github.com/jazzband/pip-tools/issues/691

Hmm, I had thought that PEP440 was flexible enough to allow semver-compliant numbers, but now I see that it isn't.  This isn't the first time someone pointed out I don't follow semver.
Thanks for writing the bug against pip-tools.  It does seem very strange.  Even stranger is that someone would pin something at "4.0a6"


Add a11y linting and basic aria tags to resolve issues

Resolves #25
By no means is this the end of designing a strong UX for screen reader users. #47 and #48 address two known issues, and issues shall continue to be remediated in place or opened as they are discovered by react-a11y.

LGTM


Version checks are incorrectly returning versions < 1.0.0.

Description
The first issue in https://github.com/opensearch-project/OpenSearch/issues/786 is caused by integration tests trying to fetch 7.10.3 from source. This is because the code thinks 7.10.3 has not been released yet. There are two problems fixed in this PR:

The current unreleased version is 1.0.0 and code needs to understand that 1.0 > 7.x.
The 7.10.3 version has not been released as of time of the fork, and the code needs to express that 7.10.2 has been released.

There's a new set of tests for versions for OpenSearch 1.0 to avoid conflating with version tests that presume that the next released version will be 8 and that the 7 series is not fully released. Thanks @adnapibar for those!
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@dblock I think this PR should be merged into main

@dblock I think this PR should be merged into main

What's the protocol? Does it matter which way we backport?

Closing in favor of https://github.com/opensearch-project/OpenSearch/pull/797


In some iOS devices label is not moved to top

One user in the UX test had this problem.
Can not reproduce in simulator, we need to contact the user for more details.

Looks like a stale issue. Tested to work on iOS 13.3.1 (iPhone 8).


Update to new viv-utils API

Plus some minor improvements
TODO: this depends on new viv-utils release.

shall i do a viv-utils release now? or hold off for any reason?

yes, please, we should be good

https://pypi.org/project/viv-utils/0.7.1/

Thank you! 🙇


Refresh token with same custom claims

This package is great thank you.
We have an issue though that when we refresh a token, we want to encode the same claims from the original access token into the new token. I can't find anything anywhere on how that might be possible. At the moment we are relying on passing the original access token with the refresh request and decoding it and applying the same claims to the new token. However passing the original access token with the refresh token doesn't seem to be a standard practice.
Are you aware of any way to do this? Our thinking was to persist the custom claims in the database. Perhaps adding a column to Passport's oauth_access_tokens table and storing them they way it does with scopes. Not ideal to hack around Passport though.
Is it something that this package could support? We'd be happy to contribute a PR

Hi, maybe I don't understand what you're asking. I just tested the following:

get a token from passport including custom claims
refresh the token using the refresh_token from the token from 1.
The resulting token I get back from that response includes my custom claims.

This seems to be what you want right? This should already work.

🤦 ok that seems to be working. Thanks!


Debugger issue

Why i can't debug csgosimple? I need to setting debugger on default project settings or what?


CreateSession still waiting for response from worker: /job:ps/replica:0/task:0

the pods are as below：
[root@k8s-node1 ~]# kubectl --namespace=liuning get pod -owide
NAME                          READY     STATUS    RESTARTS   AGE       IP              NODE
tensorfenbus-ps-0             1/1       Running   0          27m       <IP_ADDRESS>    k8s-node1
tensorfenbus-session-fh65h    1/1       Running   0          26m       <IP_ADDRESS>   k8s-node2
tensorfenbus-tf-board-n6d28   2/2       Running   0          26m       <IP_ADDRESS>   k8s-node2
tensorfenbus-worker-0         1/1       Running   0          27m       <IP_ADDRESS>   k8s-node2
tensorfenbus-worker-1         1/1       Running   0          27m       <IP_ADDRESS>    k8s-node1
i run python tf_cnn_benchmarks.py --local_parameter_device=gpu --num_gpus=1
--batch_size=32 --model=resnet50
--job_name=worker --ps_hosts=k8s-node1:2225
--worker_hosts=k8s-node1:2225,k8s-node2:2225 --task_index=0
in work node
and then run python tf_cnn_benchmarks.py --local_parameter_device=gpu --num_gpus=1
--batch_size=32 --model=resnet50
--job_name=ps --ps_hosts=k8s-node1:2225
--worker_hosts=k8s-node1:2225,k8s-node2:2225 --task_index=0
in ps node
but the work node log show ：
2018-06-11 11:34:29.568785: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties:
name: GeForce GTX 1080 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.582
pciBusID: 0000:04:00.0
totalMemory: 10.91GiB freeMemory: 398.38MiB
2018-06-11 11:34:29.568848: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:04:00.0, compute capability: 6.1)
E0611 11:34:29.572333602     348 ev_epoll1_linux.c:1051]     grpc epoll fd: 24
2018-06-11 11:34:29.577958: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job ps -> {0 -> k8s-node1:2225}
2018-06-11 11:34:29.577990: I tensorflow/core/distributed_runtime/rpc/grpc_channel.cc:215] Initialize GrpcChannelCache for job worker -> {0 -> localhost:2225, 1 -> k8s-node2:2225}
2018-06-11 11:34:29.580147: I tensorflow/core/distributed_runtime/rpc/grpc_server_lib.cc:324] Started server with target: grpc://localhost:2225
TensorFlow:  1.4
Model:       resnet50
Mode:        training
Batch size:  32 global
32 per device
Devices:     ['/job:worker/task:0/gpu:0']
Data format: NCHW
Optimizer:   sgd
Variables:   parameter_server
Sync:        True
Generating model
WARNING:tensorflow:From tf_cnn_benchmarks.py:772: get_or_create_global_step (from tensorflow.contrib.framework.python.ops.variables) is deprecated and will be removed in a future version.
Instructions for updating:
Please switch to tf.train.get_or_create_global_step
WARNING:tensorflow:From tf_cnn_benchmarks.py:627: get_global_step (from tensorflow.contrib.framework.python.ops.variables) is deprecated and will be removed in a future version.
Instructions for updating:
Please switch to tf.train.get_global_step
2018-06-11 11:34:44.477725: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:ps/replica:0/task:0
2018-06-11 11:34:44.477831: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1
2018-06-11 11:34:54.477958: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:ps/replica:0/task:0
2018-06-11 11:34:54.478023: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1
2018-06-11 11:35:04.478242: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:ps/replica:0/task:0
2018-06-11 11:35:04.478340: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1
2018-06-11 11:35:14.478475: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:ps/replica:0/task:0
2018-06-11 11:35:14.478546: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1
2018-06-11 11:35:24.478709: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:ps/replica:0/task:0
2018-06-11 11:35:24.478773: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1
2018-06-11 11:35:34.478927: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:ps/replica:0/task:0
2018-06-11 11:35:34.478997: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1
2018-06-11 11:35:44.479163: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:ps/replica:0/task:0
2018-06-11 11:35:44.479227: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1
2018-06-11 11:35:54.479470: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:ps/replica:0/task:0
2018-06-11 11:35:54.479553: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1
2018-06-11 11:36:04.479720: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:ps/replica:0/task:0
2018-06-11 11:36:04.479781: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1
2018-06-11 11:36:14.479936: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:ps/replica:0/task:0
2018-06-11 11:36:14.479999: I tensorflow/core/distributed_runtime/master.cc:221] CreateSession still waiting for response from worker: /job:worker/replica:0/task:1
where's wrong

Thank you for your post. We noticed you have not filled out the following field in the issue template. Could you update them if they are relevant in your case, or leave them as N/A? Thanks.
Have I written custom code
OS Platform and Distribution
TensorFlow installed from
TensorFlow version
Bazel version
CUDA/cuDNN version
GPU model and memory
Exact command to reproduce

@tensorflowbutler i update the information


Adds Envoy DaemonSet Support

Adds support for managing Envoy through a DaemonSet resource.
Fixes https://github.com/projectcontour/contour-operator/issues/40
/assign @jpeach @stevesloka @skriss
/cc @Miciah

Commit 862a8e3 adds a label/labelSelector that identifies pods of the DaemonSet as being owned by the DaemonSet. The DaemonSet continues to be labeled as being owned by the Contour.


TrueNAS Scale Support

This might be a bit of an obscure request, but would it be possible for you to add the necessary config to be able to deploy this container on TrueNAS Scale? Third party "apps" (docker services running via k8s) can be installed via a community repo called TrueCharts. I believe it uses helm charts for the configuration. The documentation is here if you're at all interested in doing this: https://truecharts.org/manual/development/chart-structure
If you're not able to then I may attempt to do it myself and open a PR once my server parts arrive and I have it set up (likely a few weeks minimum).

Hello,
I don't have access to one of these but I would be more than willing to add the configuration in!  I've done similar things for Kubernetes which wasn't originally supported.  That was a PR basically someone submitted.
I'd be willing to do the same thing for this if you're able to do this!

Sure thing. I think you can run it in a VM as well since it's just based on Debian Linux. Ill try to get a PR up for it once I'm able to play around more.

Thanks, let me know if you get it going!


:new: Create code description

Codecov Report

Merging #8 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #8   +/-   ##
=======================================
  Coverage   23.58%   23.58%
=======================================
  Files           4        4
  Lines         106      106
=======================================
  Hits           25       25
  Misses         81       81

Impacted Files
Coverage Δ

Source/Extensions/UIApplication+.swift
0.00% <ø> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4fc55c8...af56dbe. Read the comment docs.


Pinning Feature?

Sometimes I find myself wanting a way to "pin" an application to a spot on one of my screens while I continue using nog to change workspaces "behind" it. Something like a way to size a program and then pin it in place and force it to behave as "always-on-top." I imagine this wouldn't be too difficult to do, maybe have a keybinding that triggers a program to go in and out of "pin" mode. This could be useful if you want to have a corner of your screen overlay video or a meeting while switching between workspaces.
I also thought of a secondary "pin" mode that would let you pin an  application to a side of the screen and then have the nog workspace fill the rest of the screen. This would let you do  something like pin a browser window/pdf on the right side of the screen but be able to switch nog workspaces on the left side.
Would something like this be a desirable feature?

Would this be something similar to a picture-in-picture mode? Where the "pinned" application isn't actually pushed onto the grid, but rather is kind of like a free floating window that always stays on top. Basically it would be like having an unmanaged window that stays on top when switching workspaces.
If my understanding is correct I can definitely see a use case for such a feature for my current workload.

Yes, it's exactly that. I think I would even apply the manage styles onto whatever gets pinned. I might make a proof of concept branch for this because I imagine how you interact with the pinned window will be a bit of trial and error from a user experience perspective.

I might make a proof of concept branch for this because I imagine how you interact with the pinned window will be a bit of trial and error from a user experience perspective.

👍 . Can't really imagine any usecases for this atm, so having a PoC branch might be useful.

To be honest this only requires a few lines of code, so why not implement it even if only a few people use this?

Yeah, I'm hoping to find some time this week to do it. Shouldn't be too bad.

I made a pinning branch with a WIP pull request #257 that adds two keybindings: toggle_pin and toggle_view_pinned. Here's my config for it

nog.bind("Alt+Shift+P", nog.window.toggle_pin)
nog.bind("Alt+P", nog.window.toggle_view_pinned)

and so, the way it works is you focus an application window (not one that is managed by nog) and hit Alt+Shift+P and it'll pin the window right where it is and it'll stay there in "always-on-top" mode while you can switch workspaces behind it. I currently have it set to always show the program's title bar so you can use that to move the pinned window. And then, the same keybinding unpins it.
The other keybinding, toggle_view_pinned, shows/hides all currently pinned windows.
I have it setup to work with work_mode and quitting nog so that you're not left with weird pinned stuff. I'm planning on adding it to the workspace.grid file too so that if nog crashes you can re-launch and be able to then unpin the apps you've pinned.
Code-wise there's a little repetition I want to address still too but it's not too bad.
Branch build here @keepitsane I'm curious what you think haha

I like the event handling idea. Might be useful, although I agree it probably should be a separate issue. Would we keep the existing match feature? wondering if I should just finish up this feature without the "pin on launch" since it would just work without extra code with the event feature.

I think I found a bug. If you pin an application that Nog is not set to ignore in the rules, and pin it when it is unmanaged and toggle the pinning it will be forced managed after.
Lets say I have a specific browser window that I want to pin and that I don't already have a predefined rule for to be ignored by Nog. I open the window and Nog will start managing automatically by default (this is expected behavior). I then manually unmanage that specific window using my keybind, and then pin it. I then decided to toggle the pinned windows to be hidden, and after sometime I want to bring the pinned windows back so I toggle pin on. Now the window instead of remaining pinned will be picked up by Nog and put back into managed mode and snap it back on to the grid.
I know we initial discussed the pinning feature for applications that are set to not be managed by Nog in the config, but I can still see this use case being useful. Let me know what you think?

yeah, I thought about this some.. like... should pinning be handled separately from "managing"? Should an application either be pinned or managed but not both?
For me... I think if I pin a managed window, I would want it to get unmanaged and now be solely pinned. Programs should either be handled via tiling, via pinned or handled by the operating system.
I can set it up that way so that if you pin something it "pop" it off the tiling graph and if you try to manage a pinned item then it "pops" it off the pinned set. Would that make sense?
also, sorry I haven't finished this sooner, hopefully this week I can work more on it.

hold the Alt key and then move windows by clicking and holding with your mouse or something

Holding the Alt key might not be necessary, that would require some input code that checks to see if Alt key is held. It's possible but not really a requirement, it could just be a keybinding that triggers a Pinned-Window-Move mode.

move windows by clicking and holding with your mouse

This was specifically for programs that are pinned. Right now, if you pin an app, if you want to move it you have to put your mouse over the app's menu bar thing and click and hold. Alternatively, it would be nice if you could hold or press a keybinding to turn the mouse into that move cursor and let you move the app by clicking and holding anywhere within it rather than just on its menubar.
The use case of this is if you have a meeting or something that you've pinned and you switch to another workspace and want to quickly move its position.
SEPARATELY
I thought more about your pinning-to-workspace idea and thought what if you had a set of tile-managed workspaces and separately a set of pinned-floating window workspaces? Would that be useful or confusing? Like, being able to put a set of programs in a floating workspace that you can overlay on a tiling workspace. It seems like a lot to track but also maybe could be useful?

Holding the Alt key might not be necessary, that would require some input code that checks to see if Alt key is held. It's possible but not really a requirement, it could just be a keybinding that triggers a Pinned-Window-Move mode.

I think I misunderstand the way you are implementing the pin mode. Could you elaborate?
I expected the pinning to be just toggling the always on top flag on windows.

I thought more about your pinning-to-workspace idea and thought what if you had a set of tile-managed workspaces and separately a set of pinned-floating window workspaces

I don't really see a use case for this.

I think I misunderstand the way you are implementing the pin mode. Could you elaborate?
I expected the pinning to be just toggling the always on top flag on windows.

Yeah, that's definitely how it works. That text about holding the Alt key was like... if the user pins a window (making it always on top) but also wanted the window to display without a taskbar, they won't be able to reposition the window (like, click + hold to drag and drop the window to another position on their monitor).
But, again, that's somewhat unnecessary for an initial implementation.

I updated the PR so it's on latest and added a couple more features

made it so when toggling viewing of pinned windows it'll focus the newly displayed window and when you toggle it away it'll put focus back on the current workspace.
addressed what @keepitsane pointed out so that nog won't manage a window if it's pinned or pin a window if it's managed

I haven't updated the docs yet but this is how you can configure it in your lua config.
nog.nbind("alt+p", nog.toggle_view_pinned)
nog.nbind("alt+shift+p", nog.win_toggle_pin)

I also update the PR with a checklist of the progress on this

Finally got to test your changes and it addresses my problem perfectly. Thank you very much!

I finally updated the PR related to this and it's in a state where I think it's "feature complete"
#257
the build can be found here
With these changes, you can either pin a window globally (above all workspaces) or to specific workspaces. The latter allows you to make a workspace of just floating windows that are pinned to it, or just have pinned windows only on one workspace. Please note if you're using multiple monitors what workspace is focused when you pin to a workspace and don't get super confused like I did.
Here's how I've currently setup my config as an example
nog.nbind("alt+p", nog.toggle_view_pinned)  -- show/hide globally pinned windows
nog.nbind("alt+shift+p", function ()
    local id = nog.get_focused_win()         -- returns the ID of the window that has focus according to the OS (not nog)
    nog.win_toggle_pin(id)                        -- globally pins the window that matches the passed in ID

    if nog.win_is_pinned(id) then              -- win_is_pinned returns true or false on whether the given window is pinned
        nog.win_hide_title_bar(id)              -- this is to hide the title bar of the window. There's also win_show_title_bar
    end                                                     -- and win_hide_border/win_show_border
end)
nog.nbind("alt+o", function ()
    local ws_id = nog.get_current_ws()     -- returns the ID of the currently focused workspace
    nog.ws_toggle_view_pinned(ws_id)    -- toggles visibility of pinned windows on the given workspace
end)
nog.nbind("alt+shift+o", function ()
    local id = nog.get_focused_win()        -- same as above
    nog.win_toggle_ws_pin(id)                 -- pins the window to the currently focused workspace

    if nog.win_is_pinned(id) then
        nog.win_hide_title_bar(id)
    end
end)

I highly recommend setting up an indicator to show if anything is pinned. I did this
nog.components.custom = function (cb)   -- just a helper function to make creating indicators easier
  return {
    name = "CustomIndicator",
    render = function()
      return {{
        text = cb(),
      }}
    end
  }
end

nog.config.bar.components = {
    left = { nog.components.workspaces() },
    center = { nog.components.current_window() },
    right = {
        nog.components.active_mode(),
        nog.components.padding(4),
        nog.components.custom(function ()                          -- using the helper function I declared above
            if nog.has_pinned() then                                        -- returns true if there's a globally pinned window
                return "GL_PIN"                                                 -- this can be anything
            else
                return ""                                                             -- just an empty string if nothing is pinned
            end
        end),
        nog.components.padding(1),                                  -- little padding between the indicators
        nog.components.custom(function ()                                   -- same helper function as above
            local id = nog.get_current_ws();                                     -- returns the active workspace ID
            if nog.ws_has_pinned(id) then                                       -- returns true if the current workspace has something pinned
                return "WS_PIN"                                                        -- again, this is arbitrary
            else
                return ""                                                                     -- empty string if the workspace has nothing pinned
            end
        end),
        nog.components.fullscreen_indicator("[]"),                             -- the rest of this is just my normal bar configuration
        nog.components.padding(1),
        nog.components.split_direction({ "|", "-" }),
        nog.components.padding(1),
        nog.components.datetime("%e %b %T"),
    }
}

Also, you can configure the rules of a program to automatically global pin
nog.config.rules = {
  ["notepad.exe"] = {
    action = "pin"
  },

Again, the build is here
@keepitsane  let me know what you think!

I updated the config example in my last message because I realized today that the custom_indicator helper function should use the display_id of the bar it's on
So, small tweak
nog.components.custom = function (cb)
  return {
    name = "CustomIndicator",
    render = function(display_id)
      return {{
        text = cb(display_id),
      }}
    end
  }
end

and in the rules config
        nog.components.custom(function (display_id)
            local ws_id = nog.get_focused_ws_of_display(display_id)
            if nog.ws_has_pinned(ws_id) then
                return "WS_PIN"
            else
                return ""
            end
        end),

implemented in #257