True?  "In Rust, subtyping derives entirely from lifetimes." [Subtyping page]

Although it is true that Rust does not support structural subtyping nor record subtyping, it does support nominal subtyping with regard to the relationship between structs (or traits) and the trait they implement, much like the relationship in C++ between some class and the C++ abstract base it inherits from. This check is not a lifetime check, because we are not checking on lifetime scopes, but rather whether the requested type coercion is valid based on information known about the subtype relationship between the two types.
Some evidence for this is visible in the fact that Rust will flag as a compile error whenever an attempt is make to coerce a struct reference (&S) into a trait reference (&T) that the struct does not implement. Reversing them (trait to struct) will also fail. I suspect, though I have not tested it, that this subtyping check is handled properly when dealing with contravariance (e.g., fn(T) -> U). If not, shouldn't it be for the sake of type safety?
There is yet another form of subtyping that Rust supports, besides lifetime-based and trait/struct-based:  the ability to coerce a reference from &mut T to &T (but not the reverse)
I would recommend broadening this sentence to say something more like:  "In Rust, subtype checks focus on lifetimes, traits, and the mutability of the reference"  and then provide a few extra paragraphs that briefly describe these relationships. I think it is appropriate to focus mainly on lifetimes throughout the rest of the page, as that is the most common subtyping failure that readers will run into.

These conversions are called coercions, not subtyping. They behave more like C's integer promotion. Coercions are different from subtyping in several senses: Coercions sometimes involve computation. Coercion rules are not lifted over data structures. Coercions are resolved in an ad-hoc way during type checking. Supposedly, Rust intentionally uses the different words for them to avoid confusion.

I agree with qnighy's assessment. I would probably accept a PR that highlights this difference though.  So, that is true. But I believe the fact that coercion is involved does not disqualify it from also being a subtype. Coercion is an implementation detail that relates to how a value is represented in one type vs. another.
As I understand it, we use type theory/systems to do inference and to provably ensure (type) safety. The role of subtyping is to ensure that we can safely substitute a value of one type into another type (subsumption).
The basic mathematical properties that subtyping enforces are straightforward: it goes only in one direction (S->T being valid does not imply T->S), it is transitive (S->T and T->U implies S->U), and if you insist on going in both directions, it must be the same type (S->T and T->S implies S==T). As the nomicon page correctly describes, subtyping also comes with a bunch of really cool variance rules, particularly when substituting one function signature with another (the parameters are contravariant but the return value is covariant) as well as the fact that reference mutability is contravariant.
When you apply these rules to a compiler's type system, you find that it fits as helpfully to apply them to struct->trait as it is to Rust lifetimes or C++ classes. From a logical, proof-theoretic standpoint, there is no meaningful difference. Indeed, I suspect the Rust compiler does exactly that already, even to the handling of contravariance. If it did not, it would not be able to error out when S struct is not a valid subtype of a specific T trait.
To my way of thinking, the coercion that Rust performs from a struct pointer to a trait fat pointer is actually necessary in this case to ensure type safety when performing run time substitution. During the coercion, the pointer stays the same, but compositionally we add a vtable pointer to the reference so that the logic handles method dispatching correctly.
There is prior precedence for runtime coercion being valid (and necessary) as part of subtyping. For example, the wikipedia article on subtyping points out that Int64 is a subtype of Int32, since it is an always safe substitution from one type to another. Note that a runtime coercion is required to convert the 32-bit integer to a 64-bit integer.
Similarly (IIRC), C++ also performs a runtime coercion when upcasting a class pointer to a superclass pointer (which is typically seen as a subtyping relationship). Although it does not generate a fat pointer, the coerced pointer actually has a different value, pointing to some subsection of the structure it had before.
As Gankro's example further demonstrates, coercions do not necessarily mean subtyping. These two distinct concepts just happen to align as it relates to correctly subtyping/substituting a struct reference to a trait reference, and should not be confused as synonymous or even strongly related.

Addendum: Wikipedia's section on coercions as part of the subtyping article, which also seems to suggest that these two words reflect different concepts that can sometimes align, and that subtyping can exist even in the presence of coercion. As I indicate above, acknowledging it as subtyping within the context of that nomicon page plays seamlessly and helpfully with all the rules laid out for lifetimes (which don't need coercion, because they have no runtime presence).

cc @matthewjasper since you probably have thoughts & opinions here.

@jondgoodwin I think you are arguing that e.g. &mut T -> &T could be a subtyping relationship. That is correct. But as a matter of fact, it is not, and @Gankro provided an example that witnesses this.
Subtyping (and coercions) is something that is defined by the language designers in a pretty arbitrary way. Of course there are soundness requirement, but there is no requirement of completeness -- just because something could be a subtype, does not mean it has to be. In Rust, the deliberate choice was made that the only subtyping is due to lifetimes (and structural rules). Your references to Wikipedia do not refute that statement.
I think "acknowledging" coercions as subtyping would be extremely confusing, and also blatantly incorrect. The two are very different. For example:

Subtyping is fully structural: For example, if T <: U ("T is a subtype of U"), then Vec<T> <: Vec<U>. Coercions do not have this property.
As a consequence of the above, subtyping preserves runtime representation: We cannot have subtyping from T to dyn Trait, because then we'd have to be able to generate code that converts e.g. Vec<Box<T>> to Vec<Box<Trait>>. In contrast, coercions can change the runtime representation (code that does this transformation is inserted by the compiler).

It might be a good idea to extend the subtyping page to reference the coercions page and explain how they are different. @jondgoodwin would you be fine repurposing this issue to track that, or should I open a new issue?

Definitely file an issue against the reference, even if we want to track it here.

The reference? Oh, right, it also contains pages for both subtyping and coercions. Does it even make sense to have this in both places?

@RalfJung Thank you for your detailed response. Most importantly, yes, you may re-purpose this issue to track your suggestion. I certainly understand the importance of language designers defining terms in ways that are accurate and helpful to the language and its users. My intent here is to lower confusion for people coming from other languages, which your suggestion would help do.
If you look again, you will find I was trying to make the same point as you with regard to the relationship between coercion and subtyping. They are distinct concepts that can sometimes align. I pointed this out only because I was told by multiple sources that the examples I brought up were not subtyping examples because they were coercion examples. As you say, they can sometimes be both, but not always. So, I am not seeking any acknowledgement that coercions are always subtyping, as I do not believe that to be true.
The issue that triggered this was discussions not around &mut T to &T, but actually about the relationship between structs and trait objects, or between traits and traits. It was argued to me that Rust was vastly different in this subtyping nature vs. (say) C++ class to a property-less abstract class,  Clearly there are differences, but from an ad hoc polymorphism perspective, the "subtyping" characteristics and mechanisms are remarkably similar.  As with C++, types can go in only direction safely, they have runtime coercion, and variance rules apply. Similar patterns hold true for Haskell type classes. I have no dog in this hunt. Call it subtyping or not as the team feels best; I just thought it unfortunate that people come away thinking there is a vast gulf here as opposed to a rich commonality in these mechanisms. Others may not share my concern about that. I trust the team to decide what is best.
In thinking through the examples that you and @Gankro cite, I think I am understanding that the key difference seems to rest almost completely in the fact that Rust has chosen to treat Vec et all as covariant over T. Most languages make this invariant. Because Rust treats it as covariant, I can see how worlds of problems would ensue by acknowledging that a struct is a subtype of a trait it implements. In the context of the simple case, it might be accurate and helpful, but in the context where T is wrapped within various polymorphic structures it would fall apart. An explanation like this might be useful to others too, perhaps ...
I hope I have helpfully cleared up any confusion about my suggestions and intentions.

I just realized I cannot edit other people's issues in this repo, so someone else will have to do that. @Gankro? Or could you just add me to the right team? :D

@jondgoodwin TBH I do not know a sufficiently clean theoretic description of C++ to compare subtyping there with Rust. However, AFAIK classes can turn into superclasses even below pointer indirections, right? So Class** is a subtype of Superclass**. This means things are applied structurally, so I'd argue that it is most reasonable to call this subtyping, not coercions. In contrast, in Rust, &&T cannot turn into &&Trait, and in fact that wouldn't even be possible because this coercion requires some run-time effect. This does strike me as a qualitative, not just quantitative, difference.
C++ also has coercions in this sense though, when virtual base classes are involved (where casting up/down requires offsetting the pointer). I can only assume those cannot be applied structurally.
But for Java (which is much easier to talk about as it is less messy than C++), it can be seen quite clearly that the "superlcass" relation is subtyping, not a coercion: For example, it is applied below arrays (T <: U implies T[] <: U[]). Java also has generics of the style ? extends Foo to emulate some form of covariance. And this has caused Java no end of pain in the form of an extremely complex type system and even some soundness bugs. Even worse, it took more than a decade (I am told) to get anything remotely resembling a theoretical model for Scala, and one of the big blockers was subtyping.
So I think it is fair to say that Rust is vastly different here, and having built a theoretical model of Rust I am very grateful for its subtyping being very weak. :) That said, I agree those distinctions that I care about here are subtle, and probably not extremely relevant for practical use of the language most of the time.
So it seems we agree that the docs are correct, but should be improved to better teach those that care about what this subtyping vs coercions distinction really means.

@RalfJung Hmm, I misunderstood what you wrote when I wrote my comment. I think I moved the word "reference" when I read it. Tiredness. It looks like the actual suggestion here is not really in the domain of the reference. So, uh, ignore me.

@RalfJung "AFAIK classes can turn into superclasses even below pointer indirections, right?" No. I just wrote a C++ program trying to implicitly coerce Class** to Superclass**. This won't compile due to a type mismatch. Likewise, both Rust and C++ perform implicit struct/class to trait/abstract class runtime coercions under the same circumstances (including not applying them structurally), although the details of the actual coercion operation varies due to representation differences. So, I am still at a loss as to where you see a meaningful qualitative difference.
When you say "This means things are applied structurally, so I'd argue that it is most reasonable to call this subtyping, not coercions.", it sounds like you are suggesting that when subtyping exists, it must always be capable of being applied across all structures. I do not believe that subtyping requires this. Indeed that's the whole point of being able to construct types that are invariant or contravariant with regard to their parts, as we see with &mut. Also, it also still sounds like you are treating subtyping and coercions as mutually exclusive properties, when I thought we both agreed they need not be.
We agree that Java's laxity with regard to subtyping substitution is a mess. I too see it as a blessing that Rust is not following Java's footsteps here.
"So it seems we agree that the docs are correct, but should be improved to better teach those that care about what this subtyping vs coercions distinction really means." In a meaningful way, I agree because I accept that subtyping as applied to a systems programming language means something different to you (and the Rust team) than to me, and the Rust documentation should follow your meaning rather than mine. Here's how I currently understand our differences:
My view is a pragmatic, duck typing interpretation. If substitution is safe, unidirectional and follows the variance rules symptomatic of a subtyping relationship, then it is subtyping, even if substitution cannot be universally applied under all structural/representational circumstances. This is true for me regardless of whether runtime coercion is needed to help ensure safety. The downside of my interpretation is that my language documentation has to be clear in describing the circumstances in which subtyping substitution is not supported, even when it might feel as if it ought to be safe in theory.
Your view appears to be a stricter one, where if substitution cannot be performed under all structural conditions and without runtime coercion, it is not subtyping. By this interpretation, C++ does not support subtyping at all (at least with regard to ad hoc polymorphism). The downside of your interpretation is then having to explain why certain coercions (but not others) mimic subtyping type checks in the type system (i.e., are unidirectional and potentially (?) conform to some type constructor variance rules such as being invariant with &mut and contravariant in anonymous function parameters).
Both interpretations support the same sound mechanisms in Rust (and comparable mechanisms in C++). To my mind, systems programming languages struggle here because their goals are more demanding than those of other languages. Specifically, because they want to support ad hoc polymorphism AND they want to stay close to the metal in the representation of types and values (including, importantly, the explicit type representation of pointers). The benefit of these aggressive goals is safety, performance and data economy. The cost we bear is the need for runtime coercion and constraints on when runtime substitution is possible and convenient. As a result of these trade-offs, mapping pure type theory to practical system programming language semantics ends up becoming untidy somewhere.
Anyway: However the team revises the document, I am hoping that making explicit how key terms are defined and how these concepts apply to the compiler's underlying mechanics will improve people's understanding and experience with using Rust. I hope my contributions here will be valuable in accomplishing that.

It looks like the actual suggestion here is not really in the domain of the reference. So, uh, ignore me.

I am not so sure, it seems nomicon and reference overlap quite a bit here.

@jondgoodwin

it sounds like you are suggesting that when subtyping exists, it must always be capable of being applied across all structures.  I do not believe that subtyping requires this. Indeed that's the whole point of being able to construct types that are invariant or contravariant with regard to their parts, as we see with &mut.

Contravariance is a form of "applying across all structures", just the other way around.
But if every single type constructor is invariant, I find it rather meaningless to even talk of subtyping and variance. Sure, I cannot stop you from using the term, but it is a degenerate case lacking most of the usual structure.  You should have at least one covariant or contravariant type constructor to start talking about subtyping. Now I am not sure if C++ has such a type constructor at all?

My view is a pragmatic, duck typing interpretation. If substitution is safe, unidirectional and follows the variance rules symptomatic of a subtyping relationship, then it is subtyping, even if substitution cannot be universally applied under all structural/representational circumstances.

I do not understand how you can even talk of variance when you also say that substitution cannot be applied under all circumstances. The very definition of (co)variance is that "whenever T <: U, then Other<T> <: Other<U>. If there is a single counterexample, you don't have covariance.
I do indeed currently not see any subtyping in C++, but you do seem to see covariance or contravariance in C++, so I am curious which types you are thinking of here.  Notice that I don't think invariance "counts" here, invariance is the absence of propagating subtyping, you shouldn't be able to point at this absence and use that to indicate the presence of anything (like subtyping).

@RalfJung Your response ascribes to me an extreme position I did not articulate nor hold. I came here with the intent to be helpful. I have acknowledged that we define the terms somewhat differently and that the Rust documentation should reflect your interpretation. Is it worth anyone's time for me to clarify what I meant, or would it be more helpful at this point for me to bow out of the discussion, and let the team sort out whether and how best to address the concerns I raised?

Sorry for putting mouths into your word, in that case I misunderstood what you were saying. I was mostly trying to understand C++ a bit better.^^
But probably most useful would be for someone to take a stab at writing some extra notes on the subtyping/coercions page about what the difference is.

My word appreciates that. Thanks. I am sorry I confused you.
I am no expert on C++, but my understanding is that the standard templates are all invariant on T. I suspect that no small part of that choice is because of the difficulty of distinguishing between a mutable vs. immutable reference. It appears, however, that C++ does support covariance and contravariance with std::function, in much the way you might expect. More than that, I should not speculate.
I am deeply grateful for your participation in this thread. Because of your explanations, I am no longer confused by why Rust describes itself the way it does. Good luck with the document changes, Rust 2018, Rustbelt, et al. I am an admirer of the work you do.

It appears, however, that C++ does support covariance and contravariance with std::function,

Ah, I see. So there is some subtyping going on it seems. Thanks for enlightening me!


Add incrementUserProperties function

Implements new feature request and resolves #26

Looks great 👍 @NaughtyMC
Increment the package version to 1.9.4 and we are ready to go!

@willylatorre Done! Thanks for the quick review/approval!


refactor: make dfs return vector

Current implementation of dfs is not really testable: it displays the nodes. This PR changes that and adds missing tests.

pls resolve conflicts

pls resolve conflicts

@uncomfyhalomacro done.


Pass custom User-Agent header for all Dataset download requests from user package and Builder

(Related #257)
(Related Analytics script changes)
We want to have a way to exclude all requests from Census-related downloads from Analytics assessment of cxg Dataset downloads. The easiest way to do this is to pass a custom User-Agent header for download requests that we control. I recommend we include:

a common flag portion ignore that can be added to other services, or can even easily be included in custom bulk-downloading scripts, which will not require changes to the Analytics script in order to acknowledge
a project identifier census
an actor identifier (for Census: builder or user)
environment identifier

Therefore, a User-Agent value might be ignore-census-builder-prod; this request would then be filtered out by the Analytics script when it reads from Cloudfront logs. cc @ainfeld @bkmartinjr
Tasks:

[x] Update all BUILDER requests to https://datasets... endpoints to include the aforementioned header
[ ] Update all USER requests to https://datasets... endpoints to include the aforementioned header

Builder header will be census-builder-(dev|staging|prod)

@danieljhegeman - first task is done.  I'm not sure if the second task is relevant given our slack conversation - will let you decide if this issue is resolved or still has work to be done.

Closing in favor of #997


When closing an open usb-cdc connection, the timer svc stops executing some periodic functions, but calls others (IDFGH-7624)

Environment

Development Kit:   Ai-Thinker module  esp32-s2
IDF version (run git describe --tags to find it): master branch, cloned on 27-05-2022
Build System:   idf.py
Operating System:  Ubuntu 22.04
Using an IDE?: VSCode
Power Supply:  external 3.3V

Problem Description
I have 5 functions periodically executed by the timer service, 3 of them about every 1-3 seconds, the other 2 every 10ms and 40ms, but they only start running once the usb-cdc port is opened on the pc side.
Everything works right before and during the pc connection. But once I close the cdc port from the pc side, the two fast functions continue getting called by the timer, while the slower 3 stop getting called. I set up log statements at the very start and very end of each function to determine the moments each enters and exists. I am sure no function is hanging mid-way. This isn't even possible, as it would have to stall the entire timer service to my knowledge, causing the whole timer thread to hang. But the timer thread doesn't hang, as evident by the continued calling of the fast functions. Yet the other 3 are not entered again at all until the cdc port is opened again.
I tried twiddling the tinyusb and timer priorities, making each higher than the other. this has no effect on the problematic behavior. The only way this scenario is even possible, to my knowledge, is if the timer service explicitly decides to skip executing some functions. I'm not aware it can do this, nor why it would do this for the slow functions. Either way, I don't see why the choice would depend on whether usb-cdc is open or not. All functions, expecially the fast executing ones, do read and/or write operations to usb-cdc, so I don't see why some would behave differently than others.
If I increase the periods of the fast functions to 100ms and 400ms, the problem disappears. But this is not an acceptable workaround.
Code
I can't upload the whole project, and it is time consuming to produce a minimal example of a bug for github. So I will do it as soon as I can.
sdkconfig.txt

@moefear85 Just to clarify: with "timer svc" or "timer service", you mean the esp_timer component and not the General purpose timer, correct?

Or the FreeRTOS timers? (https://github.com/espressif/esp-idf/blob/8b902739ac6ef46c0f5c6f25491aa8ed79a4e898/components/freertos/FreeRTOS-Kernel-SMP/timers.c#L63)

hi, i mean the freertos timer task


Deprecate PROCESS enum value in EntityKind

SQL change needed to get rid of process from

entity_hierarchy
entity_relationship
bookmark
change_log


feat(initrd): Build initramfs

Prerequisite checklist

[x] Read the contribution guidelines regarding submitting new changes to the project;
[ ] Tested your changes against relevant architectures and platforms;
[ ] Ran make fmt on your commit series before opening this PR;
[ ] Updated relevant documentation.

Description of changes

Superseded by #582


Update README.md

added Repetiti.Com Api

[x] My submission is formatted according to the guidelines in the contributing guide
[x] My addition is ordered alphabetically
[x] My submission has a useful description
[x] The description does not have more than 100 characters
[x] The description does not end with punctuation
[x] Each table column is padded with one space on either side
[x] I have searched the repository for any relevant issues or pull requests
[x] Any category I am creating has the minimum requirement of 3 items
[x] All changes have been squashed into a single commit

Hi @omeryilmaz00
Thanks for your contribution ;)
We have some problems with Public APIs, so we won't be able to review/add this improvement right now.
Read this issue for more information, please: https://github.com/public-apis/public-apis/issues/3104


strings.ToValidUTF8 not properly deal with a string containing an invalid UTF8 character

What version of Go are you using (go version)?
go version go1.14 darwin/amd64

$ go version
go version go1.14 darwin/amd64

Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/leonxlfang/Library/Caches/go-build"
GOENV="/Users/leonxlfang/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/leonxlfang/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.14/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.14/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/leonxlfang/test/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/5t/p75g7bfn7f5gy9_y4pw25t6w0000gn/T/go-build822444257=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?
I'd like to replace an invalid UTF8 char with * in string ab�cd.
package main

import (
	"fmt"
	"strings"
)

func main() {
	s := "ab�cd"
	for i := 0; i < len(s); i++ {
		fmt.Printf("% x", s[i])
	}
	fmt.Println()

	t := strings.ToValidUTF8(s, "*")
	if t != "ab*cd" {
		fmt.Printf("strings.ToValidUTF8 not works: got %s; want %s\n", t, "ab*cd")
	}
}

What did you expect to see?
ab*cd
What did you see instead?
ab�cd

The '�' character from the snippet is U+FFFD which is valid unicode.
https://www.fileformat.info/info/unicode/char/0fffd/index.htm
https://play.golang.org/p/zJkhqqgfw_k
Maybe when copying or when outputting the string "ab�cd" the invalid character was converted to U+FFFD in your snippet. As posted the code seems to work correctly.


Integration Test - Release - 2019/02/06 10:20:14

Auto create for integration test. AnotherAuthorUpdatedArticleFlow

@bharney-msft : Thanks for your contribution! The author, @v-caxian, has been notified to review your proposed change.


Example of how to use capacity_provider_strategy

Would be nice to have a working example of how to use this module with a fargate capacity provider
in awsvpc network mode

module "ecs_alb_service_task" {
  ...
  capacity_placement_strategies = [
    {
      capacity_provider = "FARGATE_SPOT"
      weight     = 1
      base        = 1
    },
  ]
  ...
}


bring rna branch up to date

PR to bring server/rna up to date with latest development version of rna api code

Looks good @saupchurch. Perhaps we should just bring the rna branch up to date with develop separately, and keep these changes out of the PR? @dcolligan, can you check to see if the rna branch can be fast-forwarded, and if so, make the changes please?

Just merged develop into rna

updated _protocol_definitions.py using process_schema.py build should now pass


Changed msfragger to work with the new output format

PR Checklist

[x] This comment contains a description of changes (with reason)
[ ] Referenced issue is linked
[x] If you've fixed a bug or added code that should be tested, add tests!
[x] Documentation in docs is updated

Description of changes

changed msfragger to work with psm.tsv file

Technical details

Additional context

@WassimG @victorgiurcoiu what is the status here?


Make out migration script output is logged.

Description
Currently when database migrations are run on container startup, it isn't logged to a file that we can use to check the migration status. This changes the script to write the migration changes out to a log file.
Motivation and Context
Sometimes we run migrations by starting a new version of the container, rather then running the migrate play. It would be nice to have migration logs in the same place, either way the migration gets run.

The test failure seems unrelated to the change in this PR. Did something else change?


Token lifetime

Hello.
How can I set the lifetime of a VK token more than a day?
A day after authorization, you need to re-authorize in VK.
I use the standard API VK in another android application (Java) and the token lives there for more than a week.
Thanks.

I fix it. Need add VKPermission.OFFLINE:
List<String> scopesVK = [     iosVK.VKPermission.EMAIL,     iosVK.VKPermission.GROUPS,     iosVK.VKPermission.WALL,     iosVK.VKPermission.PHOTOS,     iosVK.VKPermission.OFFLINE,   ];


Include pdf.sandbox.js when building the pdfjs-dist files

Currently it's missing in pdfjs-dist, however that's not a big issue considering that it's broken in non-TESTING builds before PR #12914 anyway.

Thanks!

Thanks!


fix: fix type mismatch of compressed_binary column in function table

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
The column compressed_binary of table function was defined as varchar in sql backend but as Vec<u8> in rust type, which will cause cluster unable to get recovered if any UDFs with compressed binary was created:
mismatched types; Rust type `core::option::Option<alloc::vec::Vec<u8>>` (as SQL type `BYTEA`) is not compatible with SQL type `VARCHAR`

Already tested it locally with three kinds of sql backends. Haven't found a suitable way to test and cover it yet.
Checklist

[ ] I have written necessary rustdoc comments
[ ] I have added necessary unit tests and integration tests
[ ] I have added test labels as necessary. See details.
[ ] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features #7934).
[ ] My PR contains breaking changes. (If it deprecates some features, please create a tracking issue to remove them in the future).
[ ] All checks passed in ./risedev check (or alias, ./risedev c)
[ ] My PR changes performance-critical code. (Please run macro/micro-benchmarks and show the results.)

[ ] My PR contains critical fixes that are necessary to be merged into the latest release. (Please check out the details)

Documentation

[ ] My PR needs documentation updates. (Please use the Release note section below to summarize the impact on users)

Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.

LGTM, thanks!
But why we don't need to fix any code other than migration?

After modifying the SQL type of the compressed_binary column, no adjustments are needed in the model code since it remains compatible with the existing Rust type Vec<u8>.


Need to confirm app installation each time on native run

Godot version:
3.1.1
OS/device including version:
Android 7 on Xiaomi Redmi Note 4
Issue description:
When you run Android app on the device (the "native run" option), Android will prompt you to confirm the installation. Even if I click to remember my choice, it still asks again. This does not happen when installing app directly via adb.
This is annoying, because when I run on device, I want to click and forget, because the exporting process takes time. However I have to remember to confirm the app, which makes the option pretty useless, because I could as well install it manually >_>

I have a same issue on a Xiaomi device (Pocophone F1). Is it really a Godot issue though? I got the feeling that it was MIUI being overly annoying on this process, as it used to work frictionless on my previous LineageOS phone.
But if that's on the Godot side and we can fix it, that would really be awesome, because my phone aborts installation after 10 s if I'm not fast enough to approve it... (Even though I enabled Developer mode and ticked on everything I could to prevent it from being a paranoid box).

I mean, if it doesn't happen when using adb directly (adb install -r), then Godot might get some improvement. The fact that you need to "Remember my choice" each time suggests that the app is installed from different "source id" or whatever. I'm not Android expert, so not sure what it is exactly and if it's doable >_>

Does it work better if you turn off one_click_deploy/clear_previous_install?

Relevant code: https://github.com/godotengine/godot/blob/master/platform/android/export/export.cpp#L1437-L1472

Does it work better if you turn off one_click_deploy/clear_previous_install?

Actually it does... Any reason this is on by default? The app is overwritten anyways.

I guess it's cleaner to uninstall before install to be in the same conditions as a new user. Especially if your app requires specific permissions and you need to check that they're properly requested, you don't want the previous test to impact that.
Still, it's also quite annoying to have to babysit your phone when exporting a big project, so maybe it should be off by default. Pros and cons :)

Yeah, you don't need to test permissions and "clean user state" each time, so having it off by default makes sense.


Allow encode on a union

fix #2969

You can try these changes at https://cadlplayground.z22.web.core.windows.net/prs/2992/
Check the website changes at https://tspwebsitepr.z22.web.core.windows.net/prs/2992/


Uncaught TypeError: Cannot read properties of undefined (reading 'Graph')

Describe the Bug
I built my react application with typescript using react flow and dagre. I used vite as the build tool. In development everything is working fine. But when I build the project it is giving the error "Uncaught TypeError: Cannot read properties of undefined (reading 'Graph')".
Below is my package.json dependencies
{
 "dependencies": {
    "dagre": "^0.8.5",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-flow-renderer": "^9.7.3"
  },
  "devDependencies": {
    "@types/d3": "^7.1.0",
    "@types/dagre": "^0.7.47",
    "@types/react": "^17.0.33",
    "@types/react-dom": "^17.0.10",
    "@vitejs/plugin-react": "^1.0.7",
    "typescript": "^4.4.4",
    "vite": "^2.7.2",
    "vite-tsconfig-paths": "^3.3.17"
  }
}

Your Example Website or App
https://git-visualizer.pages.dev/
Steps to Reproduce the Bug or Issue

Clone the repo https://github.com/sleepingsaint/git-visualizer.git
Install dependencies
run build and preview scripts

yarn build && yarn preview

Open localhost:5000 to preview the build
Open the console log to see the error

Expected behavior

It should a node with controls and minimap as per the above picture.
Screenshots or Videos

The error is being shown in the console log
Platform

OS: [Linux]
Browser: [Chrome, Brave, Firefox]
Version: [Chromium: 97.0.4692.71]

Additional context
No response

I didn't looked into this too close but but when I comment out the dagre stuff everything is working fine. I would say that this is an issue with dagre. Can you confirm that it works when you are not using dagre @sleepingsaint ?

Thanks for the suggestion. It's working fine without dagre, but there is another error I forgot to mention, i.e without @types/d3 building the project is giving an error.
$ tsc && vite build
node_modules/react-flow-renderer/dist/types/index.d.ts:2:56 - error TS2307: Cannot find module 'd3' or its corresponding type declarations.

2 import { Selection as D3Selection, ZoomBehavior } from 'd3';

Found 1 error.

error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

After adding @types/d3 as a dev dependency it worked fine.
Can you suggest any other alternative to dagre to build the layout?

That's strange. @types/d3 is part of the devDependecies https://github.com/wbkd/react-flow/blob/main/package.json#L53
For layouting we are using elkjs mostly and recently also cytoscape.

Well the problem still exists. I tested again with the same setup ( vite, react, typescript, react-flow-renderer ) and still facing the problem.
I facing some issues with elkjs and it seems they are not solved yet. Could you please share the link to layout examples with cytoscape?
Thanks :)

@sleepingsaint I thought it's working without dagre? Unfortunately I don't have ReactFlow + Cytoscape examples that I could show you.

@sleepingsaint and anyone coming from google with the same setup (vite, react, typescript, react-flow-renderer) and error, the issue for us related to hoe Vite handle the namespace export of graphlib in dagre, adding the following to the Vite config solved it for us:
  build: {
    commonjsOptions: {
      ignoreTryCatch: false,
    },
  },

We lost quite a bit on this an even considered reimplementing the feature in something other than dagre so it would be great if a line was added to the examples using dagre saying this issue could show up in projects using Vite.

@sleepingsaint and anyone coming from google with the same setup (vite, react, typescript, react-flow-renderer) and error, the issue for us related to how Vite handles the namespace export of graphlib in dagre, adding the following to the Vite config solved it for us:
  build: {
    commonjsOptions: {
      ignoreTryCatch: false,
    },
  },

We lost quite a bit on this an even considered reimplementing the feature in something other than dagre so it would be great if a line was added to the examples using dagre saying this issue could show up in projects using Vite.


ambient: support DNS ServiceEntry in ztunnel

This implements some TODOs around supporting DNS backend types in
ztunnel, and add an e2e test. Additionally, add unit tests; there were
none for the SE workload gen in ambient tests, so refactor a bit to make
it cleaner

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
229c1f964f79fdee29e7731b05f349fb026fd76c
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/test unit-tests-arm64

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
229c1f964f79fdee29e7731b05f349fb026fd76c
link
true
/test unit-tests-arm64

unit-tests_istio
229c1f964f79fdee29e7731b05f349fb026fd76c
link
true
/test unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests_istio
229c1f964f79fdee29e7731b05f349fb026fd76c
link
true
/test unit-tests

unit-tests-arm64_istio
229c1f964f79fdee29e7731b05f349fb026fd76c
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.


Str::afterLast() return the string itself if no occurance observed

Laravel Version: v6.12.0
PHP Version: 7.2.9
Description: Looks like Str::afterLast() has bug
Steps To Reproduce:
Str::afterLast('Hello', '.') returns 'Hello' instead of null  or is that expected behavior?
Documentation says:

The Str::afterLast method returns everything after the last occurrence of the given value in a string

However there is no any occurance and should return null in my opinion.

@driesvints How about adding an optional parameter that will allow null/'' to be returned?


Q: Multi-module project change where modules generate their destinations

Hi!
Is it possible to specify a directory every module can output their destination instead of inside their individual modules? I've tried
using
arg("compose-destinations.mode", "[GENERATION_MODE_FOR_MODULE]")  arg("compose-destinations.moduleName", "[YOUR_MODULE_NAME")
with "destinations" and "navgraphs" but both seems to still create the destinations inside their respective modules. I want to keep our multi-module hierarchy but be able to navigate anywhere from any module without having to have certain modules depend on another just for navigation. Is this something I should't be doing? Is this currently possible?

I do the same thing where "destinations" and "navgraphs" live in their respective modules
I then have an interface like this in each module (you can add more navigation options and even pass params here)
interface OnboardingModuleNavigator {
    fun navigateToOnboardingScreen()

    fun navigateToHomeScreen()
}

the implementation then lives inside app module
class CoreFeatureNavigatorSettings(
    private val navController: NavController,
) : HomeModuleNavigator,
    OnboardingModuleNavigator {
    override fun navigateToOnboardingScreen() = navController.navigate(OnboardingScreenDestination.route)

    // implement all navs from different interfaces in different modules

then add
fun DependenciesContainerBuilder<*>.currentNavigator(): CoreFeatureNavigatorSettings {
    return CoreFeatureNavigatorSettings(navController = navController)
}

and use it like this inside MainActivity which is also inside app module
DestinationsNavHost(
                                    navController =
                                        engine.rememberNavController(
                                            bottomSheetNavigator,
                                        ),
                                    navGraph = navigationGraph.root,
                                    modifier = Modifier.padding(paddingValues = paddingValues),
                                    dependenciesContainerBuilder = {
                                        dependency(currentNavigator())
                                        dependency(hiltViewModel<NfcReadViewModel>(this@MainActivity))
                                    },
                                )

this way, modules don't need to depend on each other for navigation
pass it inside a composable like this, then invoke the navigation inside a button etc
@Destination
@Composable
fun OnboardingScreen(
    navigation: OnboardingModuleNavigator,
    modifier: Modifier = Modifier,
    viewModel: OnboardingViewModel = hiltViewModel(),
) {


[Event Request] Page 6630 "Sales Return Order"

Describe the request
Dear ALAppExtensions Team,
Please add the following Event to procedure PostDocument in Page  6630 "Sales Return Order":
IsScheduledPosting := Rec."Job Queue Status" = Rec."Job Queue Status"::"Scheduled for Posting";
DocumentIsPosted := (not SalesHeader.Get(Rec."Document Type", Rec."No.")) or IsScheduledPosting;
//new event:
OnPostOnAfterSetDocumentIsPosted(SalesHeader, IsScheduledPosting, DocumentIsPosted);

if IsScheduledPosting then
    CurrPage.Close();
CurrPage.Update(false);

...

[IntegrationEvent(false, false)]
local procedure OnPostOnAfterSetDocumentIsPosted(SalesHeader: Record "Sales Header"; var IsScheduledPosting: Boolean; var DocumentIsPosted: Boolean)
begin
end;

Additional context
We need the access to the IsScheduledPosting variable at this point
Internal work item: AB#555742

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 25981.


Update license used for PRs from forks

Update license used for PRs from forks
Note that originally, this PR attempted to use variables, not secrets,
for the fallback license. The documentation implies that these should be
available, but in fact, they're not. See, for example,
https://github.com/orgs/community/discussions/44322
Given an .ulf file, it can be converted to the format here using:
cat foo.ulf | sed -e 's/"/\"/g' -e ':a;N;$!ba;s/\n/\n/g'
On a Mac, use gsed instead of sed
==== OLD COMMIT MESSAGE ====
Get personal license from Github vars
Action v4 requires always passing the username and password. We'll get this from a Github var instead of embedding it
To set these variables, follow the instructions at https://game.ci/docs/github/activation/#personal-license
to set up Unity Hub.
Then, save the following environment variables at
https://github.com/icosa-foundation/open-brush/settings/variables/actions:
FALLBACK_UNITY_EMAIL
FALLBACK_UNITY_PASSWORD
FALLBACK_UNITY_LICENSE
Note that for the license, you need to do two search and replaces first:

s/"/\"/g  # Replace all instances of " with "
s/\r/\n/g  # Replace all newlines with a string of \n

After this commit, PRs from forks will build successfully using the
FALLBACK_* credentials.
Users who wish to build on their fork, using the "[CI BUILD]" option,
will need to set these environment variables at their
settings/variables/actions link. The ones from Icosa will only be used
when building as part of a PR, not as part of a local commit.
==== END OLD COMMIT MESSAGE ====
==== ORIGINAL CHANGE ====

UNITY_EMAIL: ${{ fromJSON(format('["{0}", "{1}"]', vars.FALLBACK_UNITY_EMAIL, secrets.UNITY_EMAIL))[secrets.UNITY_SERIAL != null] }}
UNITY_PASSWORD: ${{ fromJSON(format('["{0}", "{1}"]', vars.FALLBACK_UNITY_PASSWORD, secrets.UNITY_PASSWORD))[secrets.UNITY_SERIAL != null] }}
UNITY_LICENSE: ${{ fromJSON(format('["{0}", null]', vars.FALLBACK_UNITY_LICENSE))[secrets.UNITY_SERIAL != null] }}
==== END ORIGINAL CHANGE ====

@mikeskydev shall I merge now, or do you want to create a different license? (doesn't really matter that much IMHO, but maybe it's better if it's not tied to my email. OTOH, it's not like the password is a secret ;-) )


Make fuzzing add new branch and commit

Make fuzzing add corpus on new branch and commit (see 61c3f42).

Adding commit to same branch is bad because
fuzzing takes a while so new commits might arrive while it is taking place. Adding the corpus might cause nasty merge conflicts

Committing corpus is good because:
Crash files also need to be committed, better later runs, more reproducible(?)

Depends on #21.

For now, the current state is acceptable: copy the hex data and put convert it into a string but in the longer term, I would like to have the advantages of committing the corpus as well.


fix markdown formatting

Fix formatting for export PATH="$HOME/.emacs.d/bin:$PATH" to include the right type of quotes.

Ah, good catch. Thanks for the help!


Make database queries and objects in general timeout-aware

I am not sure this is even possible to handle so this issue is for discussion purpose mostly.
I am using your library and module on "relatively large" CA databases (about half a million rows at the time of writing for my highest volume CA) and wrote some scripts that are run via scheduled tasks in order to generate reports, send notification emails, etc.
My problem is that the scripts are taking more and more time to execute the more the database grows (that is expected), leading to what appears to be timeout issues. For example one reporting script queries over almost all of the records, does some filtering on user-side (because of the poor filtering capabilities of AD CS API) and for each record does some relatively heavy processing (additional database queries, some AD + DNS + Exchange checks and so on), before moving on to the next record.
If I just make this one big query, the connection to the CA (or the COM object I don't know) fails at some point, which led me to slice the query (at the moment 10,000 records at a time only).
This is mostly working but more difficult to write/maintain and it is now taking forever to execute for some of those tasks...
I even replaced some of them with pure certutil-based queries (with its output mode to CSV) because this is just incredibly faster. I know .NET/PowerShell code can't be as efficient as C code like certutil, especially when working with COM classes but this made me wonder if it was possible to a) speed the library a little (unlikely I guess) and b) at least make it "timeout-aware", i.e. capable of transparently handling dropped connections to the COM class/underlying CA and automatically re-establishing the connection, without any developer action.
In the meantime, we are looking for a solution that would extract the databases of several CAs to a single location with real SQL-like capabilities and that would probably make all of this unnecessary but that is another (and maybe utopic) subject :)

Marking this as "won't fix" because there is nothing I can do. Unfortunately.
Why certutil dumps CA database quickly? JET database engine is written in C++ (unmanaged world), certutil is written in C++ (unmanaged world) too. It's the best case. PowerShell, on the other hand is .NET-based, which means managed world (with garbage collection). Data marshalling between RCW (runtime callable wrapper) and CCW (COM-callable wrapper) gives you serious performance penalty. And keep in mind that PowerShell gives you a reasonable performance penalty.
Even if I attempt to write native C++ code to access CA database, I still will have to marshal data in order to use it in .NET/PowerShell.

In the meantime, we are looking for a solution that would extract the databases of several CAs to a single location with real SQL-like capabilities and that would probably make all of this unnecessary but that is another (and maybe utopic) subject

I worked once on this. The idea was:

dump current CA database to SQL by using existing tools (certutil, .NET/PowerShell). You can do it in chunks just to not fall into DCOM connection timeout.
once database is dumbed, new records should be written to SQL by using custom ExitModule, so new database records are pushed to SQL automatically.

So this is certainly doable in a reasonable timeframe.

I have a private ExitModule draft written in C# (CLR) for my own purposes. However, this never went anywhere further because of time. I have a full-time job, studying in University, having my own stuff, open source projects and so on. Unfortunately, I failed to find someone who would be the same passionate in CryptoAPI (and an ability to make it more available in .NET/PowerShell) to cooperate with on a free basis. PSPKI project started in 2011 (when I publically released first version v0.8) and still running it alone.

Don't worry as I said this was mostly for discussion purpose, I fully understand the difficulty of this and most of all that you are working on this on your free time (and I think I speak for many if I say we are very grateful with you for that!).
Speed aside (you just confirmed what I highly suspected), what are your thoughts about being "timeout-aware"? I'm no expert in DCOM so this is maybe unfeasible but if it was (without requiring a complete code rewrite of course), this could greatly enhance the usability of the library for large CAs.
As for the exit module, I thought about writing one myself some time ago but clearly lack the time and knowledge (to be honest I didn't even know we could write one in C#... I thought only C++ would do).
I find it strange that Microsoft only has MIM CLM (which is almost useless in my opinion) and never found it interesting to try to sell a real RA+reporting product... (and yes i said sell because I don't expect such features to come freely as part of native Windows features...)

I'm no expert in DCOM so this is maybe unfeasible but if it was (without requiring a complete code rewrite of course), this could greatly enhance the usability of the library for large CAs.

Not sure if you are asking this, but ICertView COM interface provides customizable access timeout setting. Default value is 10 minutes. If you are expecting to run a long-rinning single query, you may want to adjust this timeout setting (by increasing it). Or you can split the query to query the database in chinks. Say, by querying 10k or 50k (it is just an example) rows per query.

I didn't even know we could write one in C#

I didn't too until I was forced to dive into it. Years ago I installed Enterprise CA on Server Core. However, I discovered that SMTP Exit Module doesn't work on Server Core installations, because mail module (which is a dll with basic COM interfaces from Exchange 5.5) is missing. So I made several attempts and was able to write a PoC Exit Module in C# to add support for mails in Server Core installations.
Yes, ILM 2007, Forefront CLM and now MIM CLM (which ship SQL Exit Module) aren't much useful. And buying entire product just for extra basic functionality isn't a good idea either. If you have internal developers, they should be able to write the desired Exit Module in .NET (though, with a ton of pitfalls).

Didn't know about this setting.

these settings are part of CA configuration There are two entries: ViewAgeMinutes and ViewIdleMinutes. But their change requires CA service restart which is not acceptable in our scenario. This is why I haven't bothered with this at all.

do you think this splicing of queries could be managed transparently by your library, based on the current timeout settings.

no. Chunking may work around possible timeout issues with a sort of ugly design. That is, run a series of queries which will query a chunk of records, for example: first 50k rows, second 50k rows (from 50k to 100k), 3rd 50k rows (from 100k to 150k), etc. The biggest issue is to get upper limit for RowID. Internal sorting has awful performance, so it is not a reliable solution to get upper limit. There is no function like count(*) to get estimated number of rows in a table. This issue requires deep research in order to get more or less efficient solution.

and automatically create a new connect when the timeout value is reached

timeout is individual for each connection. Once we call $CaView.OpenConnection() a timeout timer starts after each subsequent DB call by $CaView object. If you instantiate another connection (say, $CaView2.OpenConnection(), it won't affect our first connection. We have to refresh connection by our original $CaView connection. Since it awaits for response, you can't refresh the connection in the same thread. You may need to run it in background as a separate thread (maybe, as AsJob).
In CA database access code I made nearly all the best I could do in terms of performance. Though, there is one thing to improve -- get rid of Add-Member cmdlet and move to Properties dictionary (and break all existing scripts). But that's all.


[SDK] Modernize array initialization pattern in ModelIO overlay

We have nondeterministic test failures indicating a memory safety issue in ModelIO’s overlay. This switches the overlay’s property implementations to use the new Array(unsafeUninitializedCount:,initializedWith:) initializer rather than the potentially unreliable &values[0] pattern.
rdar://problem/50449570

@swift-ci test


Slot definition has to have mappings but the docs don't mention it

Looking at the docs for slots, the first example here shows a slot with no mappings defined. While all examples below under Slot Types do include mappings, this one (+ the 2 examples under Slots and Conversation Behavior) is at the top, hence the most likely to get copy-pasted into one's domain file. Then, one hits an error when running rasa train:
YamlValidationException: Failed to validate '/Users/sams/qa/dynamic-form-behaviour/domain.yml'. Please make sure the file is correct and all mandatory parameters are specified. Here are the errors found during validation:
  in /Users/sams/qa/dynamic-form-behaviour/domain.yml:51:
      Cannot find required key 'mappings'. Path: '/slots/slot_2'

@ancalita FYI for the docs PR - I just picked up on this too 😅

@samsucik The changes you flagged are addressed by the current PR under review in the domain.mdx file : https://github.com/RasaHQ/rasa/pull/10011/files
Please let me know if the PR covers this issue or if there are other places that need updating?

Closing this issue, since it was addressed in #10011 which just got merged.


mi_usable_size Utility

I'm trying to ascertain whether it's beneficial to make core usage of mi_usable_size.
Say I'm running on Linux and x86, and I ask for 64 bytes... might I receive 70 bytes, or might I receive 1000 bytes? (I know those values make no sense but I'm just asking what kind of secret extra capacity might be lurking).
I assume memory is allocated about a new fixed sized blocks? What are those sizes?

Well, there is not much use for mi_usable_size in general; for example, in debug mode the usable size is exactly the requested size. In release mode though you may have a bit more, but generally at most 12.5% of the requested size; i.e. the 70 bytes will be rounded to 80 bytes. (The only use for mi_usable_size  I know of is for systems that need to generally access heap blocks and can thus use it to get the safe size that can be accessed.)  If you need a larger block than requested, of course use mi_realloc which will realloc in-place when it can.
Maybe mi_good_size is more useful to you? It returns for given request the size that mimalloc will round to internally. So, if you want to allocate a buffer of, say, 1300 bytes, it may be better to use mi_good_size(1300) and use the next largest size without wasting a potential 12.5%.
Hope that helps

thank you!


Send notification when the game is purchased and also send recatcha with the name display

[2022-09-02 02:00:38.578 +0000] INFO: Purchasing Shadow of the tomb raider
user<EMAIL_ADDRESS>Telegram message
reason: Purchase (Shadow of the tomb raider)
account<EMAIL_ADDRESS>url: Click here
[2022-09-02 02:02:25.101 +0000] INFO: Done purchasing Submerged: Hidden Depths
user<EMAIL_ADDRESS>Telegram message
message: Done purchasing Submerged: Hidden Depths
account<EMAIL_ADDRESS>This will very usefull when if the captcha is done, it will let know the game is actually done purchasing or encounter error and also determine which telegram message is for which game. Thank you

No longer relevant in latest version


Problem with Tiles Overlay

Issue Type
[x] Question
[x] Bug
[ ] Improvement
[ ] Build system related
[ ] Performance
[ ] Documentation
Description and/or steps/code to reproduce the problem
I'm trying to load a second layer with hiking marked trail from:
https://hiking.waymarkedtrails.org/
On my android app in this way:
`  map = (MapView) view.findViewById(R.id.map);
    final MapTileProviderBasic tileProvider = new MapTileProviderBasic(getActivity().getApplicationContext());
    tileProvider.setTileSource(MAPNIK);

    final MapTileProviderBasic anotherTileProvider = new MapTileProviderBasic(getActivity().getApplicationContext());
    OnlineTileSourceBase hiking = new OnlineTileSourceBase("Hiking", 0, 19, 256, ".png",
            new String[] { "https://tile.waymarkedtrails.org/hiking/" }) {
        @Override
        public String getTileURLString(long pMapTileIndex) {
            return getBaseUrl()
                    + MapTileIndex.getZoom(pMapTileIndex)
                    + "/" + MapTileIndex.getY(pMapTileIndex)
                    + "/" + MapTileIndex.getX(pMapTileIndex)
                    + mImageFilenameEnding;
        }
    };

    anotherTileProvider.setTileSource(hiking);
    // anotherTileProvider.setTileSource(TileSourceFactory.FIETS_OVERLAY_NL);
    final TilesOverlay secondTilesOverlay = new TilesOverlay(anotherTileProvider, getActivity().getBaseContext());
    secondTilesOverlay.setLoadingBackgroundColor(Color.TRANSPARENT);

    GeoPoint startPoint = new GeoPoint(37.7510032, 14.9759253);
    IMapController mapController = map.getController();
    mapController.setZoom(15);
    mapController.setCenter(startPoint);

    map.setTileSource(MAPNIK);
    map.getOverlays().add(secondTilesOverlay);
    map.invalidate();`

I initialize an OnlineTileSourceBase object but it doesn't seem to work and I don't see any layer over the map.
while if try with:
anotherTileProvider.setTileSource(TileSourceFactory.FIETS_OVERLAY_NL);
it works so I think it's something my  OnlineTileSourceBase object
I'm preatty sure that url where i take tiles is correct because if i go for example:
https://tile.waymarkedtrails.org/hiking/12/2216/1581.png
I see one of it.
Does anyone have any suggestions?
thank you
Environment
Android
If it's a bug, version(s) of android this affects:
All
Version of osmdroid the issue relates to:
6.1.0

@tonydema It looks like you're interverting X and Y (cf. https://wiki.openstreetmap.org/wiki/Hiking_Maps). I suggest something like:
new XYTileSource("Hiking", 0, 19, 256, ".png", new String[] { "https://tile.waymarkedtrails.org/hiking/" })

@monsieurtanuki thanks
I have I tried but nothing change.
I had instantiated the object in that way because documentation ( https://github.com/osmdroid/osmdroid/wiki/Map-Sources ) says that for that type of url ( https://tile.waymarkedtrails.org/hiking/{z}/{x}/{y}.png ) and osmdroid version >= 6 they tell to use this:
mMapView.setTileSource(new OnlineTileSourceBase("USGS Topo", 0, 18, 256, "",                 new String[] { "http://basemap.nationalmap.gov/ArcGIS/rest/services/USGSTopo/MapServer/tile/" }) {                @Override                public String getTileURLString(long pMapTileIndex) {                     return getBaseUrl()                            + MapTileIndex.getZoom(pMapTileIndex)                            + "/" + MapTileIndex.getY(pMapTileIndex)                            + "/" + MapTileIndex.getX(pMapTileIndex)                            + mImageFilenameEnding;                }           });
It is strange that they reverse X with Y but changing the order does't work too.
Perhaps some particular permission is missing!?

@tonydema Read again the wiki text: USGS, as well as many other ArcGis based sources, use Zoom/Y/X and thus require a different URL pattern.
In your more standard case it's Z/X/Y.
I've just tried successfully to use your tile provider:

I used the code of demo SampleWithTilesOverlay
I replaced the tile layer part with this:

mProvider.setTileSource(new XYTileSource("Hiking", 0, 19, 256, ".png",
		new String[]{"https://tile.waymarkedtrails.org/hiking/"},
		"TODO"));

Et voilà :

it's true! it works! thank you very much @monsieurtanuki


JSON data for covid warriors

script to scrape covid warriors and saves as json file.
#160

This data is not rich, unique or recent enough to be included in this API. Anybody who needs it can capture those values from the website directly. Hence, closing.


added buffer importer

basically this is the same as importing from a file but under the assumption that the importer should take a prebuffered file in memory up to the js max of 1gb.
also replaced the out of bounds parameters in fixedSizeChunker for chunks larger than the fixed size.
also added condition at the top of tests to look for empty dir needed that github didn't push for testing nested dirs

LGTM (other than the small things) , thank you @nginnever :)
If you can, let's get this module prepared to run in the browser next (standard webpack + karma testing setup)

@nginnever what's missing on this one for it to be merged?

@diasdavid I'm about to push some commits I worked on over the weekend after the help I got from @dignifiedquire
So I have all the fixed-sized-chunker tests passing and will skip the web tests for file/dir importer and only test the buffer importer. I will get the buffer tests running today. I was thinking about adding the stream importer and tests in this PR but I still have a couple of questions about how we will flag the stream as a file or a dir or the best approach to this. So maybe I should make a separate PR for stream importer.
After that I just need to standard the code up and have you take a look.
Thanks!

@nginnever CR'ed. Overall LGTM, I'll wait for travis to merge, meanwhile, I left some little nitpicks :)


TLC GO downloads report a youtube_dl.utils.RegexNotFoundError Error

Checklist

[x] I'm reporting a broken site support
[x] I've verified that I'm running youtube-dl version 2019.06.21
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar issues including closed ones

Verbose log

PASTE VERBOSE LOG HERE

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['https://www.tlcgo.com/tv-shows/i-am-jazz/full-episodes/the-final-countdown?', '--verbose']
[debug] Encodings: locale cp1252, fs mbcs, out cp437, pref cp1252
[debug] youtube-dl version 2019.06.21
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.18362
[debug] exe versions: ffmpeg N-92906-g54109b1d14
[debug] Proxy map: {}
[debug] Using fake IP <IP_ADDRESS> (US) as X-Forwarded-For.
[DiscoveryGo] the-final-countdown: Downloading webpage
ERROR: Unable to extract video container; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmppgbwk_g4\build\youtube_dl\YoutubeDL.py", line 796, in extract_info
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmppgbwk_g4\build\youtube_dl\extractor\common.py", line 530, in extract
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmppgbwk_g4\build\youtube_dl\extractor\discoverygo.py", line 124, in _real_extract
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmppgbwk_g4\build\youtube_dl\extractor\common.py", line 1005, in _search_regex
youtube_dl.utils.RegexNotFoundError: Unable to extract video container; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Description

When I try to download a Episode from tlcgo.com since tlc.com no longer works it just asks me to make sure i updated saying Unable to extract video container error. It didn't request any Login Information to attempt to start downloading however it does to view the video on the site . It works perfectly in the browser. if it doesn't have a lock on it using tlc.com starts the download so is tlc.com broken?

I have the same issue, I downloaded the source and made a few changes to get the webpage output that youtube-dl is pulling down. The main problem is we're not authenticating, the page youtube-dl gets back says the episode is locked and you need to sign in. The second problem is, when I sign on a browser and inspect the page, the regex used to find the video-container doesn't match anything.
The last several comments on Issue #11257 cover this.


English menus - not translated

Not all menus translated to English when English is selected as debugger interface language, eg:

Thanks for the feedback. This part of the function has not been perfected. Including themes and fonts, etc., it will be revised later.


Clearing a context via JSRT API

Hi,
I hope this is the right place to ask this question, but anyways: I created a lot of contexts via the JSRT API and I am wondering how the memory and resources allocated for that context gets cleaned up. The JSRT API doesn't have anything like clear context. Is the context garbage collected?
Thanks for the answer...

It is indeed garbage collected. As long as a context is not set as current context of the runtime or intentionally pinned through JsAddRef, GC will be able to collect it.


Allow limiting by memory limit instead of item count

Same issue as described here: https://github.com/jeromefroe/lru-rs/issues/32. Would you be interested in implementing the solution proposed here?
If such a change is desired, that means the total number of elements is not known anymore. So this would require some changes and probably tradeoffs. Is this something you would like to see happening in this crate?

I am definitely not against it, but as always, it depends on the trade-offs.
I like the API you proposed with put_with_cost, other names could be put_with_weight or weighted_put.
Before jumping to implementation, I think it would be worthwhile to describe the semantic of common operations like get, put, put_with_cost with this new model.

Sounds good, thanks. I can write a few doc domments to the API functions in the next days to explain the user's view of things.
I like the renaming cost -> weight as it described a little better that this is carried around for the lifetime of the cache entry, not a one-time thing.

Looking into this a bit more, I think there are two core changes that the implementation would need:

Use a HashMap with no pre-set capacity since we don't know the number of elements in advance. I think we can assume HashMap increases its size in a clever way and at some point it does not grow anymore anyways.
Use a doubly-linked list of variable size that has a constant time remove (and get) function (for moving to the frost). Ideally we can use LinkedList at some point, where constant time remove is discussed right now. But it should be doable in the custom implementation somehow.

Use a HashMap with no pre-set capacity since we don't know the number of elements in advance. I think we can assume HashMap increases its size in a clever way and at some point it does not grow anymore anyways.

I  don't think it's really related to the current work. Moreover, capacity still remains an upper bound number of elements.

Use a doubly-linked list of variable size that has a constant time remove (and get?) function (for moving to the front). Ideally we can use LinkedList at some point, where constant time remove is discussed right now. But it should be doable in the custom implementation somehow.

The current linked list implementation is already doubly-linked and supports constant time remove. I don't really see a value in using LinkedList from stdlib. It lacks some useful APIs and some are marked as deprecated.
Having said that, I think adding support for put_with_weight is not actually that much of a change.
I will PoC something later tonight with the following constraints:

no change in FixedSizeList, capacity still being an upper bound number of elements, that part won't change.
store weight alongside key and value in the linked list nodes. Probably introducing a struct CLruCacheNode to holds those fields instead of relying on a tuple.

One thing that we would have to be careful of is the fact, as you noted in the PR, that put_with_weight won't be constant for a weight greater than 1. It will have to pop_back() until the weight of the cache + the additional node is <= capacity. I think it's OK, as long as put itself remains O(1).
The last thing I am unsure is the type of the weight argument?

Should it be a NonZeroUsize? But it might complicate the API too much?
Or a plain usize? But then what is the semantic of a put_with_weight(key, value, 0) call?

After thinking about this a little more, I also don't think the STL's LinkedList will add the index table that we have here and that is required. The only property of it we might want to have is variable length.
I think the core difference between my original proposal and your proposal is the limits. There are two options:

One dimensional: there is a single limit, and elements have variable weight. We don't know the number of elements at all since the application can use extremely large weights for very little number of elements.
Two-dimensional: there is a limit for the number of elements and a limit for the weight. This allows us to make assumptions on the expected number of elements.

I think both ways can work. The first one feels more elegant to me, but the second one probably makes some of the implementation more performant. Some of your open questions can probably only answered after choosing one route or the other.

It will have to pop_back() until the weight of the cache + the additional node is <= capacity. I think it's OK, as long as put itself remains O(1).

Since you have the worst case scenario where the cache is filled with N elements of weight 1 and you need to remove all of them in order to put in an element of weight N, I don't think O(1) is achievable.

Since you have the worst case scenario where the cache is filled with N elements of weight 1 and you need to remove all of them in order to put in an element of weight N, I don't think O(1) is achievable.

Since put will always use a weight of 1, it you will never have to pop more then 1 element, just as it's done right now; so it should work. Providing we don't allow weight of 0

Nice catch, yeah, put and put_with_weight have different worst case characteristics then.
This makes weight > 0 an important property and I'd rather use NonZeroUsize than a panicking implementation or adding additional Result wrappers.

or adding additional Result wrappers.

I kind of think we will have to do this nonetheless. There is the case of someone calling put_with_weight() with a weigh bigger  than the actual capacity of the cache. In that case, even clearing the cache won't make room for enough space.
It can already happen currently but only when the capacity is 0 which is a very unlikely scenario and thus in practice we ignore put() call if the capacity is 0 instead of returning an error.
But with put_with_weight is becomes very likely that this situation will arise and that people will need to know their insert failed. Ignoring the call all-together does not seem the right answer anymore.

Right.
I think it is reasonable to skip the put if it does not fit in just as the zero capacity case. It like filling water in a bucket. You can do that as much as you want but it can happen that the amount if water inside does not increase by doing so. Configuring the cache in a way that it makes sense for the use case and produces cache hits needs to be done by the application anyways.
I don't have a strong opinion here. Both APIs seem solid to me.

Done in https://github.com/marmeladema/clru-rs/pull/32


A feature for shifted motif count labels

A shifted count label may be helpful for visualizing the TR sequence and the flanking sequences.
Users can add flanking regions as input motifs, and the count label can be shifted by 1 and ended 1 before the end to only represent the number of motif counts.
The flanking motifs may have a special color.

Shifted count label is supported by fbfc343ccabd44d5cd3ec95401c3bb6fdc1c3092


Using 'model: observe' without calling "done" callback throws TIMEOUT error

Using {model: 'observe'} requires at least one "done" callback to be called otherwise the 'adding' service throws a TIMEOUT (eventually).
This is surprising to me because it was my understanding that {model: observe} is a form of 'fire and forget' strategy for Seneca Mesh/Balance Client.
You can the code reproduction here:
https://github.com/jimimatrix/seneca-mesh-observer-issue

Thank you - very helpful!
In this case, you need to call done() without any arguments - this indicates to Seneca that you have completed your work on the message, even if you have no reply.
You always need to call done, regardless of whether this is a response or not.
BUT: is this a good API design - not sure - you found it surprising, which is not good - I need to think about this!

Thanks for getting back to me. Executing a callback signals to me a coupling between sender and receiver. I'm not sure what is happening 'behind the scenes' and whether a sender is actually waiting for a response or whether this is just formality. I'm also not sure if I should be executing the dummy callback before or after running the responding code.
Observe, consume, synchronous, asynchronous. All these terms seem fuzzy in the framework as I try to grock its view of the world.

Even in the same process, you'd have to call done() - it's a signal that you've finish processing the action.
Depending on what you want, you may wish to finish immediately, or only after some processing - hence the done.
Terminology: noted!

Thanks. done() is a signal to whom that the process is finished?

Seneca itself.

While I have you, is there any reason to call done() before or after the processing? What is 'waiting' on the done() to be executed? If nothing is being passed back, no other process should care when done() is called, correct?

You might still want a timeout on the async operation itself - say you're resizing images and the spawned process fails in some way, or hangs. Then you'll get a time out in the client Seneca process that you can log etc.

Got it. Thanks again!


fix type pubkey serialize

To serialize a pubkey the function needs the pubkey-bytes, the function as written now took a private key.
This fixes the function to request the correct struct of a pubkey by using the correct slot reader.
Additionally include the compressed key argument.

Sorry for the delay in review of this as well as #12 and #13. For some reason, my notification settings were wrong and I didn't get notified on new PRs. I'll get to reviewing these today.
Meanwhile, please use the following convention for commit messages (here and in #12 and #13)
<component>: <description>

and also please use "`" markers for references to Lisp symbols in commit messages. For example, for this commit, it should be something like
crypto: fix expected argument type in `serialize-pubkey`


Remove ioutil

Don't use ioutil package anymore as it doesn't anything special anymore since Go 1.16:

// As of Go 1.16, the same functionality is now provided
// by package io or package os, and those implementations
// should be preferred in new code.

LGTM, could you also add a vet rule to block the import of ioutil?

Codecov Report

Merging #18222 (128f00a) into main (70d7475) will decrease coverage by 0.00%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main   #18222      +/-   ##
==========================================
- Coverage   45.64%   45.64%   -0.01%
==========================================
  Files         830      830
  Lines       92020    92024       +4
==========================================
- Hits        42002    42001       -1
+ Misses      43283    43280       -3
- Partials     6735     6743       +8

Impacted Files
Coverage Δ

models/unit/unit.go
50.51% <0.00%> (-2.18%)
:arrow_down:

modules/updatechecker/update_checker.go
0.00% <0.00%> (ø)

modules/git/utils.go
68.05% <0.00%> (-2.78%)
:arrow_down:

modules/git/repo_base_nogogit.go
80.00% <0.00%> (-2.50%)
:arrow_down:

modules/process/manager.go
81.39% <0.00%> (-1.56%)
:arrow_down:

modules/git/blame.go
63.76% <0.00%> (-1.45%)
:arrow_down:

models/repo_list.go
76.62% <0.00%> (-0.60%)
:arrow_down:

models/issue_comment.go
54.23% <0.00%> (-0.57%)
:arrow_down:

routers/api/v1/repo/pull.go
28.35% <0.00%> (-0.51%)
:arrow_down:

services/pull/pull.go
41.70% <0.00%> (-0.41%)
:arrow_down:

... and 2 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 60b9455...128f00a. Read the comment docs.

LGTM, could you also add a vet rule to block the import of ioutil?

https://gitea.com/gitea/gitea-vet/pulls/17/files


Add docs to this repo

What
Add the jekyll site served at https://free2z.com/docs to this repo
Why
More people can contribute to them
Reference
#1

we can tackle this later - easier to iterate faster in the private monorepo for now. Also, most docs will become zPages over time and we might just get rid of the jekyll site.


build: added namespace for AGP version 7+. This should fix compatibil…

…ity issues with gradle 8.
Fixes issue #324
Overview

Some Android dependencies require Gradle 8. The only way this (rn geo location) can be used with Gradle 8 is by adding the namespace value.
Test Plan

Configure react native project with android gradle 8. Sync / build project.

@michalchudziak would it be possible to get this reviewed and merged? This is currently a blocker for me on a project.
Thanks!


Open the debug without any stacktrace

I am trying with https://github.com/Varying-Vagrant-Vagrants/VVV to get running vDebug.
The issue is with this very basic settings:
let g:vdebug_options = {
    \    'break_on_open' : 0,
    \    'ide_key' : 'VVVDEBUG'
    \}
let g:vdebug_options.path_maps = {"/srv/www/": "/home/mte90/Desktop/VVV/www/"}

I see the page on loading and after a while open as show in the screenshot without any way to interact with the information.
It's not clear to me what is missing to get working everything.
If I use other tools the connection and debugging is working.

any hint for help with the debugging?

1st thing you can do to check if something is working is to enable break_on_open

Removing break_on_open I get it working (I am on another computer):

but with wordpress is useless...

I'm not sure what you mean with

but with wordpress is useless...

If I can guess, you mean nothing happens in wordpress, then that sounds normal, because you are blocking further execution?

Sorry for the misunderstoonding.
I mean that break_on_open in wordpress is useless, so is better to disable it but in that way vdebug is not working for me.

I saw the new commits, so I wanted to try the new changes but the result is similar.

I am not sure that the latest changes to the plugin help with my issue, there are any kind of debugging that I can do to understand what is happening?

The changes are unrelated to your issue. I'm going to look into it with time.

any updates?

Let me know how I can help, I am available to investigate in the code but I have no glue how works xDebug.
This issue is blocking me to use vim as daily tool and improve also my dev workflow.

With xDebug, you can use xdebug_break(); where you need to break on.

Thanks for the hint, with that xDebug works as intended with vdebug!
If I try to put breakpoints in vim they are not reconized. At least I found a way to use it, thanks a lot!

I'm having this same issue. Setting a break point with vdebug opens the the debugger with no output and then a message right away that says "waiting for a connection: none found so far". And if I try to use the step commands I get, "Step over is only possible when Vdebug is running."
Using xdebug_break() instead works as expected. 👍
Please let me know if I can provide more information that would be helpful.

As I am trying to get a xdebug dev environemnt that works I am doing more tests, with pugdebug I am able to use breakpoints https://github.com/Mte90/pugdebug but with vdebug doesn't work, except when `xdebug_break()``is used.
So my guess is that vdebug is not sending or reading right some information that instead with that command are right.
Can someone help on debugging and giving some hints? I can try to patch vdebug on my own with more information, because this bug is stopping me to use vim at 100% since few years.

I am having the same issue with https://github.com/puremourning/vimspector that use https://github.com/felixfbecker/vscode-php-debug
If I mark a breakpoint is not working but with xdebug_break() everything is fine.

This is what I get in the log output when that issue happens:
- [Info] {Mon 14 2020 16:48:35} Closing the connection
- [Debug] {Mon 14 2020 16:48:35} Command: stop -i 1
- [Debug] {Mon 14 2020 16:48:35} Response: <?xml version="1.0" encoding="iso-8859-1"?>
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="stop" transaction_id="1" status="stopped" reason="ok"></response>
- [Debug] {Mon 14 2020 16:48:35} Closing the socket
- [Debug] {Mon 14 2020 16:48:35} Closing the socket
- [Debug] {Mon 14 2020 16:48:35} keymapper: unmap
- [Debug] {Mon 14 2020 16:48:35} Closing the socket

Seems like that after launching the connection is stopped by vdebug itself before to get something from xdebug.

@Mte90 is there a simple way to reproduce this? because I'm only seeing this empty stacktrace situation when xdebug got connected but there was no breakpoint hit.

The point is that a breakpoint is configured inside vim but seems that vdebug is ignoring it

Yes, I get the point, but I have not yet been able to reproduce it in any way. So I was wondering if you would be able to provide a simple enough example where it happens so that I can pinpoint what goes wrong.

Well I am getting when using https://github.com/Varying-Vagrant-Vagrants/VVV/ with xdebug enabled, so I don't have any tiny environment to replicate...
That was the reasons I tried to investigate, if you can give me some hints in the code I can take a look again

I did a bounty of 15$ for this ticket https://www.bountysource.com/issues/76208208-open-the-debug-without-any-stacktrace
I am available for debugging.


Integrate statutory

Since the I've implemented the application procedure in oms-statutory (though more things are to be implemented, like candidatures, voting, members list management etc.), I think it's worth to integrate it in oms-docker.

Yep and that way you can get feedback from people on the staging

@blacksph3re that was actually my idea :D as I asked some of the former/current Chair Team fellows to test it


Consumer offsets not displaying (missing partitions)

Kafka 0.10.0 on Ubuntu 14.04.04 LTS
Trifecta 0.20.0
Using kafka-python client I consume a topic with 9 partitions and then view in Trifecta > Inspect > Consumers > {topic} > {group} and it only displays offsets for a portion of the partitions. I expect to see all partitions.

Using the CLI tool I perform the following and it confirms they were all consumed and no lag:
ubuntu@db1:~$ kafka-consumer-offset-checker --group etl-diffs --topic rets.nnrmls.Agent --zookeeper localhost:2181

Group           Topic                          Pid Offset          logSize         Lag             Owner
etl-diffs       rets.nnrmls.Agent              0   3175            3175            0               none
etl-diffs       rets.nnrmls.Agent              1   3691            3691            0               none
etl-diffs       rets.nnrmls.Agent              2   3352            3352            0               none
etl-diffs       rets.nnrmls.Agent              3   3432            3432            0               none
etl-diffs       rets.nnrmls.Agent              4   3111            3111            0               none
etl-diffs       rets.nnrmls.Agent              5   2856            2856            0               none
etl-diffs       rets.nnrmls.Agent              6   3247            3247            0               none
etl-diffs       rets.nnrmls.Agent              7   3690            3690            0               none
etl-diffs       rets.nnrmls.Agent              8   3072            3072            0               none

I upgraded to latest 0.21 and same issue it appears.

I'll take a look, and get it fixed. :-)

Could you confirm whether these issues still exist in the latest release?

Trying to deploy latest release but paths and directories changed (trifecta-ui instead of trifecta_ui folder naming, etc) and broke our build scripts. Fixing and will report. Thanks

Hi @ldaniels528 sorry been working on other projects. I upgraded to rc8 a couple months ago and ever since I cannot view the messages any more.

v0.22.0rc8b (<IP_ADDRESS>)

As such, it's difficult to tell if other issue resolved.

I'm unsure what changed and I proxy requests to Trifecta via Nginx on web server and haven't had time to troubleshoot. V 0.20 worked fine and then with 0.22.x file names changed and had to update my deploy scripts and the UI hasn't worked since.


not so good completion menu appearence after #72

although #72 makes sense, it would be nice to be able to opt into the old behaviour.
at 57610d5ab560c073c465d6faf0c19f200cb67e6e (before the merge):

at d11d58c3fc3edbd8c0112b5850ef4ed553d98752 (after the merge):

Has just ran into the same issue but in my case it is a bit more cursed and drastically effect UX.

Config:
`local cmp = require("cmp")
local luasnip = require("luasnip")
local lspkind = require("lspkind")
require("luasnip/loaders/from_vscode").lazy_load()
local cmp_select = { behavior = cmp.SelectBehavior.Select }
vim.opt.completeopt = "menu,menuone,noselect"
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
	["<C-k>"] = cmp.mapping.select_prev_item(cmp_select),
	["<C-j>"] = cmp.mapping.select_next_item(cmp_select),
	["<C-b>"] = cmp.mapping.scroll_docs(-4),
	["<C-f>"] = cmp.mapping.scroll_docs(4),
	["<C-Space>"] = cmp.mapping.complete(),
	["<C-e>"] = cmp.mapping.abort(),
	["<CR>"] = cmp.mapping.confirm({ select = false }),
}),

sources = cmp.config.sources({
	{ name = "nvim_lsp" }, -- lsp
	{ name = "luasnip" }, -- snippets
	{ name = "buffer" }, -- text within current buffer
	{ name = "path" }, -- file system paths
}),
formatting = {
	format = lspkind.cmp_format({
		mode = "symbol",
		maxwidth = 50,
		ellipsis_char = "...",
	}),
},
window = {
	completion = {
		border = "rounded",
	},
	documentation = { border = "rounded" },
},

})
`

Found a solution that has nothing to do with lspkind. I combined lspkind with solution suggested in https://github.com/hrsh7th/nvim-cmp/discussions/609#discussioncomment-5727678. Also removed "menu" field from nvim-cmp config. In the end my config looks like this:
local cmp = require("cmp")
local luasnip = require("luasnip")
local lspkind = require("lspkind")

require("luasnip/loaders/from_vscode").lazy_load()

local cmp_select = { behavior = cmp.SelectBehavior.Select }

vim.opt.completeopt = "menu,menuone,noselect"

local format_fn = function(entry, item)
	item.menu = ""
	local fixed_width = 40
	local content = item.abbr

	if fixed_width then
		vim.o.pumwidth = fixed_width
	end

	local win_width = vim.api.nvim_win_get_width(0)

	local max_content_width = fixed_width and fixed_width - 10 or math.floor(win_width * 0.2)

	if #content > max_content_width then
		item.abbr = vim.fn.strcharpart(content, 0, max_content_width - 3) .. "..."
	else
		item.abbr = content .. (" "):rep(max_content_width - #content)
	end

	return item
end

cmp.setup({
	snippet = {
		expand = function(args)
			luasnip.lsp_expand(args.body)
		end,
	},

	mapping = cmp.mapping.preset.insert({
		["<C-k>"] = cmp.mapping.select_prev_item(cmp_select),
		["<C-j>"] = cmp.mapping.select_next_item(cmp_select),
		["<C-b>"] = cmp.mapping.scroll_docs(-4),
		["<C-f>"] = cmp.mapping.scroll_docs(4),
		["<C-Space>"] = cmp.mapping.complete(),
		["<C-e>"] = cmp.mapping.abort(),
		["<CR>"] = cmp.mapping.confirm({ select = true }),
	}),

	sources = cmp.config.sources({
		{ name = "nvim_lsp" }, -- lsp
		{ name = "luasnip" }, -- snippets
		{ name = "buffer" }, -- text within current buffer
		{ name = "path" }, -- file system paths
	}),
	formatting = {
		fields = { "abbr", "kind" },
		format = lspkind.cmp_format({
			maxwidth = 40,
			ellipsis_char = "...",
			before = format_fn,
		}),
	},
	window = {
		completion = {
			border = "rounded",
		},
		documentation = { border = "rounded" },
	},
})

Result:

Although, documentation may seem too large it does not cause any problem cause it adjusts it size.

i don't think this is a real solution, however. removing menu just hides the problem. @onsails are you sure this can be marked as completed?

Hi, @vxpm can you talk more about why this is not solved?
The labelDetails become optional. You could turn it on with show_labelDetails = true.

Hi, @vxpm can you talk more about why this is not solved?
The labelDetails become optional. You could turn it on with show_labelDetails = true.

oh!! sorry, it is indeed solved. it completely flew over my head that #75 exists and that's why the issue was closed - i only saw stepanchous reply. oops.
thank you for solving it!


Billing

ther is no Billing option in the admin center?
[Enter feedback here]

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

ID: df7c4647-3b29-0d9f-bd2d-9313fd3c8727
Version Independent ID: ce4ffa1a-7717-958f-618c-2c7e470b379e
Content: View your bill or invoice
Content Source: microsoft-365/commerce/billing-and-payments/view-your-bill-or-invoice.md
Service: microsoft-365-business
GitHub Login: @cmcatee-MSFT
Microsoft Alias: cmcatee

@Linas08 Thank you for your feedback. I was able to locate the billing option in the admin center

If you continue to have trouble, I'd recommend contacting support via the need help section on the admin center, so that an engineer can work with you to fix the issue.
Hope this helps!
Thanks
Sri


Add back import for go-bridge.owl.

Fixes #25481.

@balhoff Happy to merge on pass.

Thank you @balhoff ! :partying_face:


Message-IDs in the archive are erroneously tidied up

When messages are put in the archive, something tidies up the message-IDs by deleting punctuation characters, e.g.
 Message-ID<EMAIL_ADDRESS>
When I reply to a message in the archive:
In-Reply-To<EMAIL_ADDRESS>
This also affects messages in the web archive, but not those sent by Mailman to list subscribers.
Someone noticed that this screws up threading in replies. The punctuation is valid under RFC 5322 and its predecessors, so it's hard to imagine why it's doing that. But it shouldn't.

Hi John,
When I look up the message id above (with +, =) in the archive, the header looks correct (Show Headers):
https://mailarchive.ietf.org/arch/msg/art/0697b4e4q_U6U0jxwAANhVfNME0/
Can you elaborate on where you are seeing the corrupted id?
Thanks,
Ryan

Take another look at my note. The actual message ID contained = and + signs that disappeared by the time it was put in the archive. They were present in the copies sent out to the list.
I realized this because I pull messages from the archive via IMAP, and when I reply to them, everyone's message threads are broken because the ID in In-Reply-To was corrupted.

The message file on disk in the archive definitely has the = and + signs, and appears correct in the message view of this Mail Archive application, https://mailarchive.ietf.org/arch/msg/art/0697b4e4q_U6U0jxwAANhVfNME0/. Message ID corruption must be happening further down the chain. Perhaps the IMAP server? Though when I view this message in my Thunderbird client, via IMAP service, the ID also looks correct.

Hm, you're right. Let me see if I can pin it down further.