Browserify supports caching (yep, "strong" and "weak")!

Browserify now supports browser caching, both "strong" and "weak".
"Last-Modified" and "If-Modified-Since" are "weak" caching.  If the "If-Modified-Since" header is set, then Browserify can send 304 Not Modified, if appropriate, which saves bandwidth.
"Expires" or "Cache-Control: max-age" are "strong" caching.  The browser can simply pull from its own cache in certain cases to save an entire HTTP request.  In the client HTML, if the Browserify URL contains a query parameter that exactly matches the last modified date of the bundle, "strong" caching headers will be set.  This allows a user to easily implement URL fingerprinting by simply appending the last modified date of the Browserify bundle (b.modified) to the mount URL.  The full Browserify mount URL (including the needed query parameter) is made available via req.browserifyMount.  Finally, if Express is being utilitzed, the 'browserifyMount' local is available to views via res.locals(...).
Tested on Chrome 13 and IE 8, Node 0.4.11.
See http://code.google.com/speed/page-speed/docs/caching.html for more details.

I'd like to put in a little bump too, this seems quite essential.

I'm excited about this, although in my reading I just encountered a couple of items regarding using the file modification date as the unique filename, as implemented here (server.js?1320659376830):
Full text: http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
In short, as summarized by the Rails asset pipeline discussion (http://guides.rubyonrails.org/asset_pipeline.html):
--

Not all caches will cache content with a query string.
Steve Souders recommends, “…avoiding a querystring for cacheable resources”. He found that in this case 5-20% of requests will not be cached. Query strings in particular do not work at all with some CDNs for cache invalidation.
The file name can change between nodes in multi-server environments.
The query string in Rails is based on the modification time of the files. ` assets are deployed to a cluster, there is no guarantee that the timestamps will be the same, resulting in different values being used depending on which server handles the request.

The other problem is that when static assets are deployed with each new release of code, the mtime of all these files changes, forcing all remote clients to fetch them again, even when the content of those assets has not changed.
Fingerprinting fixes these problems by avoiding query strings, and by ensuring filenames are consistent based on their content.
--
I think we should consider implementing a hash-based filename instead of timestamp.  Thoughts?

I agree with you about the hash being more difficult to determine if it's been changed. I guess my feeling is that:

a unique filename seems stronger in that it is always present in the URL, and if everyone obeys it that is a plus
with a hash the intention is totally clear: if this file has the same contents, I don't want a new copy; modified-date is a proxy for that intent

That said, a unique filename with the modified date in the name instead of the query string should have equivalent functionality, and does pick up the advantage you mention that humans more easily can tell what is going on behind the scenes.

Good point. I think I have changed my mind, and I also like the hash approach better.  It's just a bit harder to implement and slightly more computationally expensive.
So, in summary... here's what we need.  An Expires header set on every request for the file.  The filename itself contains the hash information, not in the query string.  We need to handle If-None-Match requests and return 304, as needed.  And, finally, we need to supply the filename of the bundle (with the hash appended) to our views, so that the browser knows what filename to serve up.  res.locals(...) works nicely for this if you're using Express.

OK, so I have that code here: a20cd46fc31a10d992bf65cd64ecd8689c377b9b and have been using it for a couple of weeks now.  I have not updated res.locals() since I am not using express, but I think it can be done exactly as you do it now:
exports.browserifyMount = function (req, res) {
  return function () {
    return req.browserifyMount;
  };
};

Your commit looks good, other than the Cache-Control header, which appears setting max-age to 0, which could turn caching off.

I finally decided that this functionality might be best in a separate middleware.  Check out https://github.com/bminer/browserify-cache instead.

Quite right - this seems to be a mistake on my part.  It is updated in the
head of my fork.
Thanks,
-Paul
On Thu, Nov 17, 2011 at 1:12 PM, Blake Miner <
<EMAIL_ADDRESS>
wrote:

Your commit looks good, other than the Cache-Control header, which appears
setting max-age to 0, which could turn caching off.

Reply to this email directly or view it on GitHub:
https://github.com/substack/node-browserify/pull/71#issuecomment-2779564

Interesting, I am unsure at this point, as it seems like a specific piece
of middleware that can only be used with browserify, and also which is a
bit of a necessity considering the size to which these bundles can grow --
by the way, is @substack participating in this discussion somewhere?
As a tangent, when you factor it out like this, I start thinking about how
I might use the same code for bundling my other client-side Javascripts
into a tag that provides ActionController-like asset functionality,
especially bundling, minifying, and setting of cache-headers, which is
another of my pre-release targets.  If that could be achieved then it
really would be a standalone middleware.
ref:
http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html
On Fri, Nov 18, 2011 at 8:49 AM, Blake Miner <
<EMAIL_ADDRESS>
wrote:

I finally decided that this functionality might be best in a separate
middleware.  Check out https://github.com/bminer/browserify-cache instead.

Reply to this email directly or view it on GitHub:
https://github.com/substack/node-browserify/pull/71#issuecomment-2789212

Good point.  I think there is definitely a need for a module that supports URL fingerprinting of assets that frequently change - in other words - assets like *.css, *.js.  Assets like images don't fall into this category.  I will think about this over the weekend and might generalize the caching package to all assets, not just Browserify bundles.


Style for workflow state

 Issue by jcoyne
Friday Sep 23, 2016 at 15:15 GMT
Originally opened as https://github.com/projecthydra/curation_concerns/issues/1029

On the show page under the title. .show

 Comment by jcoyne
Friday Oct 14, 2016 at 22:06 GMT

Yep

 Comment by mjgiarlo
Friday Oct 14, 2016 at 21:03 GMT

Item show page, @jcoyne?

@projecthydra-labs/hyrax-ui-ux-advisors Do you folks have suggestions for how we should display the current workflow state of items on their show pages?

@mjgiarlo – can you add some examples of workflow states that might be displayed?  And would part of a given workflow configuration be whether or not a work, and thus a show page for the work,  is itself private, at any given workflow stage?

@newmanld You bet. I'll toss a screenshot here this afternoon. You'll just see the one state, but there are a handful of possible labels you could see in its place.
And, yes, workflow configuration includes which steps in the workflow "activate" or "deactivate" a work. When a work is activated, the usual Hydra access controls are used. When a work is deactivated, the code also factors in workflow roles of the requesting user.

See the "complete" label beneath the work title, @newmanld @projecthydra-labs/hyrax-ui-ux-advisors:

@vantuyls Do you want to slot this into MD milestone 2 or 3, or leave in its current milestone?

I think the placement beneath the title is ok, but a label may be needed to put the status in context.  So, expanding on the status of ‘complete’, perhaps “workflow state: complete”?  Or just “status: complete”?   Other ideas?

I agree with @newmanld that, depending on the potential values of the workflow state text, it might help to preface the state with "status". I definitely think that is necessary if one of the values is really going to be "complete."
On the other hand, if the text of potential states can be terms that are more meaningful on their own, we might be able to get away with not prefacing them. See a few examples below, where I used the terms "Published" (instead of "complete") and "In review" (not complete). I don't have the full context of the mediated deposit work to know if those are acceptable terms to use, but I think the terms we use matter so it might be worth discussing.
In the examples below, I've also moved the workflow state into a label and put it next to the visibility state label. As long as we don't have more than a couple of labels like this, this arrangement seems better to me than having one next to the title and the other below the title.
(I like this approach, but another approach could be to present the visibility and workflow states elsewhere on the page, with the metadata. They wouldn't be as prominent there, which could either be good or bad, depending on how you feel about colorful labels in prominent places.)

What's the primary goal of workflow label vs access label? If workflow label is helping admin move items through a deposit and review process, then it should probably appear beside those other tasks.  If access label helps end user understand if she can view an object, then it makes sense in prominent spot like beside title. I can see huge potential for confusion with the "private / published" combo above. I understand what it means, but that's some pretty conflicting label info for a typical user. Can you point me to wireframes for steps through mediated workflow? That might help me understand question better. Also, do we need a show page for incomplete items?

@sfbetz Not sure if you are asking me specifically for wireframes or to answer your other questions, but I don't think I know any more than you about the mediated deposit details. I wasn't involved in the work and don't know if there are any wireframes produced by anyone else. I was just trying to help move this discussion forward. My assumption was the primary purpose of these labels is helping the user understand the status of the work.
I agree that the scenario with "private" and "published" could be confusing. It seems better to me than "private" and "deposited," but it would be great to hear some other ideas.

Sorry @ggeisler - I was pinged through UX advisors so just trying to get some context on question to help with solution. My questions are for everyone on thread (maybe @mjgiarlo can chime in?) - just trying to understand the UI and workflow steps that user progresses through when approving / mediating a work - seems to make sense to align label with those actions, using same language, but couldn't find any wireframes to see what that looks like...

@ggeisler Here's a little bit of data on what workflow states we currently have:

deposited
pending_review
changes_required

And this can be expected to grow when users create and load their own custom workflows. I wonder if we should instead ask the work whether it's currently suppressed or not, and if so, show "Published" and if not, show "In Review"? What's nice about this is we can ask this in the future (without needing to explicitly map the new state onto one of these two labels) when new states are added, and I suspect most users want to know if a thing is available or not vs. what exact workflow state it's in.

@sfbetz :speech_balloon:

f workflow label is helping admin move items through a deposit and review process, then it should probably appear beside those other tasks. If access label helps end user understand if she can view an object, then it makes sense in prominent spot like beside title.

@ggeisler :speech_balloon:

My assumption was the primary purpose of these labels is helping the user understand the status of the work.

What I had in mind was the same as @ggeisler says here -- we have admin-specific workflow UI tools, which are admittedly a work in progress, but I don't see admins using show pages to push things through workflows.

@mjgiarlo Yep, showing either "Published" or "In review" appeals to me if it makes sense (and it sounds like it might). As you say, it seems like the most common thing a user would want to know here is just whether it's published or not, and that approach eliminates having to worry about new states that arise in future workflows.
If we go with this approach, then we can focus on answering the original question of this ticket, which I think was about styling of the workflow state. I don't have anything better to offer than my mockups above, where we show both the workflow and visibility states on the same line as the work title, styled as labels. If we use the terms "Published" and "In review," I don't think they need a "Workflow:" qualifier for them to make sense to the user, though I share a slight concern with @sfbetz about the situation when you have "Private" and "Published" next to each other. I don't have a basis for judging whether that has enough potential for confusion to warrant trying to come up with different strategy, however.

@ggeisler OK. My sense is that, given the mockups and discussion above, this issue is actionable -- and we can revisit the design, as always, when someone has time to do usability testing. Thank you!

@mjgiarlo this is done, right?

@jcoyne Not the design discussed above, no.

@vantuyls I'd like to close this ticket and open a new issue with any further changes to workflow state display.
Thoughts?

I think this is done now? The discussion, it seems to me, doesn't resolve what changes actually need to be made beyond what we currently see in Hyrax. I'm inclined, also, to close if other participants don't have strong opinions.


decode branch merge

In this update,

move the decoding initialization part out of the model to prevent repeated initialization
rewrite the parallelizable part in TensorFlow in ctc_scorer
add wfst adaption
update related docs
this update has been tested that It does not change the decoding accuracy in the beam search mode but improve decoding speed more than 2 times.

@cookingbear @Some-random
Thanks for your work. I also wanna try it out . Could you help to provide the JSON config, as an example?

Would be better to have a tutorial for instructing how to use this feature and how to make the WFST graph ? Thank you:)

wfst adaption and decoding speed acceleration will be updated in new pull requests respectively


Guide for adultvideoscript

Hello
do you have any tutorial to install these player on
adultvideoscript script please let us know
Want to install this on my tube site

Hi @gamejump, I've been speaking with AdultVideoScript as this is a paid service and we have no access ourselves. The response I received regarding access to code and file structure was as follows: "You get complete unencoded source codes, complete access to everything". My answer will therefore assume you have access to the code and directories.

Download the required FluidPlayer files
Extract the files to the desired location on your domain
Include the necessary scripts as normal defined in the Fluid Player installation guide, ensuring all file paths are correct - https://github.com/fluid-player/fluid-player

When querying integration of players they also mentioned that they will integrate Fluid Player for a cost. Their reply was as follows: "We can integrate JWPlayer if you wish, or other players, for an extra price. We can integrate it fluidplayer, too, but for an extra cost."
I hope you find this information useful, and if there is any further clarification needed please let us know.


Stack Overflow with Specific Optimization Levels When Running Test Cases

Hi, I've noticed that when running test cases for this crate, I get a stack overflow when using certain specific optimization level (-C opt-level=0), not sure if it's a problem with the crate or with rustc.
I am using cargo version: cargo 1.77.0-nightly (7bb7b5395 2024-01-20), and below is an example of triggering the issue.
By using the following command:
RUSTFLAGS="-C opt-level=2" cargo test

The tests will run successfully like this:
......
test crates/toml_edit/src/ser/mod.rs - ser::to_string (line 103) ... ok
test crates/toml_edit/src/ser/value.rs - ser::value::ValueSerializer (line 15) ... ok
test crates/toml_edit/src/de/value.rs - de::value::ValueDeserializer (line 13) ... ok
test crates/toml_edit/src/item.rs - item::value (line 362) ... ok

test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s

However, if I change the optimization level to 0, for example, with the command:
cargo clean
RUSTFLAGS="-C opt-level=0" cargo test

It will produce the following stackoverflow:
test parse::stray_cr ... ok
test stackoverflow::inline_dotted_key_recursion_limit ... ok
test stackoverflow::dotted_key_recursion_limit ... ok
test stackoverflow::table_key_recursion_limit ... ok

thread 'stackoverflow::array_recursion_limit' has overflowed its stack
fatal runtime error: stack overflow
error: test failed, to rerun pass `-p toml_edit --test testsuite`

Caused by:
  process didn't exit successfully: `/home/cici/toml/target/debug/deps/testsuite-9882ff360a6a395e` (signal: 6, SIGABRT: process abort signal)

I wonder if this is a duplicate of #653 (which I closed due to lack of reproduction case)
I'm also able to reproduce this with
$ CARGO_PROFILE_DEV_OPT_LEVEL=0 cargo test

The odd thing is that the dev profile defaults to opt-level = 0, so not sure why changing this flag makes a difference.

If I drop the recursion limit from 128 to 64, it passes.

I wonder if this is a duplicate of #653 (which I closed due to lack of reproduction case)
I'm also able to reproduce this with
$ CARGO_PROFILE_DEV_OPT_LEVEL=0 cargo test

The odd thing is that the dev profile defaults to opt-level = 0, so not sure why changing this flag makes a difference.

I think the reproduction case is the test case tests/testsuite/stackoverflow.rs/array_recursion_limit(), I could reproduce it with this command:
RUSTFLAGS="-C opt-level=0" cargo test --package toml_edit --test testsuite --features parse --features display -- stackoverflow::array_recursion_limit --exact --nocapture

But this case will pass if opt-level is set as 1/2/3/s/z. Is it possible that this is a bug related with rustc optimization?

Likely the problem is that the optimizer is reducing the stack size, making the recursion cheaper and allowing deeper recursion.  The biggest red flag is about the dev profile's defaults.

I wonder if this is a duplicate of #653 (which I closed due to lack of reproduction case)
I'm also able to reproduce this with
$ CARGO_PROFILE_DEV_OPT_LEVEL=0 cargo test

The odd thing is that the dev profile defaults to opt-level = 0, so not sure why changing this flag makes a difference.

In your Cargo.toml (https://github.com/toml-rs/toml/blob/main/Cargo.toml), the opt-level is set as 1, so it's not using the default dev profile.

Wow, hadn't realize that was in there as it isn't part of my standard template.


⚠ Bofrost.be has degraded performance

In 5ac1d32, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1675 ms

Resolved: Bofrost.be performance has improved in 1048eae.


Thanos compactor causing huge memory spikes when compacting raw blocks

What happened:
We are planning to use thanos for long term storage and during the process we are facing few setbacks. As attached we are seeing 15GB RAM spike for thanos-compactor for 3.5lakh time series. We have a plan to implement compaction and downsampling for 8M time series which extrapolating would result in below figures
15GB RAM - 3.5 lakh samples
360GB RAM - 8M samples
360GB RAM is too much actually for short spikes. Below is the configuration we are using, despite setting concurrency arguments we are still seeing memory spikes.
Please let us will this be fixed in future versions?
What you expected to happen:
We expected RAM utilization to be way lesser
How to reproduce it (as minimally and precisely as possible):
We are running two replicas of prometheus with thanos sidecar embedded to write to minio s3 object storage in the same cluster with the below configuration
  containers:
  - args:
    - compact
    - --wait
    - --log.level=info
    - --log.format=logfmt
    - --objstore.config=$(OBJSTORE_CONFIG)
    - --data-dir=/var/thanos/compact
    - --retention.resolution-raw=2d
    - --retention.resolution-5m=15d
    - --retention.resolution-1h=30d
    - --deduplication.func=penalty
    - --compact.enable-vertical-compaction
    - --delete-delay=2h
    - --block-files-concurrency=20
    - --block-meta-fetch-concurrency=32
    - --compact.blocks-fetch-concurrency=20
    - --consistency-delay=30m
    - --deduplication.replica-label=prometheus_replica

Thanos, Prometheus and Golang version used:
Thanos: 0.34.1
prometheus: 2.49.2
golang: 1.21

@mohaabduvisa Whats happens, if you set the memory.limit on a compactor + using --enable-auto-gomemlimit ? (feature from 0.35)
I guess, without an limit, to go runtime uses what ever it gets.


Support DDL

test case:
# need to build https://github.com/Lloyd-Pottiger/tiflow/tree/support-output-column-id-in-storage-sink
$ tiup playground --ticdc 1 --ticdc.binpath ../tiflow/bin/cdc

$ tiup bench tpcc prepare -T 40

mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> delete from customer where c_id = 1;
Query OK, 100 rows affected (0.37 sec)

mysql> alter table customer add column c_tmp varchar(100) NOT NULL default "";
Query OK, 0 rows affected (41.59 sec)

mysql> delete from customer where c_id = 2;
Query OK, 100 rows affected (0.35 sec)

mysql> alter table customer modify column c_data text, drop column c_tmp;
Query OK, 0 rows affected (0.30 sec)

mysql> alter table customer rename column c_data to c_data_t;
Query OK, 0 rows affected (0.08 sec)

mysql> delete from customer where c_id = 3;
Query OK, 100 rows affected (0.37 sec)

mysql> alter table customer rename column c_data_t to c_data;
Query OK, 0 rows affected (0.09 sec)

mysql> delete from customer where c_id = 4;
Query OK, 100 rows affected (0.34 sec)

[2023/07/10 18:10:43.140 +08:00] [INFO] [connector.go:140] ["Successfully load snapshot"] [table=customer] [filePrefix=full20230704/snapshot/test.customer.]
[2023/07/10 18:10:47.237 +08:00] [INFO] [s3.go:402] ["succeed to get bucket region from s3"] ["bucket region"=us-east-2]
[2023/07/10 18:10:48.915 +08:00] [INFO] [snapshot.go:216] ["Successfully upload loadinfo"] [loadinfo="Copy to snowflake start time: 2023-07-10T18:10:33+08:00\nCopy to snowflake end time: 2023-07-10T18:10:43+08:00"]
[2023/07/10 18:10:48.915 +08:00] [INFO] [snapshot.go:299] ["Successfully replicated snapshot from TiDB to Snowflake"]
[2023/07/10 18:10:49.573 +08:00] [INFO] [tz.go:34] ["Use the timezone of the TiCDC server machine"] [timezoneName=System] [timezone=Asia/Shanghai]
[2023/07/10 18:10:49.573 +08:00] [INFO] [sink.go:444] ["succeed to parse parameter from sink uri"] [protocol=csv] [txnAtomicity=]
[2023/07/10 18:10:49.573 +08:00] [WARN] [replica_config.go:299] ["Attempting to replicate with old value enabled, but the specified protocol must disable old value. CDC will disable old value and continue."] [protocol=csv]
[2023/07/10 18:10:49.803 +08:00] [INFO] [s3.go:402] ["succeed to get bucket region from s3"] ["bucket region"=us-east-2]
[2023/07/10 18:11:02.903 +08:00] [INFO] [increment.go:360] ["new files found since last round"] [keys="[{"Schema":"test","Table":"customer","TableVersion":442756957495099395,"PartitionNum":-1,"Date":""},{"Schema":"test","Table":"customer","TableVersion":442756957495099395,"PartitionNum":0,"Date":"2023-07-10"},{"Schema":"test","Table":"customer","TableVersion":442756977994760194,"PartitionNum":-1,"Date":""}]"]
[2023/07/10 18:11:05.083 +08:00] [INFO] [connector.go:47] ["Snowflake connection established"]
[2023/07/10 18:11:05.434 +08:00] [INFO] [connector.go:91] ["table columns initialized"] [Columns="[{"ColumnId":1,"ColumnName":"c_id","ColumnType":"INT","ColumnPrecision":"11","ColumnNullable":"false","ColumnIsPk":"true"},{"ColumnId":2,"ColumnName":"c_d_id","ColumnType":"INT","ColumnPrecision":"11","ColumnNullable":"false","ColumnIsPk":"true"},{"ColumnId":3,"ColumnName":"c_w_id","ColumnType":"INT","ColumnPrecision":"11","ColumnNullable":"false","ColumnIsPk":"true"},{"ColumnId":4,"ColumnName":"c_first","ColumnType":"VARCHAR","ColumnPrecision":"16"},{"ColumnId":5,"ColumnName":"c_middle","ColumnType":"CHAR","ColumnPrecision":"2"},{"ColumnId":6,"ColumnName":"c_last","ColumnType":"VARCHAR","ColumnPrecision":"16"},{"ColumnId":7,"ColumnName":"c_street_1","ColumnType":"VARCHAR","ColumnPrecision":"20"},{"ColumnId":8,"ColumnName":"c_street_2","ColumnType":"VARCHAR","ColumnPrecision":"20"},{"ColumnId":9,"ColumnName":"c_city","ColumnType":"VARCHAR","ColumnPrecision":"20"},{"ColumnId":10,"ColumnName":"c_state","ColumnType":"CHAR","ColumnPrecision":"2"},{"ColumnId":11,"ColumnName":"c_zip","ColumnType":"CHAR","ColumnPrecision":"9"},{"ColumnId":12,"ColumnName":"c_phone","ColumnType":"CHAR","ColumnPrecision":"16"},{"ColumnId":13,"ColumnName":"c_since","ColumnType":"DATETIME"},{"ColumnId":14,"ColumnName":"c_credit","ColumnType":"CHAR","ColumnPrecision":"2"},{"ColumnId":15,"ColumnName":"c_credit_lim","ColumnType":"DECIMAL","ColumnPrecision":"12","ColumnScale":"2"},{"ColumnId":16,"ColumnName":"c_discount","ColumnType":"DECIMAL","ColumnPrecision":"4","ColumnScale":"4"},{"ColumnId":17,"ColumnName":"c_balance","ColumnType":"DECIMAL","ColumnPrecision":"12","ColumnScale":"2"},{"ColumnId":18,"ColumnName":"c_ytd_payment","ColumnType":"DECIMAL","ColumnPrecision":"12","ColumnScale":"2"},{"ColumnId":19,"ColumnName":"c_payment_cnt","ColumnType":"INT","ColumnPrecision":"11"},{"ColumnId":20,"ColumnName":"c_delivery_cnt","ColumnType":"INT","ColumnPrecision":"11"},{"ColumnId":21,"ColumnName":"c_data","ColumnType":"VARCHAR","ColumnPrecision":"500"}]"]
[2023/07/10 18:11:10.609 +08:00] [INFO] [connector.go:173] ["Successfully merge file"] [file=test/customer/442756957495099395/2023-07-10/CDC00000000000000000001.csv]
[2023/07/10 18:11:11.302 +08:00] [INFO] [connector.go:117] ["Successfully executed DDL"] [received="ALTER TABLE customer ADD COLUMN c_tmp VARCHAR(100) NOT NULL DEFAULT _UTF8MB4''"] [rewritten="ALTER TABLE customer ADD COLUMN c_tmp VARCHAR(100) NOT NULL DEFAULT '';"]
[2023/07/10 18:11:14.356 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:11:26.896 +08:00] [INFO] [increment.go:360] ["new files found since last round"] [keys="[{"Schema":"test","Table":"customer","TableVersion":442756977994760194,"PartitionNum":0,"Date":"2023-07-10"},{"Schema":"test","Table":"customer","TableVersion":442756986344046602,"PartitionNum":-1,"Date":""},{"Schema":"test","Table":"customer","TableVersion":442756987445051413,"PartitionNum":-1,"Date":""}]"]
[2023/07/10 18:11:30.130 +08:00] [INFO] [connector.go:173] ["Successfully merge file"] [file=test/customer/442756977994760194/2023-07-10/CDC00000000000000000001.csv]
[2023/07/10 18:11:31.082 +08:00] [INFO] [connector.go:117] ["Successfully executed DDL"] [received="ALTER TABLE customer MODIFY COLUMN c_data TEXT, DROP COLUMN c_tmp"] [rewritten="ALTER TABLE customer MODIFY COLUMN c_data TEXT(65535);\nALTER TABLE customer DROP COLUMN c_tmp;"]
[2023/07/10 18:11:32.228 +08:00] [INFO] [connector.go:117] ["Successfully executed DDL"] [received="ALTER TABLE customer RENAME COLUMN c_data TO c_data_t"] [rewritten="ALTER TABLE customer RENAME COLUMN c_data TO c_data_t;"]
[2023/07/10 18:11:38.382 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:11:50.359 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:12:02.360 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:12:14.356 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:12:26.628 +08:00] [INFO] [increment.go:360] ["new files found since last round"] [keys="[{"Schema":"test","Table":"customer","TableVersion":442756987445051413,"PartitionNum":0,"Date":"2023-07-10"},{"Schema":"test","Table":"customer","TableVersion":442756989856776211,"PartitionNum":-1,"Date":""}]"]
[2023/07/10 18:12:29.673 +08:00] [INFO] [connector.go:173] ["Successfully merge file"] [file=test/customer/442756987445051413/2023-07-10/CDC00000000000000000001.csv]
[2023/07/10 18:12:30.282 +08:00] [INFO] [connector.go:117] ["Successfully executed DDL"] [received="ALTER TABLE customer RENAME COLUMN c_data_t TO c_data"] [rewritten="ALTER TABLE customer RENAME COLUMN c_data_t TO c_data;"]
[2023/07/10 18:12:38.357 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:12:50.360 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:13:02.357 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:13:14.365 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:13:26.365 +08:00] [INFO] [increment.go:360] ["new files found since last round"] [keys="[{"Schema":"test","Table":"customer","TableVersion":442756989856776211,"PartitionNum":0,"Date":"2023-07-10"}]"]
[2023/07/10 18:13:29.629 +08:00] [INFO] [connector.go:173] ["Successfully merge file"] [file=test/customer/442756989856776211/2023-07-10/CDC00000000000000000001.csv]
[2023/07/10 18:13:38.356 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:13:50.360 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:14:02.356 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]
[2023/07/10 18:14:14.356 +08:00] [INFO] [increment.go:342] ["no new files found since last round"]

mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> delete from customer where c_id = 1;
Query OK, 100 rows affected (0.37 sec)
mysql> alter table customer add column c_tmp varchar(100) NOT NULL default "";
Query OK, 0 rows affected (1 min 34.72 sec)
mysql> delete from customer where c_id = 2;
Query OK, 100 rows affected (0.58 sec)
mysql> alter table customer modify column c_data text, drop column c_tmp;
Query OK, 0 rows affected (0.34 sec)
mysql> delete from customer where c_id = 3;
Query OK, 100 rows affected (0.37 sec)
mysql> alter table customer rename column c_data to c_data_t;
Query OK, 0 rows affected (0.08 sec)
mysql> delete from customer where c_id = 4;
Query OK, 100 rows affected (0.33 sec)
mysql> alter table customer rename column c_data_t to c_data;
Query OK, 0 rows affected (0.09 sec)
mysql> delete from customer where c_id = 5;
Query OK, 100 rows affected (0.33 sec)
mysql> alter table customer add column c_tmp int(11) NOT NULL default 0;
Query OK, 0 rows affected (0.30 sec)
mysql> delete from customer where c_id = 6;
Query OK, 100 rows affected (0.33 sec)
mysql> alter table customer modify column c_tmp bigint NOT NULL default 0;
Query OK, 0 rows affected (11.28 sec)
mysql> delete from customer where c_id = 7;
Query OK, 100 rows affected (0.44 sec)


Is there a way to update contentViewSize manually?

I use this viewController to display a table whose data is requested after displayed. Is there a way I can update contentViewSize after reload data of table? Thanks.
BTW, This repo is great!

If you set contentViewSize manualy then it will update contentViewSize, you can get reference using
@interface UIViewController (MZFormSheetPresentationViewController)

(nullable MZFormSheetPresentationViewController *)mz_formSheetPresentingPresentationController;
(nullable MZFormSheetPresentationViewController *)mz_formSheetPresentedPresentationController;
@end

You can even use MZFormSheetPresentationContentSizing protocal as in Objective-C example, and then call :
MZFormSheetPresentationController *presentationController = (id)targetViewController.mz_formSheetPresentingPresentationController.presentationController;
[UIView animateWithDuration:[self transitionDuration:transitionContext] delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
[presentationController layoutPresentingViewController];
} completion:nil];
As you see, there is many ways to do this...


RPC Encoding map error.

I posted it on StackOverflow.
Essentially, it comes down to the method signature's required return type being a:  Map<String,Object> doesnt parse as it should and resolved it entirely by setting it to Map<String,String> despite the fact that it was actually (and now successfully) returning a jsonified Map object from the RPC server to the client.
http://stackoverflow.com/questions/36163029/my-rcp-client-is-not-returning-a-deep-copy-of-an-object/36181858#36181858

One year later, I'm having the same problem. RPC does not like Object. It alerts when you try to use Map<dynamic,dynamic> or Map<String,dynamic>, but it doesn't say anything with Map<String,Object>. It kinda gives up on generic Objects, and just ignores them when converting to the "JSON-esque" format.
Example:
@ApiMethod ( method: 'GET', path: 'test' )
MyMessage getTest() {
  MyMessage msg = new MyMessage()
    ..header = new Map<String,int>()
    ..content = new Map<String,String>();

    // populates the message with some stuff like
  msg.header["status"] = 200;
  msg.content["1"] = "Tomato tomato potato potato";

  return msg;
}

class MyMessage {
  Map<String,Object> header;
  Map<String,Object> content;

  MyMessage();
}

But the response is
{
  "header": {
    "status": {}
  },
  "content": {
    "1": {}
  }
}

Is there a recommended way to send generic Objects via RPC, or should I declare every single possible answer to my MyMessage class? Something like:
class MyMessage {
  Map<String,String> mapOfStrings;
  Map<String,int> mapOfIntegers;
  Map<String,MyObject> mapOfMyObjects;
  Map<String,List<MyObject>> mapWithListsOfMyObjects;
  ...

  MyMessage();
}

It really depends about how you and your team which to process content from your servers.  Ultimately, we ended up having our results have a repsonse that contained a map of information.  Success, Message, and Data..  We would then use that as the envelope which encapsulates the data we are sending from the server to the client and processed accordingly.  Our service files will process and handle MyMessage because it would be passed into constructors etc which would attempt to extract information from MyMessage::data.  Since it was Json, we noticed that the content we created would need to be able to process that.  To do so, we would just have toJson and fromJson methods in the consumed classes.

Sadly RPC does not allow dynamic data inside the response.
    MyMessage: data: Properties cannot be of type: 'dynamic'.

But anyway, we just tried storing our data in a String variable (instead of dynamic), by JSON.encoding everything and creating .toJSON() methods like you just told us. It works, but we need to recursively keep JSON.decoding our structures, since decoding only the top-most data structure doesn't work pretty well (and we have Lists inside Maps inside other Lists et cetra).
We'd love if there was a more elegant alternative to these recursive JSON.decodes though.


⚠ Processors has degraded performance

In 4dfda90, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 55 ms

Resolved: Processors performance has improved in 5576ba5.


Update code of conduct to Linux Foundation's

Signed-off-by: Julius Volz<EMAIL_ADDRESS>

@brian-brazil @RichiH
and /cc @caniszczyk FYI, I hope this is ok, as we're halfway a CNCF / LF event.

:+1:


Bump base layer for fix vulnerabilities

Fixes https://github.com/splunk/fluent-plugin-splunk-hec/issues/53

Any reason not to merge this asap?

Thanks @sbkg0002 - for highlighting issue.
@arminc - yes we have a reason. We use this image across a bunch of different components, and this fluent component is used in a few different splunk products. It's a larger change than it looks. We just need to ensure there are no negative effects. it will definitely be included and updated ASAP.

Thanks @dtregonning - good to hear it's on the radar.

Closing as this issue is fixed in the latest release - https://hub.docker.com/repository/docker/splunk/fluentd-hec


[add-resource] New Theme Bootstrap Blog

Hi team!
I've uploaded just now my new theme. I use Boostrap 4 and FontAwesome 5, and it's ready to extend too with SCSS. I tried to accomplish all requirements in your guide, so tell me if anything is wrong to fix it.
There is no demo content in theme to avoid increase weight with images, but I got a demo under my website: bootstrap-blog.ayozehd.com.
I think there are some interesting features for you like some fields in showcase to customize image actions, or a layout system in portfolio (all it's very simple indeed).
Checkout theme repo: ayozehd/grav-theme-bootstrap-blog

@rhukster flag as theme please... Any update?

Sorry been on holiday, and am still without good internet.  Will get to this soon, promise.

actually managed to add this now.. should show up in 30 mins or so.

Thank you so much! Hope you had great holidays ;)


Enriched call .name reverts to procedure symbol defined in explicit interface

If an explicit interface for a subroutine/function is present, the relevant call's .name points to the defined ProcedureSymbol once the subroutine is parsed. If we then call subroutine.enrich_calls, we update call.name to point to the actual subroutine rather than the symbol defined in the interface.
However this update doesn't seem to be permanent. If we ever later access the symbols inside the Interface, then call.routine again reverts to pointing to that symbol rather than the actual subroutine. (demonstrator attached)
I think the fundamental problem here is that we have now introduced two symbols with the same name to a single scope. Given it's such a fundamental issue, I'm at a loss for a proper solution. A quick and dirty fix would be to set scope=None if the symbol already exists when updating call.name in subroutine.enrich_calls.
enrich_calls_bug.txt

That quick fix falls apart as soon as we hit the first rescope_symbols. Hmm....


Update pytorch runtime to fix validate images check

What changes were proposed in this pull request?

Since Python 3.7 runtime image support is removed, this PR updates default pytorch cuda runtime image version to fix the "validate images" check in github actions.
Python 3.10.11 reported ImportError: cannot import name 'appengine' from 'urllib3.contrib'  at current main branch CI jobs, adding appengine-python-standard can fix this, see: https://stackoverflow.com/questions/76175487/sudden-importerror-cannot-import-name-appengine-from-requests-packages-urlli

Validated main issues while running make validate-runtime-images and that they are gone after applying these changes.


Proxy breaks Chrome

When I try to access a website and LightProxy is enabled, I get an NET::ERR_CERT_AUTHORITY_INVALID error that cannot be bypassed until I close LightProxy.

Follow document here: https://lightproxy.org/doc/faq#certificate-error
Windows user not admin to install cert

Thank you for helping me get it working!


zoom and pan funcs, when?

Hello, as I understood currently here is no zooming or panning. Is there in plan to implement? Is iot possible to implement it at all?

If I was you, I would take a look at https://github.com/Joelius300/ChartJSBlazor. This project is maintained at least.

What do you mean by zooming and panning? Are you talking about this chart.js extension or something nativ to chart.js?
We might add support for some plugins later but we have a lot of other stuff to tackle first :)

Closing this because no response was given for two months. Feel free to reopen if necessary.


chore: release 0.139.0

:robot: I have created a release *beep* *boop*
0.139.0
google/cloud-asset 1.2.2
Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-automl 1.1.3
Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-bigquery 1.17.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)

Documentation

add accurate description to job configuration methods (#3291) (50af9a8)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-bigquery-connection 0.2.0
Features

regenerate with proto v3.13.0 (78002e6)

Miscellaneous Chores

add .repo-metadata.json to bigquery libraries (#3293) (5629e92)
update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-bigquerydatatransfer 1.2.0
Features

regenerate with protoc v3.13.0 (#3302) (7a8a478)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-bigquery-reservation 0.2.0
Features

regenerate with protoc v3.13.0 (#3303) (6d37ea3)

Miscellaneous Chores

add .repo-metadata.json to bigquery libraries (#3293) (5629e92)
update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-bigquery-storage 1.0.0
⚠ BREAKING CHANGES

move clients from beta to GA (#3364)

Features

move clients from beta to GA (#3364) (cbefe7f)
regenerate with protoc v3.13.0 (#3304) (15752f6)

Miscellaneous Chores

remove experimental tag (#3400) (9b9ea1d)
update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-bigtable 1.5.0
Features

regenerate with protoc v3.13.0 (#3305) (b2ecb9e)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-billing 1.2.0
Features

regenerate with protoc v3.13.0 (#3306) (b647ed3)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-container 1.2.0
Features

regenerate with protoc v3.13.0 (#3307) (f7b7839)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-core 1.39.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)
pass retryAttempt to all retryFunction calls (#3290) (183e795)

google/cloud-data-catalog 1.0.0
⚠ BREAKING CHANGES

move clients from beta to GA (#3364)

Features

move clients from beta to GA (#3364) (cbefe7f)
regenerate with protoc v3.13.0 (#3308) (54cc3b4)

Miscellaneous Chores

remove experimental tag (#3401) (351c825)
update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-dataproc 1.3.0
Features

regenerate with protoc v3.13.0 (#3309) (7865929)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-datastore 1.12.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)
regenerate with protoc v3.13.0 (#3310) (1d3bb26)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-debugger 1.3.0
Features

regenerate with protoc v3.13.0 (#3311) (fd88b78)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)
deps: update dependency google/cloud-tools to ^0.11.0 (#3363) (8038912)

google/cloud-dialogflow 0.17.0
Features

regenerate with protoc v3.13.0 (#3402) (6dedaff)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-dlp 1.0.0
⚠ BREAKING CHANGES

move clients from beta to GA (#3364)

Features

move clients from beta to GA (#3364) (cbefe7f)
regenerate with protoc v3.13.0 (#3312) (58d37ad)

Documentation

update documentation surrounding parent resource names (#3403) (cdb5743)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-error-reporting 0.18.0
Features

regenerate with protoc v3.13.0 (#3313) (38b4266)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-firestore 1.15.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)
retry CommitRequests that fail with UNAVAILABLE (#3146) (6690d04)

Bug Fixes

preserve empty arrays when using set() with merge enabled (#3344) (5fc5171)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-game-servers 0.1.1
Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-iot 1.3.0
Features

regenerate with protoc v3.13.0 (#3314) (02fe237)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-kms 1.11.0
Features

add client integrity verification fields to the KMS protos (#3292) (f113bc1)
regenerate with protoc v3.13.0 (#3341) (de500b5)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-language 0.24.0
Features

regenerate with protoc v3.13.0 (#3315) (ed3591a)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-logging 1.21.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-memcache 0.3.0
Features

regenerate with protoc v3.13.0 (#3316) (b0189d3)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-monitoring 1.0.2
Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-osconfig 0.1.0
Features

introduce osconfig client (#3339) (3098a34)
regenerate with protoc v3.13.0 (#3342) (b32c320)

google/cloud-oslogin 1.2.0
Features

regenerate with protoc v3.13.0 (#3317) (af1c703)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-pubsub 1.28.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)
regenerate with protoc v3.13.0 (#3318) (806db87)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-recaptcha-enterprise 1.0.0
⚠ BREAKING CHANGES

move clients from beta to GA (#3364)

Features

move clients from beta to GA (#3364) (cbefe7f)
regenerate with protoc v3.13.0 (#3319) (7261ae5)

Miscellaneous Chores

remove experimental tag (#3406) (7ae834d)
update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-recommendations-ai 0.2.1
Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-recommender 1.2.0
Features

regenerate with protoc v3.13.0 (#3320) (dc3b272)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-redis 1.2.0
Features

regenerate with protoc v3.13.0 (#3321) (6b8a740)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-scheduler 1.5.0
Features

regenerate with protoc v3.13.0 (#3322) (9dae370)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-secret-manager 1.0.1
Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-security-center 1.0.0
⚠ BREAKING CHANGES

move clients from beta to GA (#3364)

Features

added field severity to findings (#3297) (d510e10)
move clients from beta to GA (#3364) (cbefe7f)
regenerate with protoc v3.13.0 (#3343) (6664f96)

Miscellaneous Chores

remove experimental tags (#3408) (0a75e2a)
update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-service-directory 0.3.0
Features

regenerate with protoc v3.13.0 (#3323) (a60cb6f)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-spanner 1.31.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)
regenerate with protoc v3.13.0 (#3324) (a434786)

Bug Fixes

spanner: fix expiration time key in CacheSessionPool#maintain() (#3413) (d40f573)
correctly set google-cloud-resource-prefix headers (#3276) (bb8d699)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-speech 1.3.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)
regenerate with protoc v3.13.0 (#3325) (b654710)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-storage 1.23.0
Features

add support for noncurrent and custom time lifecycle rules (#3153) (dd85aad)
add support for setting/detecting a quota project (#3334) (24953fe)
support fflush() and append mode in StreamWrapper (#3108) (58ec8a3)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-talent 0.14.0
Features

regenerate with protoc v3.13.0 (#3326) (09e42c7)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-tasks 1.8.0
Features

regenerate with protoc v3.13.0 (#3327) (a87190f)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-text-to-speech 1.2.0
Features

regenerate with protoc v3.13.0 (#3349) (bf734d2)

Miscellaneous Chores

escape * characters in comments (#3286) (62944c9)
update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-trace 1.3.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)
regenerate with protoc v3.13.0 (#3328) (99d56d6)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-translate 1.9.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)
regenerate with protoc v3.13.0 (#3329) (986b974)

Bug Fixes

add LRO bindings for rest configuration (#3415) (912ce87)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-videointelligence 1.10.0
Features

regenerate with protoc v3.13.0 (#3330) (1ae1f57)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-vision 1.2.0
Features

add support for setting/detecting a quota project (#3334) (24953fe)
regenerate with protoc v3.13.0 (#3331) (fd2a022)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-web-risk 1.0.0
⚠ BREAKING CHANGES

move clients from beta to GA (#3364)

Features

move clients from beta to GA (#3364) (cbefe7f)
regenerate with protoc v3.13.0 (#3332) (8c5ea2e)

Miscellaneous Chores

remove experimental tags (#3409) (283a34b)
update google/cloud-core dependency version (#3417) (ded3dcc)

google/cloud-web-security-scanner 0.6.0
Features

regenerate with protoc v3.13.0 (#3333) (30f699f)

Miscellaneous Chores

update google/cloud-core dependency version (#3417) (ded3dcc)

This PR was generated with Release Please.

Would we be able to bump the core requirement so the quotaProject setting is respected?

Release is at https://github.com/googleapis/google-cloud-php/releases/tag/v0.139.0


Change stopping criteria to get more predictable results from warm starting

Stopping criteria are currently the default ADMM (consensus form) ones:

Note that these stopping criteria a) depend on the change in iterates over time (equation 19) and b) depend on $\rho$ (again equation 19).
This means that warm starting can actually be somewhat ineffective in reducing solve times if e.g. $\rho$ changes between solves (or if some other equivalent phenomenon happens, e.g., scaling is turned on or off). Increasing $\rho$ in the next solve automatically increases the dual residual (19), whereas decreasing $\rho$ in the next solve can cause the x update to be too strong, throwing off (18).
To mitigate this I was thinking of changing the stopping criteria to measuring the deviation from the optimality conditions of the original problem:

And additionally checking these new optimality conditions before doing a single iteration of warm starting. This way warm starting first checks if it already has optimal iterates before potentially messing up the iterates under the influence of a larger or smaller $\rho$.

Investigated this and the discrepancy turned out to be from not warm starting with a truly optimal value. By running the first run longer (stricter stopping criteria), in all cases we were able to obtain solutions that would result in the warm start terminating immediately.


Add num_attachments to topics table

Adding num_attachments will make it easier to check how many attachments a topic has which would alleviate queries when there are no attachments. Also makes it much easier to show that information on the messageindex.
Upgrade.php:

$result = SELECT t.id_topic, COUNT(id_attach) FROM {db_prefix}attachments INNER JOIN {db_prefix}messages m USING(id_msg) INNER JOIN {db_prefix}topics t USING(id_topic) GROUP BY t.id_topic
$update = 'UPDATE topics SET num_attachments = CASE '
while ($row = $result)
    $update .= "WHEN id_topic = $id_topic THEN $count ELSE 0';
query($update);

Copied this from add num_events as they are pretty close to the same thing.

The problem with this kind of columns is all the work needed to keep the numbers in-synch. In this case we'd need to update the number on: create/modify messages, split/merge topics, maintenance (e.g. mass delete of attachments), maybe something else.
I think it needs a bit of work, not just add the column... 2.0?

I definitely not do it for 1.1. 2.0 or another, later, 1.x version.
It does require more work on posting/moderation but it makes reading use less queries and gives more information up-front. The functions would be as simple as $messages->countAttachments($msg_id) or $topics->countAttachments($topic); If you're posting or editing, you already know how many attachments you have and you're already editing the message row, so you just put that column in the update query.


Infinite resource reloading loop with Secret Rooms

MC 1.18.2
Fabric API 0.48.0
Secret Rooms 1.3.1
CITResewn 1.0.0
To reproduce:

Install FAPI, Secret Rooms and CITResewn
Launch the game
Observe an infinite resource reloading loop

Version 0.9.1 of CITResewn doesn't have this issue.
Log: https://gist.github.com/Footage2-Amply-Pounce/adddeb0a0f63465dd510cb6aa0e6a922

Fixed in v1.0.1


Update For Dotty 0.28.0-bin-20200904-1ab71c1-NIGHTLY

Reporting.error is now report.error
TypeOrBounds was removed from dotty in this commit.

That commit changed TypeBounds and NoPrefix from scala.tasty.reflect.Reflection to be subtypes of Type, where before they were not.
This has the consequence that pattern matches which were formerly on TypeOrBounds which care to discriminate on NoPrefix or TypeBounds must check these before Type, e.g.  (t: Type) match {
    case _: NoPrefix => ???
    case _: TypeBounds => ???
    case _: Type => ???
  }

AppliedType.apply in dotty was replaced with an extension method on Type named appliedTo. Calls in Shapeless have been updated to reflect that.
Updated the sbt-dotty plugin version
Updated the sbt version

@isomarcte many thanks for this, but I've actually merged @nicolasstucki's changes from the dotty-staging fork.

@milessabin :+1: I didn't realize @nicolasstucki had already got it.


Added inputTag() function to LogglyLogger instance

@ajbrown PR #61 from develop

Coverage remained the same at 84.663% when pulling 6fe81492c57043e9d1aa4eae6a1bbcb2bd594460 on lekzd:feature/add-inputTag-method-to-instance-develop into a2a63bf402f724a5fd0072f42635dd57888d801f on ajbrown:develop.


Update concepts-network-design-considerations.md

Corrected VMware product names.

@rvandenbedem : Thanks for your contribution! The author(s) have been notified to review your proposed change.


browser.action.onClicked.addListener not implemented?

ERROR  Browser.action.onClicked.addListener not implemented.                                                                                3:37:44 AM
Mock the function yourself using your testing framework, or submit a PR with an in-memory implementation.
Mock the function yourself using your testing framework, or submit a PR with an in-memory implementation.
at Object.addListener (node_modules@webext-core\fake-browser\lib\index.cjs:996:15)
at C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/entrypoints/background.ts:2:41
at evalModule (node_modules\jiti\dist\jiti.js:1:256443)
at jiti (node_modules\jiti\dist\jiti.js:1:254371)
at importEntrypointFile (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:2278:23)
at async getBackgroundEntrypoint (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:1502:27)
at async /C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:1306:18
at async Promise.all (index 0)
at async findEntrypoints (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:1294:23)
at async internalBuild (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:3165:23)
✖ Command failed after 1.075 s                                                                                3:37:44 AM
ERROR  Failed to load entrypoint: entrypoints\background.ts                                                                                3:37:44 AM
at importEntrypointFile (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:2290:13)
at async getBackgroundEntrypoint (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:1502:27)
at async /C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:1306:18
at async Promise.all (index 0)
at async findEntrypoints (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:1294:23)
at async internalBuild (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:3165:23)
at async buildAndOpenBrowser (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:3494:28)
at async Object.start (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:3459:9)
at async /C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:3980:5
at async CAC. (/C:/Users/Admin/CallCenterAgentOrchestrationPlatform/google-extension-research/my-port/example-wxt/node_modules/wxt/dist/cli.js:3911:22)
import { PublicPath, browser } from 'wxt/browser';
browser.action.onClicked.addListener((tab) => {
browser.windows.create({
url: browser.runtime.getURL("popup.html" as PublicPath),
type: "popup",
width: 400,
height: 600,
left: 10,
top: 10
});
});
Please implement, thanks.

Appreciate you!

I want to achieve the following effect: when I click on the plugin icon in the extension toolbar, instead of opening a popup page, it should open a new tab and load sync.html, which I have defined myself. How can I do this? I tried deleting the popup directory, but then the plugin icon was disabled.

I want to achieve the following effect: when I click on the plugin icon in the extension toolbar, instead of opening a popup page, it should open a new tab and load sync.html, which I have defined myself. How can I do this? I tried deleting the popup directory, but then the plugin icon was disabled.

The action key in manifest.json is necessary for this, otherwise the extension will not be able to access the chrome.action API.
This will throw an uncaught Error at the top level of the background, which is why your extension is disabled.
wxt.config.ts solution:
import { defineConfig } from "wxt";

export default defineConfig({
  manifest: {
    action: {},
  },
});

I want to achieve the following effect: when I click on the plugin icon in the extension toolbar, instead of opening a popup page, it should open a new tab and load sync.html, which I have defined myself. How can I do this? I tried deleting the popup directory, but then the plugin icon was disabled.

https://developer.chrome.com/docs/extensions/reference/api/action#manifest
The action key in manifest.json is necessary for this, otherwise the extension will not be able to access the chrome.action API. This will throw an uncaught Error at the top level of the background, which is why your extension is disabled.
wxt.config.ts solution:
import { defineConfig } from "wxt";

export default defineConfig({
  manifest: {
    action: {},
  },
});

thanks a lot.I found this, #612 (comment) so I renamed popup folder to popup-bak, and I modified wxt.config.ts like this:
import { defineConfig } from "wxt";

// See https://wxt.dev/api/config.html
export default defineConfig({
  modules: ["@wxt-dev/module-react"],
  manifest: {
    permissions: ["tabs"],
    action: {},
  },
});

then I modified background.ts like this:
export default defineBackground(() => {
  console.log("Hello background!", { id: browser.runtime.id });
  browser.action.onClicked.addListener(async () => {
    await browser.tabs.create({ url: "/sync.html" });
  });
});

finally, it worked!!!

and I found when I delete the popup folder, it still work.so just add "action: {}" is ok.

https://wxt.dev/guide/key-concepts/manifest.html#action-without-popup


Implementation of SRL in C++ (and C)

Hi all,
I get interested in SRL and I am trying to build a C++ library for "compiling" SRL into regex string, and the library is about to be finished.
And I think no one else has plan to do so (yet?). So if you think it's a good idea, maybe you could create a repo SimpleRegex/SRL-CPP and grant me the privilege to edit it so that I could directly work on it.
Thank you!

Hi,
that's awesome! You're now invited to join the SRL-CPP repository. Travis CI is already enabled.
If you like, you can join our Slack team as well. Just send me an email with your email address and I'll add you.


Preserve and restore the last typed text in command palette

VSCode Version: 1.7.2
OS Version: OSX El-Capitan 10.11.6

Steps to Reproduce:
Please make vscode save last session typing when open cmd+shift+p command pallete,
the big issue is I must type again and again the same text when using command pallete in vscode

@rohmanhm You want the text that you typed the last time you used the command palette to be restored when you reopen the command palette?

Yes, correct. It much saves time rather than retype the same text.

Both restoring the text when you haven't used other command from the palette, as well as remembering your selected result when you type a command to filter them out.
Example
Hitting cmd + shift + p and typing > install will show me multiple available commands, but I most often use the npm install one. It would be great if VSCode would keep a rank of my selection so that it could immediately highlight the one I use the most.

Yes, for the current issue and yes for the rank so the palette smartly selects the most used command based on what is typed. I think Sublime does that and it is so fast and productive.

Is it really to select the most used command? I just tried in Sublime and it seems to restore the last used command. I think that would make more sense to me.

Let's put aside Sublime text for now and please let me summarize the expectations.
Here is the logic
var option = { "commands" : "last (OR most used)", "rank":  true }

If user call the panel then
  put the 5 option.commands at the top of the list
  AND select the first one so user just has to press ENTER to run it.

When user start typing in the panel then
  if several commands match the input pattern
    if option.rank is TRUE
      select the most relevant according to rank (the most used one)
    else
      select the most relevant according to MRU time

I think this is the most efficient and productive and customized way to go.
I hope it is clearer despite the own logic language used 😅

If we were to simply keep a list of most recently used commands and show them on top of all commands whenever you open the command palette, do we still need to restore the last typed input? I think the main usecase is to be able to quickly re-trigger the last command executed and if the most recently used command was always selected to the top, wouldn't that solve it too?

That's a start for a next release but it doesn't cover all the features I mentioned. But it may be enough most of the time. Let's do this as a first step and see if we need more later. IMHO

@freMea @bjerkins can you give an example of something that my suggestion does not cover?

@bpasero
If your suggestion is:

Put a list of most recently used commands and show them on top of all commands whenever you open the command palette.

Then it fulfills the use case when user only needs or prefers to access the most recent commands. What if the case when one prefers to access the most used commands of all time or of the session time instead? It may be more relevant in some cases. A command to toggle between those 2 flavors would be great.
This list at the top should also be triggered as priority commands when user start typing so if there are several matches the panel will select the command that is in this list first. I'm afraid I could not explain more than I already said before.

@freMea I think having a list of most used commands across all times is less useful compared to showing the commands in MRU order. Let's start with that.

Added via "workbench.commandPalette.preserveInput": true


Auto-Update for Edge pulls a lot of data

Our IT department noticed, that there is a lot of data pulled from servers like assets.msn.com, edge.microsoft.com, img-s-msn-com.akamaized.... and others. This seems to be the update mechanism of Edge. More than 200GB of data was fetched from these servers just for a single day of tests (about 3-4 test runs with each about 4.500 Tests). I can reproduce this by watching the traffic and manually starting an instance of Edge using seleniod by creating the session manually.
Currently we use version 89.0 and we know that there are updates available. But we want to stay on a defined version for now.
Is there a possibility to turn that update mechanism off?

@benzman81 are we speaking about Linux images: browsers\edge:XXX?

oh, sorry, yes.

also server msedge.b.tlu.dl.delivery.mp.microsoft.com is called.


Feature/one way backups

Feature: One Way Backups
This PR introduces a new "One Way Backups" feature to the Obsidian Local Backup plugin, providing users with enhanced flexibility in managing their vault backups.
Key Changes:

Added new settings for one-way backups in main.ts:

Second backup path option
Custom backup history retention for one-way backups
The thing that makes the backups "one way" is of course not implemented in the this plugins code, but in the second directory in which you will save the backups
The reason for adding a separate directory instead of implementing the feature on the existing single path is due to versatility

Updated the backup logic to support one-way backups alongside regular backups
Ensured all existing backup settings are applied to one-way backups
Modified the settings UI to include options for one-way backups

Benefits:

Users can now maintain two separate backup locations with different retention policies (e.g cold storage/archive and regular, with the cold the the user can now change the sync to one way in his cloud provider software settings like in pcloud)
Allows for more granular control over backup storage and management
Maintains consistency with existing backup functionality for ease of use

Implementation Details:

The one-way backup feature mirrors the functionality of regular backups
All settings, except for the backup path and retention period, are shared between regular and one-way backups
The plugin now checks for one-way backup settings and executes additional backups when enabled

Testing:

Verified that one-way backups are created in the specified secondary location
Confirmed that custom retention policies are correctly applied to one-way backups
Ensured that enabling/disabling one-way backups does not affect regular backup functionality

Notes for Reviewers:

Please pay special attention to the integration of one-way backup logic with existing backup processes
Verify that the new settings UI is intuitive and consistent with the plugin's design

Some of these notes were written with chatgpt cuz im lazy but its pretty accurate description

Thanks for your contribution, and sorry for late replying!


Doc/add info about switching doc releases

Change to new support email address and make minor edits.

@JackB-Ansys Would someone be able to see why two checks remain queued? I'd like to have someone review and approve this simple PR so I can merge it. Thanks.


update kong image

I am updating the arm64_env file to update the docker kong image to the latest arm64 based version. This is an attempt to fix the exec format error due to the previous image being based on 32bit arm. The build of the image can be found here: https://jenkins.edgexfoundry.org/view/CI-Build-Images/job/ci-build-images-kong-merge-pipeline/64/
Signed-off-by: Ernesto Ojeda<EMAIL_ADDRESS>

#185 Link to the issue

@cloudxxx8 @cherrycl please review this one at your earliest convenience.  I don't have permissions to add reviewers on this repo.

I setup a test job on the sandbox for this PR and it is still failing with the exec format error: https://jenkins.edgexfoundry.org/sandbox/job/blackbox-testing-security-ubuntu18.04-docker-arm64-4c-2g-master/6/consoleFull. I am going to debug this issue a bit more.

Here is the passing job on the sandbox. It was built against this PR:
https://jenkins.edgexfoundry.org/sandbox/job/blackbox-testing-security-ubuntu18.04-docker-arm64-4c-2g-master/18/console

curious why EdgeX couldn't use kong:ubuntu? Why duplicate building Kong for arm64 from source?

curious why EdgeX couldn't use kong:ubuntu? Why duplicate building Kong for arm64 from source?

I am not sure how to answer this except maybe that at the time that this repository was setup the arm64 image did not exist and someone pointed us to this Dockerfile by someone in the community: https://github.com/svenwal/kong-arm/blob/master/Dockerfile.
Anyway, I switched everything over to the kong:1.3.0-ubuntu image and it all still seems to work.


Completions stop working after short time. NVIM/Coc/Windows

When using Neovim with Coc, whenever I start/restart the clangd server, completions will work for a short period and then stop working. The verbose logs show the server returning no completion results after a short time. I have a tried it with a rather small test project that just builds a gtest executable to test a linked-list reverse method. If this isn't minimal enough, I can try out with a hello world with no external dependencies.
test.zip
I looked to ensure that diagnostics weren't reporting any errors that would interfere with compilation.
I've tried a number of different configurations.
clangd 9.0.0 and 11.0.0 both with and without background indexing.
I've tried both VS2010 and VS2019 toolchains with cmake to generate the compile_commands.json.
Though completions aren't working, the clangd server otherwise appears operational and generates responses for finding references and diagnostics. Certainly not crashed and doesn't appear frozen.
I've not tried any other frontends (editors/plugins), but unless the logs indicate that requests are malformed, I do not see reason to suspect my editor at this point. I looked at requests and the ones that worked appeared same/similar to those that did not.
My environment is probably a bit odd. This is a company machine with several different toolchains installed and various bits of antivirus and run-time threat detection. Suppose either of those things could cause problem; the antivirus stuff will generally quarantine or block traffic if it's causing problems and I didn't see any evidence of that.
Logs
clangd.log
System information
clangd version 11.0.0 (https://github.com/llvm/llvm-project ce33926342c0be7edd260bd8cf4ae8e9275cd634)
vim version: NVIM v0.4.3
node version: v13.7.0
coc.nvim version: 0.0.76-2c7c3417b3
OS Name:                   Microsoft Windows 10 Enterprise
OS Version:                10.0.18362 N/A Build 18362

This is probably a duplicate of #302. I tried the suggestion in there to put flag -fno-delayed-template-parsing  in compile_flags.txt and completions remain working for quite a bit longer. I will need to test a bit more.
Looks like I can probably add to global cmake flags, e.g. via add_compile_options. msvc will just emit a warning about unknown command line option. Perhaps there's an easy to supplement the flags cland receives from compile_commands.json, so I do not need to pass option to my build?

I ended up adding a cmake target which transforms the compilation database as it copies it from build directory to root of source tree.
Otherwise, if you add it as compile flag to all files, cl will spit output command line warnings (unknown option) for every file you compile.
Perhaps there's an easier way.

Still having issues even though I added the -fno-delayed-template-parsing. After some time, completions just stop working. And so do finding references to certain symbols.
I also added -Wno-writable-strings and -D__STDC_LIMIT_MACROS.
clangd.log

Still having issues even though I added the -fno-delayed-template-parsing. After some time, completions just stop working. And so does finding references to certain symbols.
I also added -Wno-writable-strings and -D__STDC_LIMIT_MACROS. The writable strings because the code base I'm on has lots of violations of that warning. The limit macros because otherwise undefined variable errors occur.
Not sure that it matters, but my build toolchain is VS2010 0x86, and I can see clang appears to be using VS2019 0x86_64.
The first completion failure is about 2 minutes in, line 163, and things just keep failing after that. I removed a large portion of the initial log though tried to keep at least one good completion result prior to failure.
clangd.log

Still having issues even though I added the -fno-delayed-template-parsing. After some time, completions just stop working. And so does finding references to certain symbols.
I also added -Wno-writable-strings and -D__STDC_LIMIT_MACROS. The writable strings because the code base I'm on has lots of violations of that warning. The limit macros because otherwise undefined variable errors occur.
Not sure that it matters, but my build toolchain is VS2010 0x86, and I can see clang appears to be using VS2019 0x86_64.
The first completion failure is about 2 minutes in, line 163, and things just keep failing after that. I removed a large portion of the initial log though tried to keep at least one good completion result prior to failure.
clangd (1).log

If you restart clangd in the same state (reload window), does it immeditately get back into the same state of code completion results being empty?
Trying to understand if there's actually something stateful here in clangd or the state is in your file.
It'd be nice if it were possible to reduce down to a minimal chunk of code exhibiting the behavior.

I did a buffer delete, then open, which I think does what you ask, re-triggers the didOpen event on the language server, but otherwise doesn't restart the server. And it does get me back to the same behavior. Completions work for a short while, until they don't.
To clarify, I have switched over from my minimal 'test' project to real project code. There may be a scaling issue here in which case minimization will make it go away, but I need to do more investigation there.
I noticed that I'm getting a lot of results from my index. I passed in --limit-results=0 and now things take noticeably longer, but I am getting results. These are my flags.
    "clangd.arguments":["--log=verbose", "--limit-results=0", "--background-index", "-cross-file-rename"]

Curious if somehow, with results being limited, are the semantic completions being swamped by index results? Perhaps semantic completion takes a longer, thus after some timeout, they get abandoned? Attaching log of one completion event. Completions are taking 300/400 ms with this setting. There are also alot of errors regarding "Failed to generate include insertion edits".
clangd.log

I have done a little bit more investigation and I found a fairly repeatable sequence of events. And that is whenever I save a buffer, which triggers this, my completions don't work anymore.
I[00:02:43.685] <-- textDocument/didSave
I[00:02:43.685] unhandled notification textDocument/didSave

Getting completions to work again is simple as closing/opening the buffer again. After that, completions will work as I continue to edit buffer, but then as soon as I save, then completions stop working.
I also compared this to vscode with clangd configured same way, and although I get the same unhandled notification, vscode is quite a bit more resilient. To get similar completions failure with vscode, I found that I had to modify the source outside of vscode, causing buffer/file contents to be misaligned. Not sure if that's quite the same problem. But like, nvim, if I close/open buffer, then completions will start working again.
See a snippet of the general order of events. Point out that I also see quite a few of these "failed to generate include insertion edits". Also file version seems to jump from 17 to 19 surrounding the didSave event.
I[00:38:17.288] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.18362.0/um/winsvc.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.18362.0/um/winsvc.h') into ###########: Header not on include path
I[00:38:17.288] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.18362.0/um/mciapi.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.18362.0/um/mciapi.h') into ###########: Header not on include path
I[00:38:17.288] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.18362.0/um/mmiscapi.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.18362.0/um/mmiscapi.h') into ###########: Header not on include path
I[00:38:17.288] Failed to generate include insertion edits for adding header (FileURI='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.18362.0/um/winnls.h', IncludeHeader='file:///C:/Program%20Files%20%28x86%29/Windows%20Kits/10/Include/10.0.18362.0/um/winnls.h') into ###########: Header not on include path
I[00:38:17.293] Code complete: 1 results from Sema, 8 from Index, 0 matched, 0 from identifiers, 9 returned.
I[00:38:17.293] --> reply:textDocument/completion(15) 99 ms
I[00:38:17.496] --> textDocument/publishDiagnostics
I[00:38:17.497] --> textDocument/clangd.fileStatus
I[00:38:18.146] <-- textDocument/didChange
I[00:38:18.148] --> textDocument/clangd.fileStatus
I[00:38:18.208] <-- textDocument/completion(16)
I[00:38:18.255] --> textDocument/clangd.fileStatus
I[00:38:18.256] --> textDocument/clangd.fileStatus
I[00:38:18.256] ASTWorker building file ####file#### version 15 with command
###build###
I[00:38:18.297] Code complete: sema context DotMemberAccess, query scopes [] (AnyScope=true), expected type <none>
I[00:38:18.301] Code complete: 24 results from Sema, 0 from Index, 0 matched, 0 from identifiers, 24 returned.
I[00:38:18.302] --> reply:textDocument/completion(16) 94 ms
I[00:38:18.473] --> textDocument/publishDiagnostics
I[00:38:18.473] --> textDocument/clangd.fileStatus
I[00:38:19.308] <-- textDocument/didChange
I[00:38:19.311] --> textDocument/clangd.fileStatus
I[00:38:19.359] <-- $/cancelRequest
I[00:38:19.359] <-- textDocument/signatureHelp(17)
I[00:38:19.360] --> textDocument/clangd.fileStatus
I[00:38:19.360] ASTWorker building file ####file#### version 16 with command
####build####
I[00:38:19.574] --> textDocument/publishDiagnostics
I[00:38:19.574] --> textDocument/clangd.fileStatus
I[00:38:19.655] SigHelp: requested docs for 1 symbols from the index, got 0 symbols with non-empty docs in the response
I[00:38:19.729] --> reply:textDocument/signatureHelp(17) 370 ms
I[00:38:19.745] <-- textDocument/didChange
I[00:38:19.747] --> textDocument/clangd.fileStatus
I[00:38:19.854] --> textDocument/clangd.fileStatus
I[00:38:19.854] ASTWorker building file ####file#### version 17 with command
####build####
I[00:38:20.071] --> textDocument/publishDiagnostics
I[00:38:20.071] --> textDocument/clangd.fileStatus
I[00:38:21.259] <-- textDocument/didSave
I[00:38:21.259] unhandled notification textDocument/didSave
I[00:38:21.946] <-- textDocument/didChange
I[00:38:21.954] --> textDocument/clangd.fileStatus
I[00:38:21.998] <-- textDocument/didChange
I[00:38:22.000] --> textDocument/clangd.fileStatus
I[00:38:22.060] <-- textDocument/completion(18)
I[00:38:22.107] --> textDocument/clangd.fileStatus
I[00:38:22.107] ASTWorker building file ####file#### version 19 with command
####build####
I[00:38:22.159] Code complete: 0 results from Sema, 0 from Index, 0 matched, 0 from identifiers, 0 returned.
I[00:38:22.159] --> reply:textDocument/completion(18) 99 ms
I[00:38:22.334] --> textDocument/publishDiagnostics
I[00:38:22.334] --> textDocument/clangd.fileStatus
I[00:38:23.191] <-- textDocument/didChange
I[00:38:23.194] --> textDocument/clangd.fileStatus
I[00:38:23.251] <-- textDocument/completion(19)
I[00:38:23.302] --> textDocument/clangd.fileStatus
I[00:38:23.302] ASTWorker building file ####file#### version 20 with command
####build####
I[00:38:23.345] Code complete: 0 results from Sema, 0 from Index, 0 matched, 0 from identifiers, 0 returned.
I[00:38:23.345] --> reply:textDocument/completion(19) 93 ms
I[00:38:23.516] --> textDocument/publishDiagnostics
I[00:38:23.517] --> textDocument/clangd.fileStatus
I[00:38:23.849] <-- textDocument/didChange
I[00:38:23.852] --> textDocument/clangd.fileStatus
I[00:38:23.910] <-- textDocument/completion(20)
I[00:38:23.959] --> textDocument/clangd.fileStatus
I[00:38:23.959] ASTWorker building file ####file#### version 21 with command
####build####
I[00:38:24.002] Code complete: 0 results from Sema, 0 from Index, 0 matched, 0 from identifiers, 0 returned.
I[00:38:24.003] --> reply:textDocument/completion(20) 92 ms
I[00:38:24.186] --> textDocument/publishDiagnostics
I[00:38:24.186] --> textDocument/clangd.fileStatus
I[00:38:24.459] <-- textDocument/didChange
I[00:38:24.462] --> textDocument/clangd.fileStatus
I[00:38:24.509] <-- $/cancelRequest
I[00:38:24.509] <-- textDocument/signatureHelp(21)
I[00:38:24.510] --> textDocument/clangd.fileStatus
I[00:38:24.510] ASTWorker building file ####file#### version 22 with command

After some more investigation, I have issues with this minimal example.
Upon first opening file, I can get completions. As soon as I save the file, there's apparently some error with handling didSave event, and then completions stop working. If I reload buffer, completions start working again.
#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[])
{
    vector<int> numbers = {1, 2, 3, 4};
    copy(numbers.begin(), numbers.end(), ostream_iterator<int>(cout));

    return 0;
}

Using the following with -fno-delayed-template-parsing inserted for compilation commands
[
{
  "directory": "C:/git/helloworld/build",
  "command": "C:\\PROGRA~2\\MIB055~1\\2019\\COMMUN~1\\VC\\Tools\\MSVC\\1425~1.286\\bin\\Hostx86\\x86\\cl.exe  /nologo /TP -fno-delayed-template-parsing  /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -MDd   -std:c++17 /FoCMakeFiles\\helloworld.dir\\main.cpp.obj /FdTARGET_COMPILE_PDB /FS -c C:\\git\\helloworld\\main.cpp",
  "file": "C:/git/helloworld/main.cpp"
}
]

clangd.log
I also did some investigation with vscode/clangd, and could see the same notification error, but in general, I had to work a little harder to get the no completions case in vscode, e.g. by modifying buffer outside of vscode.

Sorry about the silence here, didn't have great ideas.
This is almost certainly the same as #322 which @aeubanks figured out.
(It's a really unusual bug, some code deep inside clang was just... writing to stdout, in the middle of our LSP stream, breaking it)
Does your compile_commands.json include /showIncludes anywhere? Doesn't need to be for the file you're editing, background indexing could trigger this I think.

/showIncludes is not present in this case. The compile_commands.json in the previous comment is the entire compilation database, and the build options are visible in the verbose log.
I also turned off --background-index and -cross-file-rename, and still I see completions halt after triggering a didSave, specifically the following.
V[01:41:05.713] <<< {"jsonrpc":"2.0","method":"textDocument/didSave","params":{"textDocument":{"uri":"file:///c%3A/git/helloworld/main.cpp","version":22}}}

I[01:41:05.713] <-- textDocument/didSave
I[01:41:05.713] unhandled notification textDocument/didSave

I tried some manual driving of the server, but wasn't obvious to me how to get it to mimic exactly my editing session easily due to coordination with buffer state. I tried a completion request and it looked successful.
manual.log
You may notice that I removed -fno-delayed-template-parsing in the log. It doesn't seem to make a difference one way or the other here.

Thanks for digging into this! OK, scratch that theory then, sorry I was confued.
didSave shouldn't be causing the problems per se - this version of clangd just ignores that event (trunk doesn't, but that shouldn't make a difference).
Logs show that in the early queries (1,2,3,5,6,7) that work, we're getting a completion callback from the parser (Code complete: sema context Statement, ...)  and in the later ones we get nothing (9,10,13,14,15,18 in verbose-clangd.log).
This usually indicates the parser didn't hit the code completion point at all, which is consistent with fdelayed-template-parsing but apparently has other causes (your logs indicate that mode's not active)...
I haven't managed to reproduce this (I don't have access to windows+MSVC that's likely required).
One thing that's useful to poke at this further (in the vein of your manual driving of the server) is you can set the -input-mirror-file=<path> flag to clangd, which will capture the editor->clangd traffic into a file. That can then be piped into clangd to try to reproduce...

For the manual drive, the completions were still working by time I got to end of input. So maybe some type of timing thing.
I noticed that my client is issuing a completion request immediately after a didChange event, which I suppose is expected. The completion response appears to be returned before the rebuild triggered by didChange finishes (both success and fail case), which would seem like the completion results would always be working with old state or that there is some type of early bail out during failure.
Working
I[12:27:46.584] <-- textDocument/didChange
I[12:27:46.585] --> textDocument/clangd.fileStatus
V[12:27:46.586] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"file is queued","uri":"file:///c:/git/helloworld/main.cpp"}}

I[12:27:46.635] --> textDocument/clangd.fileStatus
V[12:27:46.635] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"file is queued","uri":"file:///c:/git/helloworld/main.cpp"}}

I[12:27:46.640] ASTWorker building file c:\git\helloworld\main.cpp version 14 with command
[C:/git/helloworld/build]
C:\PROGRA~2\MIB055~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\cl.exe --driver-mode=cl /nologo /TP /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -std:c++17 /FoCMakeFiles\helloworld.dir\main.cpp.obj /FdTARGET_COMPILE_PDB /FS -c C:\git\helloworld\main.cpp -fsyntax-only -resource-dir=C:\tools\clangd\clangd_snapshot_20200412\lib\clang\11.0.0
V[12:27:46.643] <<< {"id":11,"jsonrpc":"2.0","method":"textDocument/completion","params":{"context":{"triggerCharacter":".","triggerKind":2},"position":{"character":17,"line":11},"textDocument":{"uri":"file:///c%3A/git/helloworld/main.cpp"}}}

I[12:27:46.643] <-- textDocument/completion(11)
V[12:27:46.656] Driver produced command: cc1 -cc1 -triple x86_64-pc-windows-msvc19.25.28612 -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name main.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=none -relaxed-aliasing -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -mllvm -x86-asm-syntax=intel -D_MT -flto-visibility-public-std --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2 -fcxx-exceptions -fexceptions -fexternc-nounwind -fms-volatile -fdiagnostics-format msvc -gcodeview -debug-info-kind=limited -resource-dir C:\tools\clangd\clangd_snapshot_20200412\lib\clang\11.0.0 -D WIN32 -D _WINDOWS -internal-isystem C:\tools\clangd\clangd_snapshot_20200412\lib\clang\11.0.0\include -internal-isystem C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include -internal-isystem C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\atlmfc\include -internal-isystem C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt -internal-isystem C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared -internal-isystem C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um -internal-isystem C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt -O0 -fdeprecated-macro -fdebug-compilation-dir C:/git/helloworld/build -ferror-limit 19 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.25.28612 -std=c++17 -fdelayed-template-parsing -fno-inline -faddrsig -x c++ C:\git\helloworld\main.cpp
I[12:27:46.656] --> textDocument/clangd.fileStatus
V[12:27:46.656] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes,running Update (14)","uri":"file:///c:/git/helloworld/main.cpp"}}

I[12:27:46.673] Code complete: sema context DotMemberAccess, query scopes [] (AnyScope=true), expected type <none>
I[12:27:46.675] Code complete: 32 results from Sema, 0 from Index, 0 matched, 0 from identifiers, 32 returned.
I[12:27:46.676] --> reply:textDocument/completion(11) 33 ms

NotWorking
I[12:27:58.467] <-- textDocument/didSave
I[12:27:58.467] unhandled notification textDocument/didSave
V[12:28:00.659] <<< {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":0,"line":11},"start":{"character":0,"line":11}},"rangeLength":0,"text":"    c\n"}],"textDocument":{"uri":"file:///c%3A/git/helloworld/main.cpp","version":27}}}

I[12:28:00.659] <-- textDocument/didChange
I[12:28:00.661] --> textDocument/clangd.fileStatus
V[12:28:00.661] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"file is queued","uri":"file:///c:/git/helloworld/main.cpp"}}

I[12:28:00.712] ASTWorker building file c:\git\helloworld\main.cpp version 27 with command
[C:/git/helloworld/build]
C:\PROGRA~2\MIB055~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\Hostx86\x86\cl.exe --driver-mode=cl /nologo /TP /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -std:c++17 /FoCMakeFiles\helloworld.dir\main.cpp.obj /FdTARGET_COMPILE_PDB /FS -c C:\git\helloworld\main.cpp -fsyntax-only -resource-dir=C:\tools\clangd\clangd_snapshot_20200412\lib\clang\11.0.0
V[12:28:00.717] <<< {"id":19,"jsonrpc":"2.0","method":"textDocument/completion","params":{"context":{"triggerKind":1},"position":{"character":5,"line":11},"textDocument":{"uri":"file:///c%3A/git/helloworld/main.cpp"}}}

I[12:28:00.717] <-- textDocument/completion(19)
V[12:28:00.725] Driver produced command: cc1 -cc1 -triple x86_64-pc-windows-msvc19.25.28612 -fsyntax-only -disable-free -disable-llvm-verifier -discard-value-names -main-file-name main.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=none -relaxed-aliasing -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -mllvm -x86-asm-syntax=intel -D_MT -flto-visibility-public-std --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2 -fcxx-exceptions -fexceptions -fexternc-nounwind -fms-volatile -fdiagnostics-format msvc -gcodeview -debug-info-kind=limited -resource-dir C:\tools\clangd\clangd_snapshot_20200412\lib\clang\11.0.0 -D WIN32 -D _WINDOWS -internal-isystem C:\tools\clangd\clangd_snapshot_20200412\lib\clang\11.0.0\include -internal-isystem C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include -internal-isystem C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\atlmfc\include -internal-isystem C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt -internal-isystem C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared -internal-isystem C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um -internal-isystem C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt -O0 -fdeprecated-macro -fdebug-compilation-dir C:/git/helloworld/build -ferror-limit 19 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.25.28612 -std=c++17 -fdelayed-template-parsing -fno-inline -faddrsig -x c++ C:\git\helloworld\main.cpp
I[12:28:00.725] --> textDocument/clangd.fileStatus
V[12:28:00.725] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes,running Update (27)","uri":"file:///c:/git/helloworld/main.cpp"}}

I[12:28:00.742] Code complete: 0 results from Sema, 0 from Index, 0 matched, 0 from identifiers, 0 returned.
I[12:28:00.742] --> reply:textDocument/completion(19) 24 ms

I have attached the input log, my manual driving of those commands, and the clangd log that generated the input log.
input.log
manual.log
clangd.log

I was able to reproduce this with a Win10 VM as well using a similar config. My tools are at different versions, just grabbed latest for most things via choco. Used llvm 10.0.0 instead of trunk.

Confirming that I'm getting this too -- on Windows with LLVM 10.0.0. @grifcj I was able to work around this for now with autocmd FileType c,cpp,objc,objcpp autocmd BufWritePost <buffer> silent CocRestart in my Vim config (I'm using 'coc.nvim'). Basically I make it restart the lang server whenever I save. Obviously not a great solution but I just wanted to keep working and this gets me through for now. 😅

Actually, using the following seems to be more performant (simply does the client restart part rather than a full restart):
autocmd FileType c,cpp,objc,objcpp autocmd BufWritePost <buffer> silent call coc#client#restart('coc')

That's a tremendous idea. Thank you. Played around with it, ended up using a timer to trigger reload a short timer after. Seemed to work the fastest for me.
function! ReloadBuffer(timerId)
    edit! %
endfunction

augroup coc
    autocmd!
    autocmd BufWritePost *.c,*.cpp call timer_start(100, 'ReloadBuffer')
augroup END

Nice! Yeah I wanted to do something asynchronous too but ended up not digging into timer stuff yet. I'll switch to your solution! :)

I ended up sticking with silent call coc#client#restart('coc') bc. in my quick experiments that seemed to perform better 🤔 -- just tested by editing, saving, then immediately pressing and holding 'k' to see if my cursor would keep going up smoothly. With edit! % there were hiccups, while with just the coc client restart it was smooth. So my full code being:
function! MyReloadCoc(timerId)
  silent call coc#client#restart('coc')
endfunction
autocmd FileType c,cpp,objc,objcpp autocmd BufWritePost <buffer> call timer_start(40, 'MyReloadCoc')

For some reason coc#client#restart('coc') seems to spin up a lot of activity for me, laptop fans turn on, tries to take flight, and completions stop for a while. Maybe it's because I have background index on or lots of files open. Your right about the side effects of edit though. Can mess with cursor position and I'm guessing other things. Glad to have a more automated workaround now though in lieu of a root cause.

Hey everyone, we've done a couple of things around windows experience. Has the situation around this changed for you? (you need to use a clangd build from source, or a weekly build from https://github.com/clangd/clangd/releases.)

@grifcj Maybe it's because I have background index on or lots of files open.

likely the latter, as the former persists state onto disk, hence on restart it should just do a bunch of IO rather than huge cpu consumption. as for open files though, clangd will try to build an initial version of diagnostics for each one of them (and then cache that state, until you modify the file)

I tested the 6/28/2020 snapshot and unfortunately found no change in behavior. I tested against both some project code and the minimal example posted earlier.
https://github.com/clangd/clangd/issues/320#issuecomment-613902459


[feature wip](multi catalog)Support iceberg schema evolution.

Proposed changes
Issue Number: close #xxx
Problem summary
Support iceberg schema evolution for parquet file format.
Iceberg use unique id for each column to support schema evolution. To support this feature in Doris, FE side need to get the current column id for each column and send the ids to be side.
Be read column id from parquet key_value_metadata, set the changed column name in Block to match the name in parquet file before reading data. And set the name back after reading data.
Checklist(Required)

Does it affect the original behavior:

[ ] Yes
[ ] No
[ ] I don't know

Has unit tests been added:

[ ] Yes
[ ] No
[ ] No Need

Has document been added or modified:

[ ] Yes
[ ] No
[ ] No Need

Does it need to update dependencies:

[ ] Yes
[ ] No

Are there any changes that cannot be rolled back:

[ ] Yes (If Yes, please explain WHY)
[ ] No

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 36.56 seconds
load time: 493 seconds
storage size:<PHONE_NUMBER>8 Bytes
https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/tmp/20230113025920_clickbench_pr_79280.html