FlinkKafkaProducer Semantic.EXACTLY_ONCE issue

Describe the bug
FlinkKafkaProducer encounter issue with FlinkKafkaProducer.Semantic.EXACTLY_ONCE.
To Reproduce
Steps to reproduce the behavior:

In apache-pulsar/conf/broker.conf, set transactionCoordinatorEnabled=true
Restart the broker
Added FlinkKafkaProducer.Semantic.EXACTLY_ONCE.

Encountered error: Timeout expired after 60000milliseconds while awaiting InitProducerId

No such issue with FlinkKafkaProducer.Semantic.AT_LEAST_ONCE

Desktop
ubuntu 20, pulsar 2.10.0, kop 2.10, flink 1.12

What's your KoP version? This config has been renamed with kafkaTransactionCoordinatorEnabled in #939.

Hi, good day.
My KoP version is <IP_ADDRESS>.
In broker.conf, kafkaTransactionCoordinatorEnabled = true and brokerDeduplicationEnabled = true.

It looks like the InitProducerId request was stuck. To verify whether it's related to Flink implementation, could you run the following example Java application?
        final Properties props = newKafkaProducerProperties();
        props.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"/* Replace with your own Kafka URL */);
        props.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        props.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        props.put(ProducerConfig.TRANSACTION_TIMEOUT_CONFIG, "1");
        props.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true");
        props.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "prod-1");

        final KafkaProducer<String, String> producer = new KafkaProducer<>(props);
        producer.initTransactions(); // it sends the InitProducerId request
        producer.close();

Hi, thanks for the reply. Sadly, I haven't have the chance to try out the example you have given. I will be sure to give it a try when I have the time.
But I did managed to get EXACTLY_ONCE to work using a Kafka standalone server(kafka_2.13-2.7.0).
All my codes are the same as when I am using KoP.

Hi, good day.
Sorry for my slow reply.
I tried running the codes provided, and this is the error I encountered:

I am not sure if this is related, but I also saw such error in my broker log:

The LinuxbrokerHostUsageImpl is a known bug that has already been fixed in latest release, see https://github.com/apache/pulsar/pull/14648 for more details, you can configure loadBalancerOverrideBrokerNicSpeedGbps with an arbitrary value as a workaround.
Could you filter the logs that include "io.streamnative.pulsar.handlers.kop.coordinator.transaction"?

BTW, I found there is something wrong with the transaction support. I'll open an new issue for it.

I have checked, and there is no "io.streamnative.pulsar.handlers.kop.coordinator.transaction" in my logs during the time that I ran the codes.

Hi, good day.
I have implemented KoP v<IP_ADDRESS>, and I no longer encounter the previous issue. Thanks again for the fix.
But later on, I had encountered a different error. Here is the error logs:
2022-07-28 01:12:18,466 INFO  org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction [] - FlinkKafkaProducer 1/1 - restoring state
2022-07-28 01:12:18,466 WARN  org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction [] - Transaction KafkaTransactionState [transactionalId=Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1, producerId=25004, epoch=586] has been open for 42551680 ms. This is close to or even exceeding the transaction timeout of 10000 ms.
2022-07-28 01:12:18,476 INFO  org.apache.kafka.clients.producer.ProducerConfig             [] - ProducerConfig values:
	acks = 1
	batch.size = 16384
	bootstrap.servers = [<IP_ADDRESS>:9092]
	buffer.memory = 33554432
	client.dns.lookup = default
	client.id =
	compression.type = none
	connections.max.idle.ms = 540000
	delivery.timeout.ms = 120000
	enable.idempotence = false
	interceptor.classes = []
	key.serializer = class org.apache.kafka.common.serialization.ByteArraySerializer
	linger.ms = 0
	max.block.ms = 60000
	max.in.flight.requests.per.connection = 5
	max.request.size = 1048576
	metadata.max.age.ms = 300000
	metric.reporters = []
	metrics.num.samples = 2
	metrics.recording.level = INFO
	metrics.sample.window.ms = 30000
	partitioner.class = class org.apache.kafka.clients.producer.internals.DefaultPartitioner
	receive.buffer.bytes = 32768
	reconnect.backoff.max.ms = 1000
	reconnect.backoff.ms = 50
	request.timeout.ms = 30000
	retries =<PHONE_NUMBER>
	retry.backoff.ms = 100
	sasl.client.callback.handler.class = null
	sasl.jaas.config = null
	sasl.kerberos.kinit.cmd = /usr/bin/kinit
	sasl.kerberos.min.time.before.relogin = 60000
	sasl.kerberos.service.name = null
	sasl.kerberos.ticket.renew.jitter = 0.05
	sasl.kerberos.ticket.renew.window.factor = 0.8
	sasl.login.callback.handler.class = null
	sasl.login.class = null
	sasl.login.refresh.buffer.seconds = 300
	sasl.login.refresh.min.period.seconds = 60
	sasl.login.refresh.window.factor = 0.8
	sasl.login.refresh.window.jitter = 0.05
	sasl.mechanism = GSSAPI
	security.protocol = PLAINTEXT
	security.providers = null
	send.buffer.bytes = 131072
	ssl.cipher.suites = null
	ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
	ssl.endpoint.identification.algorithm = https
	ssl.key.password = null
	ssl.keymanager.algorithm = SunX509
	ssl.keystore.location = null
	ssl.keystore.password = null
	ssl.keystore.type = JKS
	ssl.protocol = TLS
	ssl.provider = null
	ssl.secure.random.implementation = null
	ssl.trustmanager.algorithm = PKIX
	ssl.truststore.location = null
	ssl.truststore.password = null
	ssl.truststore.type = JKS
	transaction.timeout.ms = 10000
	transactional.id = Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1
	value.serializer = class org.apache.kafka.common.serialization.ByteArraySerializer

2022-07-28 01:12:18,483 INFO  org.apache.kafka.clients.producer.KafkaProducer              [] - [Producer clientId=producer-Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1, transactionalId=Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1] Instantiated a transactional producer.
2022-07-28 01:12:18,496 INFO  org.apache.kafka.clients.producer.KafkaProducer              [] - [Producer clientId=producer-Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1, transactionalId=Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1] Overriding the default retries config to the recommended value of<PHONE_NUMBER> since the idempotent producer is enabled.
2022-07-28 01:12:18,496 INFO  org.apache.kafka.clients.producer.KafkaProducer              [] - [Producer clientId=producer-Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1, transactionalId=Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1] Overriding the default acks to all since idempotence is enabled.
2022-07-28 01:12:18,501 INFO  org.apache.kafka.common.utils.AppInfoParser                  [] - Kafka version: 2.4.1
2022-07-28 01:12:18,501 INFO  org.apache.kafka.common.utils.AppInfoParser                  [] - Kafka commitId: c57222ae8cd7866b
2022-07-28 01:12:18,501 INFO  org.apache.kafka.common.utils.AppInfoParser                  [] - Kafka startTimeMs:<PHONE_NUMBER>498
2022-07-28 01:12:18,501 INFO  org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer [] - Starting FlinkKafkaInternalProducer (1/1) to produce into default topic koh-test-flink-checkpoint4
2022-07-28 01:12:18,501 INFO  org.apache.flink.streaming.connectors.kafka.internals.FlinkKafkaInternalProducer [] - Attempting to resume transaction Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1 with producerId 25004 and epoch 586
2022-07-28 01:12:18,622 INFO  org.apache.kafka.clients.Metadata                            [] - [Producer clientId=producer-Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1, transactionalId=Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1] Cluster ID: pulsar-cluster-1
2022-07-28 01:12:18,724 INFO  org.apache.kafka.clients.producer.KafkaProducer              [] - [Producer clientId=producer-Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1, transactionalId=Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1] Closing the Kafka producer with timeoutMillis = 0 ms.
2022-07-28 01:12:18,724 INFO  org.apache.kafka.clients.producer.KafkaProducer              [] - [Producer clientId=producer-Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1, transactionalId=Source: Custom Source -> Sink: Unnamed-7df19f87deec5680128845fd9a6ca18d-1] Proceeding to force close the producer since pending requests could not be completed within timeout 0 ms.
2022-07-28 01:12:18,726 WARN  org.apache.flink.runtime.taskmanager.Task                    [] - Source: Custom Source -> Sink: Unnamed (1/1)#0 (e8f5badd7e0af0695ec5dbc797b23bce) switched from RUNNING to FAILED.
org.apache.kafka.common.KafkaException: Unhandled error in EndTxnResponse: The server experienced an unexpected error when processing the request.
	at org.apache.kafka.clients.producer.internals.TransactionManager$EndTxnHandler.handleResponse(TransactionManager.java:1362) ~[blob_p-dab1138064dbb2d3fcea71b826b490e4ebccff52-b1bb949c26be6b41d11561b6467bff3c:?]
	at org.apache.kafka.clients.producer.internals.TransactionManager$TxnRequestHandler.onComplete(TransactionManager.java:1074) ~[blob_p-dab1138064dbb2d3fcea71b826b490e4ebccff52-b1bb949c26be6b41d11561b6467bff3c:?]
	at org.apache.kafka.clients.ClientResponse.onComplete(ClientResponse.java:109) ~[blob_p-dab1138064dbb2d3fcea71b826b490e4ebccff52-b1bb949c26be6b41d11561b6467bff3c:?]
	at org.apache.kafka.clients.NetworkClient.completeResponses(NetworkClient.java:569) ~[blob_p-dab1138064dbb2d3fcea71b826b490e4ebccff52-b1bb949c26be6b41d11561b6467bff3c:?]
	at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:561) ~[blob_p-dab1138064dbb2d3fcea71b826b490e4ebccff52-b1bb949c26be6b41d11561b6467bff3c:?]
	at org.apache.kafka.clients.producer.internals.Sender.maybeSendAndPollTransactionalRequest(Sender.java:425) ~[blob_p-dab1138064dbb2d3fcea71b826b490e4ebccff52-b1bb949c26be6b41d11561b6467bff3c:?]
	at org.apache.kafka.clients.producer.internals.Sender.runOnce(Sender.java:311) ~[blob_p-dab1138064dbb2d3fcea71b826b490e4ebccff52-b1bb949c26be6b41d11561b6467bff3c:?]
	at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:244) ~[blob_p-dab1138064dbb2d3fcea71b826b490e4ebccff52-b1bb949c26be6b41d11561b6467bff3c:?]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_312]
2022-07-28 01:12:18,726 INFO  org.apache.flink.runtime.taskmanager.Task                    [] - Freeing task resources for Source: Custom Source -> Sink: Unnamed (1/1)#0 (e8f5badd7e0af0695ec5dbc797b23bce).
2022-07-28 01:12:18,726 INFO  org.apache.flink.runtime.taskexecutor.TaskExecutor           [] - Un-registering task and sending final execution state FAILED to JobManager for task Source: Custom Source -> Sink: Unnamed (1/1)#0 e8f5badd7e0af0695ec5dbc797b23bce.

I am not sure if this is relevant, in my broker log, the only error that appeared around that time period is this:
2022-07-28T01:12:14,553+0000 [pulsar-load-manager-1-1] ERROR org.apache.pulsar.broker.loadbalance.impl.LinuxBrokerHostUsageImpl - Failed to read speed for nic wlp5s0
java.io.IOException: Invalid argument
	at sun.nio.ch.FileDispatcherImpl.read0(Native Method) ~[?:1.8.0_312]
	at sun.nio.ch.FileDispatcherImpl.read(FileDispatcherImpl.java:46) ~[?:1.8.0_312]
	at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ~[?:1.8.0_312]
	at sun.nio.ch.IOUtil.read(IOUtil.java:197) ~[?:1.8.0_312]
	at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:159) ~[?:1.8.0_312]
	at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65) ~[?:1.8.0_312]
	at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:109) ~[?:1.8.0_312]
	at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103) ~[?:1.8.0_312]
	at java.nio.file.Files.read(Files.java:3105) ~[?:1.8.0_312]
	at java.nio.file.Files.readAllBytes(Files.java:3158) ~[?:1.8.0_312]
	at org.apache.pulsar.broker.loadbalance.impl.LinuxBrokerHostUsageImpl.lambda$null$3(LinuxBrokerHostUsageImpl.java:260) ~[org.apache.pulsar-pulsar-broker-2.10.0.jar:2.10.0]
	at java.util.stream.ReferencePipeline$6$1.accept(ReferencePipeline.java:244) ~[?:1.8.0_312]
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384) ~[?:1.8.0_312]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[?:1.8.0_312]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[?:1.8.0_312]
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_312]
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_312]
	at java.util.stream.DoublePipeline.collect(DoublePipeline.java:500) ~[?:1.8.0_312]
	at java.util.stream.DoublePipeline.sum(DoublePipeline.java:411) ~[?:1.8.0_312]
	at org.apache.pulsar.broker.loadbalance.impl.LinuxBrokerHostUsageImpl.lambda$getTotalNicLimitKbps$4(LinuxBrokerHostUsageImpl.java:265) ~[org.apache.pulsar-pulsar-broker-2.10.0.jar:2.10.0]
	at java.util.Optional.orElseGet(Optional.java:267) ~[?:1.8.0_312]
	at org.apache.pulsar.broker.loadbalance.impl.LinuxBrokerHostUsageImpl.getTotalNicLimitKbps(LinuxBrokerHostUsageImpl.java:257) ~[org.apache.pulsar-pulsar-broker-2.10.0.jar:2.10.0]
	at org.apache.pulsar.broker.loadbalance.impl.LinuxBrokerHostUsageImpl.calculateBrokerHostUsage(LinuxBrokerHostUsageImpl.java:104) ~[org.apache.pulsar-pulsar-broker-2.10.0.jar:2.10.0]
	at org.apache.pulsar.common.util.Runnables$CatchingAndLoggingRunnable.run(Runnables.java:54) [org.apache.pulsar-pulsar-common-2.10.0.jar:2.10.0]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_312]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_312]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_312]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_312]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_312]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_312]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [io.netty-netty-common-4.1.74.Final.jar:4.1.74.Final]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_312]

The "Failed to read speed for nic" bug should have been fixed by https://github.com/apache/pulsar/pull/14340 and included in Pulsar 2.10.1. You have to configure loadBalancerOverrideBrokerNicSpeedGbps to avoid these confused error logs.
Regarding the error for EndTxnResponse, could you open another issue for it and upload your broker's logs?

Thanks for the reply.
Understood, I will open a new issue for it.

Hi, I have opened a new issue as instructed. #1424
P.S. My apologies for deleting my previous message in this issue. I felt dumb for raising a new issue in an already closed issue.
And then I only saw your reply after I had remove the message. :sweat:


Echo Problem

Scenario: I use GenericStream of the "RootEncoder" framework to push a video to the server, and play an audio stream in the push stream scenario. The other party plays the video I pushed and pushes an audio stream. It can be understood as a one-to-one call scenario.
Question: Currently, when the other party speaks, he can hear his own echo. Is there any way to eliminate this echo?

Hello,
You can try using echoCanceler to true in the prepareAudio method:
https://github.com/pedroSG94/RootEncoder/blob/master/library/src/main/java/com/pedro/library/base/StreamBase.kt#L130

boolean prepared = genericStream.prepareVideo(width,height,vBitrate,rotation)&&genericStream.prepareAudio(sampleRate,isStereo,aBitrate,true);
I initialize the streaming framework like this. Do you think there is any problem? Currently I play a sound stream and use the framework to push a video stream. The other party can hear the sound of the sound stream I play through the video stream.

Try to enable noiseSuppressor too. If the problem persist you can try change the audio source of the microphonemanager.
using this createmicrophone method:
https://github.com/pedroSG94/RootEncoder/blob/master/encoder/src/main/java/com/pedro/encoder/input/audio/MicrophoneManager.java#L89
You will need copy MicrophoneSource and change createMicrophone adding other source. Sources documentation:
https://developer.android.com/reference/android/media/MediaRecorder.AudioSource
I will implement a way to do it without copy the class manually and change it buut you can start your tests this way for now.

Okay, thank you. If it's convenient, please try the usage scenario I mentioned and see how to solve such problems. My original framework used MediaRecorder AudioSource VOICE-COMMUNICATION audio source, but there may be very low streaming sound on some tablets, which is why we found the framework you developed. Currently, everything in the framework is very good, except for the issue of echo in my current usage scenario

Hello,
Can you give me a code example to test it? I'm not sure the way you are doing that communication to fully reproduce the case.
For now, I added a way to modify MediaRecorder.AudioSource to MicrophoneSource:
https://github.com/pedroSG94/RootEncoder/commit/b3e367551187b63de2d4f234a0030c405229ad45

BidirectionalDemo.zip
This is the demo I made, which has the function of streaming and playing videos. You can use two mobile phones to enter the corresponding address and manually enable the permission. I did not take any action
I used RootEncoder as the framework for streaming videos
The framework for playing videos is my own
Hope you can solve the problem, thank you

Hello,
I was testing the app but I'm not able to reproduce the echo problem. Remember that if you have the both phones nearby you will have echo because the audio provided by one device is captured by the other device.
You should test it with 2 persons and with a distance that you are sure that the microphone is not able to detect the audio from the other device producing echo.
Also, you can use this gradle:
implementation 'com.github.pedroSG94.RootEncoder:library:b3e3675511'

And change the microphone media source like this:
genericStream = new GenericStream(LiveStreamActivity.this,this, new Camera2Source(this), new MicrophoneSource(MediaRecorder.AudioSource.VOICE_CALL));

implementation 'com.github.pedroSG94.RootEncoder:library:2.4.5'
implementation 'com.github.pedroSG94.RootEncoder:library:b3e3675511'

Are they cited together?

No, remove the first (2.4.5) and use only the other


Correct table format in readme file

correct the table format in readme file for correct format check Data Type & Conditions format.

Add counting for quesions under #
Add problem name under under title section and add problem link for each problem

can you assign me this @Shubhamlmp ?

can you assign me this @Shubhamlmp ?

@ProtyayMnd50 first forked repository and give star to it.
and start working on it by creating your own branch.

@ProtyayMnd50 are you working on this ticket or not?

Sorry for the reply @Shubhamlmp I am sure working on it

Sorry for the reply @Shubhamlmp I am sure working on it

Okay do it fast

@Shubhamlmp you have merged my pr sir

@ProtyayMnd50  are you doing or I assign this task to someone else?

Doing it @Shubhamlmp

Hey @Shubhamlmp I have made another fresh pull request pls review it. And really sorry for the delay.


updated yoga app #978

Related Issue

updated the yoga app

Closes: #978
Describe the changes you've made
i have added more timing options to choose for meditation as well as added more music modes and vidoes in the background and changed the overall look of the yoga app
Describe if there is any unusual behaviour of your code(Write NA if there isn't)
NA
Checklist:

[x] My code follows the style guidelines of this project.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] New and existing unit tests pass locally with my changes.

https://user-images.githubusercontent.com/54038386/115986107-65841b00-a5cc-11eb-9e39-4d69a888d9b7.mp4
Screenshots
Put any screenshot(s) of the project here.

it has different music too for different modes , as the video was becoming more in size that is why sound effects could not be shown in the video

@anshika208 Looks Good, Size of the video is huge, Is there a way to reduce the size or change to different video something lite.
Like under 2-4 MB video 480P resolution will also look good,
Reduce the size of the gif, use static image
And there are conflicts tags in script. Look into it, If not able to resolve let me know but Reduce the size of files is important.

ohkay!! sure @991rajat i will make the changes in the video . But pls do add the labels.


更新到最新版本后，dashboard不能隐藏bufferline的显示

这是 更新前的版本，没有hyper前的版本

这是更新后的版本，顶部没有隐藏bufferline

set showtabline? 输出是什么

showtabline=0

0的时候是没有tabline的。

我把这个选项设置 0 就不会展示那个 tabline吧

借这问一下, api有什么改动吗, 我怎么一更新不显示dashboard了

你更新下试试？

你更新下试试？

好像还是不行
我设置了这个等于0 咋还是2 难道bufferline 重写了这个，我试试在buffline加载后设置这个

bufline 会重写这个值。 你在更新一下。我把这个设置延后了。看能不能解决吧。

可以了 是bufferline重设置了 这个showtabline

Hey !
Can you translate ? I have an issue with showtabline too...

did you update to latest version ? I think it should be fixed.

yes, the latest version fix this

did you update to latest version ? I think it should be fixed.

I updated to latest version and add this to my neovim config.
showtabline = 2
It's seems working now without issue !

Okey I am still having the issue as you can on the screenshot.

don't need add showtabline =2, my problem caused by bufferline, it will override showtabline value to 2, and the 1 is don't show tabline, the latest dashboard.nvm have fixed it

don't need add showtabline =2, my problem caused by bufferline, it will override showtabline value to 2, and the 1 is don't show tabline, the latest dashboard.nvm have fixed it

I am still having the issue. Even if I don't set showtabline. By default showtabline is set to 0. Is there a workaround to avoid this issue ? Because even with last version of Dashboard, error appears. Sorry to borrow you !

can you take a screeshot

Screenshot above.
Same error with setting showtabline = 2 and no setting showtabline.

please update @Flo-Slv  the pos of you pic not have code . I think your version is old

I already updated.
Neovim version:
╰─ nvim --version
NVIM v0.9.0-dev-823+g41aa5ce3e
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3
Compilation: /usr/bin/cc  -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -O2 -g  -Og -g -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wdouble-promotion -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fno-common -fdiagnostics-color=always -fstack-protector-strong -DNVIM_UNIBI_HAS_VAR_FROM -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_TS_HAS_SET_MATCH_LIMIT -DNVIM_TS_HAS_SET_ALLOCATOR -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DMIN_LOG_LEVEL=3 -I/home/floslv/Flo/Apps/Neovim/.deps/usr/include/luajit-2.1 -I/usr/include -I/home/floslv/Flo/Apps/Neovim/.deps/usr/include -I/home/floslv/Flo/Apps/Neovim/build/src/nvim/auto -I/home/floslv/Flo/Apps/Neovim/build/include -I/home/floslv/Flo/Apps/Neovim/build/cmake.config -I/home/floslv/Flo/Apps/Neovim/src
Compiled by floslv@FloSlv

Features: +acl +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/local/share/nvim"

Run :checkhealth for more info

sorry my network is crashed. update now.

@glepnir 大兄弟 我有点困了， 准备去睡了🤣 新年快乐 恭喜发财

@Flo-Slv  can you test it now ?

sorry my network is crashed. update now.

Okey, I just updated, and it seems working like a charm now !
Btw, I found a typo in the README.md
Missing one ',' after end (when closing function).
use {
  'glepnir/dashboard-nvim',
  event = 'VimEnter',
  config = function()
    require('dashboard').setup {
      -- config
    }
  end
  require = { {'nvim-tree/nvim-web-devicons'}}
}

@glepnir 大兄弟 我有点困了， 准备去睡了rofl 新年快乐 恭喜发财

Have a good night, cheers from France !

glad to hear that :)

Last one and you can go sleep !
Typo in README.md for Lazy.nvim.
It should be dependencies and not dependices.
{
  'glepnir/dashboard-nvim',
  event = 'VimEnter',
  opts = {
    -- config
  },
  dependices = { {'nvim-tree/nvim-web-devicons'}}
}

Have a good one, and thanks for this amazing plugin !

go sleep is  not me :)  still have some neovim core code need write . fixed.


Introduce reduced

I'm not sure what you are trying to achief with the extra interface. Could you explain this please?

The return value of R.reduced is not the value passed. It's sth that is not guaranteed to be stable. So using that interface will make sure the return value is not mistaken as the same value as passed to reduced

Ahh, I completely missed reduceD. Now it makes sense to me. Maybe you could change the def to
reduced<T>(elem: any): Reduced<T>;

That would not make any sense. The thing on the elem: T is that R.reduce will return what you passed into R.reduced as elem and will therefor be of the same type as elem was. So elem needs to be of type T

So elem needs to be of type T

But your code now says elem is (implivitely) of type any as the type is omitted. I agree it should be elem: T
Do you have a test case we can included in the test file?
Thanks!

But your code now says elem is (implivitely) of type any as the type is omitted. I agree it should be elem: T

Fixed that with c1ca518
I'll have a look into tests tomorrow

:+1:

@sventschui Do you have time to look into the tests? If not, no problem, then I'll try to add some.

I currently don't have any spare time to write these tests. Sorry :/

@sventschui No problem, thanks for letting me know. I'll merge your pr and add some tests later on.


Syntax highlighting for date created

Thanks for this tool. I'd love to have syntax highlighting for task creation dates and the priorities as well.
Example:
(A) 2015-02-06 Finish summaries of chapters +book @work due:2015-02-08

Priority is already supported.

This was in a merged PR.


Getting a multi project solution with nuget references seems to be way more effort than it could be

Are there any plans of making this an easy process? To me it seems like the "export project template" functionality could streamline the whole process of packaging + adding nuget references. Due to the great effort which has to be put into getting a working solution template this is a major roadblock. After spending about 8 hours of figuring out several issues with creating a template i am now at the point of figuring out how to get this working with nuget packages.
There were several times during this process where i thought "hm maybe i should write a tool to convert my project into a project which has working references" - this is an indicator that this area of VS could use some love.

Dokumentdetails
⚠ Bearbeiten Sie diesen Abschnitt nicht. Er ist für die Verknüpfung von docs.microsoft.com zum GitHub-Artikel erforderlich.

ID: bbf9be6a-e7b0-b9b6-a3e8-8b5de3c6900d
Version Independent ID: c12505c9-6f14-7111-2578-5c2664b4515d
Content: NuGet-Pakete in Visual Studio-Vorlagen
Content Source: docs/visual-studio-extensibility/Visual-Studio-Templates.md
GitHub Login: @karann-msft
Microsoft Alias: karann

Hello, @taori
Your contribution is much appreciated. Our team can only answer feedback related to the documentation.
Please kindly log your product feedback by using the button "Give Product Feedback" at the bottom of the DOCS page.
If you have any feedback related to the documentation, please feel free to log it through this channel.
We truly appreciate your contribution to our articles.
Kind regards,
Microsoft DOCS International Team
@JasonCard FYI


Please confirm these before moving forward

[X] I have searched for my issue and not found a work-in-progress/duplicate/resolved issue.
[X] I have not been informed if the issue is resolved in a preview version of the winget client.

Category of the issue
Other
Brief description of your issue
I am trying to use the winget pin add command to pin a package (in this case, OpenAL [OpenAL.OpenAL] Versão 1.1) so that it is not updated when I run winget upgrade --all. However, even after pinning the OpenAL package, it is still being updated when I run winget upgrade --all.
Steps to reproduce
powershell -Command "Write-Host ' [UPGRADE] Winget ' -F yellow -B black"
:: Atualização do Windows Package Manager (Winget)
winget settings --enable LocalManifestFiles >nul 2>nul
winget settings --enable BypassCertificatePinningForMicrosoftStore >nul 2>nul
winget settings --enable InstallerHashOverride >nul 2>nul
winget settings --enable LocalArchiveMalwareScanOverride >nul 2>nul
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "Add-AppxPackage -DisableDevelopmentMode -Register 'C:\Program Files\WindowsApps\Microsoft.Winget.Source_2023.1117.2310.834_neutral__8wekyb3d8bbwe\AppXManifest.xml' -Verbose">nul 2>nul
pause
winget pin add OpenAL
winget upgrade --all --force --accept-package-agreements --accept-source-agreements --ignore-security-hash --include-unknown
powershell -Command "Write-Host ' Atualização do WINGET Concluída. ' -F Blue -B black"
pause
Actual behavior
ailed to try to update the source: winget Found OpenAL [OpenAL.OpenAL] There is already a PIN for the OpenAL package Failed to try to update the source: winget Name ID Version Available Source
OpenAL OpenAL.OpenAL Unknown 1.1 winget 1 updates available.
Installing dependencies: (1/1) Found OpenAL [OpenAL.OpenAL] Version 1.1 This application is licensed to you by the owner. Microsoft is not responsible for, nor does it grant licenses to third-party packages. Installer hash successfully verified Extracting file… File successfully extracted Starting package installation… Successfully installed
WINGET Update Completed. Press any key to continue . . .
Expected behavior
There is already a PIN for the OpenAL package
Name       ID                                 Version          Available Source
OpenAL OpenAL.OpenAL Unknown 1.1 winget
1 updates available.
OpenAL will not be updated due to the winget pin add command!
All programs updated successfully!
WINGET update completed.
Press any key to continue . . ."
winget comandos.txt
The winget.comandos.txt is a winget.comandos.bat (Script.bat).
Environment
winget --info
Gerenciador de Pacotes do Windows v1.6.3133
Microsoft Windows [Version 10.0.22621.2715]
Windows: Windows.Desktop v10.0.22621.2715
Arquitetura do Sistema: X64
Pacote: Microsoft.DesktopAppInstaller v1.21.3133.0

Without any other relevant software!

Screenshots and Logs

WinGet-2023-11-16-23-32-15.583.log

I want to solve this problem because I use the “script.bat” to safely and automatically update my programs, with the windows task scheduler every time I start the pc!
I just need it not to try to update OpenAL.
I tried through https://winstall.app/apps/OpenAL.OpenAL to update the version but it always comes back to OpenAL [OpenAL.OpenAL] Version 1.1
I tried asking for a solution to two AIs (openAI and BingAI) but it didn’t give good results this time!
I’m afraid that something might stop running well on my Windows if I simply delete/uninstall OpenAL from my System!
It would be the easiest thing to do!

This should be in winget-cli.

from what i figured out when i tried to add pins on my systems, a simple  winget pin add <packageid> does not block all updates but actually only allows updates within a major version track, it only seems to block major version upgrades. (but i'm not sure what winget considers to be a "major version" though)
If you want to block ALL updates you must specify the --blocking parameter to the pin command otherwise winget keeps doing updates within that version track, thus your pin command must look like:
winget pin add OpenAL.OpenAL --blocking

I want to solve this problem because I use the “script.bat” to safely and automatically update my programs, with the windows task scheduler every time I start the pc!

Also, forcing updates with the --force and  --ignore-security-hash parameters is awfully insecure - it forces winget to download and run even hijacked URLs (think man-in-the-middle attacks) or CRC checksum corrupted installers (download errors).

Thanks for all the information and time spent to solve my command line
problem with Winget.
I will follow your advice not to use the commands-Force
and-Ignore-Security-Hash.
I verified that really when using the -Blocking command solved 100% my
problem.
Using the Winget Help command does not appear to me -Blocking, so I had no
idea that it existed.
Thanks again ...💪👍
A quarta, 6/12/2023, 08:57, Adi @.***> escreveu:

from what i figured out when i tried to add pins on my systems, a simple winget
pin add  does not block all updates but actually only allows
updates within a major version track, it only seems to block major version
upgrades. (but i'm not sure what winget considers to be a "major version"
though)
If you want to block ALL updates you must specify the --blocking
parameter to the pin command otherwise winget keeps doing updates within
that version track, thus your pin command must look like:
winget pin add OpenAL.OpenAL --blocking
I want to solve this problem because I use the “script.bat” to safely and
automatically update my programs, with the windows task scheduler every
time I start the pc!
Also, forcing updates with the --force and --ignore-security-hash
parameters is awfully insecure - it forces winget to download and run even
hijacked URLs (think man-in-the-middle attacks) or CRC checksum corrupted
installers (download errors).
image.png (view on web)
https://github.com/microsoft/winget-pkgs/assets/16319504/509fa86f-d48c-4163-8f40-6bbdb2c2f9b8
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/winget-pkgs/issues/127910#issuecomment-1842458238,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BCKE3MQ7N44B662JROBKJZ3YIAXQ5AVCNFSM6AAAAAA7YL75TSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNBSGQ2TQMRTHA
.
You are receiving this because you authored the thread.Message ID:
@.***>


GetHashCode is slow when dealing with circular references

Expected
Analyzing the performance of the code, I've noticed that if a class has a reference to a parent which in turn contains that class calculates hash code pretty slow, especially when the parent class contains lots of properties.
Actual
Bridge.getHashCode has the following snippet:
for (var property in value) {
    if (value.hasOwnProperty(property) && property !== "__insideHashCode") {
        if (property == '_parent') {
            console.time ("chordservice")
            // with the commented line the code performance increased from 500ms till 50ms
            // temp = Bridge.getHashCode(value[property], safe, false);
            temp = SOME_RANDOM_NUMBER;
            console.timeEnd("chordservice")
        } else
            temp = Bridge.isEmpty(value[property], true) ? 0 : Bridge.getHashCode(value[property], safe, false);
        result = 29 * result + temp;
    }
}

Steps To Reproduce
The example demonstrates that 5 iterations of 100 objects takes on my laptop (2.2 GHz Intel Core i7)  ~400ms.
Example (Live)
public class App
{
    public class Container
    {
        public List<Child> Children { get; set; }

        public Container()
        {
            Children = new List<Child>();
            for(var i = 0; i < 100; i++) {
                Children.Add(new Child(this));
            }
        }

        public void Test()
        {
            for(var i = 0; i < 5; i++)
                for(var a = 0; a < Children.Count(); a++)
                    Children[a].GetHashCode();
        }
    }

    public class Child
    {
        Container _container;

        public Child(Container container)
        {
            _container = container;
        }
    }

    [Ready]
    public static void Main()
    {
        Container c = new Container();
        var watch = System.Diagnostics.Stopwatch.StartNew();
        c.Test();
        Console.WriteLine(watch.ElapsedMilliseconds);
    }
}

Thank you for reporting this issue, @desunit.
We are investigating.

Hi @desunit,
We optimized getHashCode performance for objects. It doesn't auto compute hash code, a random value is used or result of getHashCode function if overridden in C# code.

@desunit, now your sample takes 12 ms on my laptop (similar to your 2.2 GHz Intel Core i7).


Tutorial review

@acamino @asirerac ready

@mcelicalderon please take a look on this one and help out @kathyguerron fixing this PR.
@kathyguerron you should pay attention when you're creating a PR, something you might consider is the number of files you're supposing to commit, in this particular case there are 319 modified files and 7 commits. If you have any doubts about this, please let us know. I expect to have 2 modified files and 1 commit.

@kathyguerron I close this PR because of the aforementioned reasons. You should create a new PR and select the right base which is gh-pages.


homely: init at 0.15.3

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Fits CONTRIBUTING.md.

@GrahamcOfBorg build homely

----------------------------------------------------------------------
Ran 0 tests in 0.000s

Looks like there are no tests, so please add doCheck = false; as well. :)

Success on aarch64-linux (full log)
Attempted: homely
Partial log (click to expand)
writing entry points to homely.egg-info/entry_points.txt
reading manifest file 'homely.egg-info/SOURCES.txt'
writing manifest file 'homely.egg-info/SOURCES.txt'
running build_ext

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
/nix/store/yj3q9789ni1kszm37r9hbp84rwi4n0pm-homely-0.15.3

Success on x86_64-darwin (full log)
Attempted: homely
Partial log (click to expand)
writing entry points to homely.egg-info/entry_points.txt
reading manifest file 'homely.egg-info/SOURCES.txt'
writing manifest file 'homely.egg-info/SOURCES.txt'
running build_ext

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
/nix/store/kds9cahjk7wx5w53x21dqrsbk8pkc30f-homely-0.15.3

Success on x86_64-linux (full log)
Attempted: homely
Partial log (click to expand)
writing entry points to homely.egg-info/entry_points.txt
reading manifest file 'homely.egg-info/SOURCES.txt'
writing manifest file 'homely.egg-info/SOURCES.txt'
running build_ext

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
/nix/store/nv7s43dpgm9yqrbf86c71wicas28ccl7-homely-0.15.3

I fixed the mentioned issues, thanks for the feedback

Ping? Will merge if you fix above issue

Oh haha, I just now realized that @srhb said to add doCheck = false; and I said to remove it again.
@srhb I think it's better to make it try to run tests anyways, even if there aren't any, because future versions of the package might do have them.

@Infinisil I'm only parroting what the actually skilled python maintainers (as opposed to me) tend to say on python PRs, I believe. :)

Hmm, would like to see the arguments for it, ping @FRidh

Think the PR is in a bad state for any sort of discussion right now. Bad rebase?

@srhb asked you to add doCheck = false; to the package since we run by default tests for python packages. There are no tests included in the python package. The github release would include tests, but at least some of those require network access: https://github.com/phodge/homely/blob/master/test/test_gitvcs.py

@lokke-me Sorry for the delay! Could you just rebase your PR on latest master, so that I could trigger a final ofborg run and merge? Feel free to poke me if I don't do in the next few days, or there's a risk that this slips under the radar again :/

Result of nixpkgs-review pr 49054 1

Result of nixpkgs-review pr 49054 1

I think the author lost interest for this one. Maybe someone else could make a PR if they are interested.


On Settings Screen, if a path option is set to a non existing drive there's no way to modify it

Versions

Python: 3.4
OS: Vista, Seven
Kivy: 1.10
Kivy installation method: pip

Description
Probably Windows only problem, but when the path is on a non existing drive, the file selector non allow to set a valid path.
Code and Logs
Take my previous example then edit "my.ini" and the badly named "font_size" to a non existing drive

Is this still a problem with modern Windows and Kivy?

Yes


Navigation

How can i navigate between pages using only one drawer ? Can you show very simple example ?

I want to go another page but it has a same drawer but only one code for drawer. In your example , for example click dahsboard and go to dashboardPage and open drawer again and click user and go userPage with using one drawer. Simple example navigation please.

hi @hz111-hz112, as soon as I have time I will give some examples.

Thank you so much, i am waiting


added 4.5 example. Removed unsupported sample

Writer's Quality Checklist
Before merging your PR, did you:

[ ] Run spell checker
[ ] Run link checker to check for broken xrefs
[ ] Check for orphan files
[ ] Perform a local build and do a final visual check of your content, including checking for:

Broken images
Dead links
Correct rendering of partials if they are used in your content
Formatting issues, such as:

Misnumbered ordered lists (steps) or incorrectly nested unordered lists
Messed up tables
Proper indentation
Correct header levels

[ ] Receive final review and signoff from:

Technical SME
Product Manager
Editor or peer reviewer
Reporter, if this content is in response to a reported issue (internal or external feedback)

[ ] If applicable, verify that the software actually got released

Please, can you include the WI? The Traceability Check fails. Thanks!


[Popper] Update on the issue-Arrow does not display correctly on v5-b…

…eta.1

[x] I have followed (at least) the PR section of the contributing guide.

Duplicate of #27339

@MGlolzz Thanks for the effort, however, it already had a linked issue:


HTTP: Input Binding Support

Bindings should be supported on the HTTP Protocol, currently it seems that the FastAPI implementation does not have it? @wcs1only ?

My understanding is that binding does not require the SDK for any functionality. We would just need an example for HTTP input binding - which does not even need the SDK to work, actually.

Reiterating the discussion maybe from yesterday (maybe we should have more opinions on this - @paulyuk ?) but in my opinion you should be able to interact with Dapr through the SDK for ANYTHING you want. Which also means Bindings.
If bindings are not supported, I wouldn't go that far as to say that: "it does not require the SDK For any functionality".
Personally again, It's not because we support HTTP that we should rely on people using HTTP and implementing a web server :) but just my 2 cents. Just imagine that you are writing a simple processor. Do you want to go ahead and set up an entire web server for this? Or do you expect the SDK to do just that?
Another example I was thinking of: let's imagine you are doing the same through the Redis SDK. There we also don't have to setup a web server right :) if Dapr abstracts everything away, the SDKs should as well I think.

If you want a mechanism that is handled / managed by Dapr than that is gRPC in my opinion.
As a Flask or Fast API user I don't find Dapr registering routes without my knowledge to be reassuring.
Consider this:
By default the sidecar sends events for input bindings to POST /bindingname. But this is configurable to be any route you want (via the component metadata).
So naturally one must manually edit edit their code.
Here is native Flask code:
@app.route('/myinputbinding', method='POST')
def myinputhandler():
  request_body = request.json()
  # do stuff

So you are proposing that we have what?
@daprapp.binding('myinputbinding')
def myinputhandler(body):
  # do stuff

The problem with this approach of course is that that I can set up a custom route that is different from the binding name. Also, this decorator would have to handle setting up the flask route under the hood.
The same generally applies to Fast API by the way. I am using Flask for the discussion because it's more popular and common.
If you want to use HTTP there is no way around using and implementing a web server - surely Dapr shouldn't fully be managing a web server for you (which Flask and Fast API extensions are).
I don't understand the Redis SDK comparison - doesn't that open a connection on a binary wire protocol and then stream data? That doesn't seem to apply here, but even so gRPC is much closer to that approach than HTTP.

So this just standard Fast API / Flask stuff.

from fastapi import Request

@app.post("/myinputbinding")
async def handlebinding(request: Request):
  # do stuff

Hi @berndverst ! Thanks a lot for clarifying your thoughts.
Adding on this, the use case scenario I typically take here is if we are developing a microservice that wants to just do one thing: "Process Orders".
Would a user then need to implement a full web server to accomplish this scenario?
As normally, when I am a user that wants to create this, I would follow these steps?

Install Pub Sub (e.g. Redis)
Use the Pub Sub Library and import it
Listen to changes

No Web Server will be imported in these steps, thus posing the question why we don't ship a standard Web Server as a lower boundary?
Yes, I agree you should be able to hook it up to an existing HTTP Server, but I think we should also offer a standard one.

The recommendation is to use gRPC or set up your own Flask, Fast API server etc


Remove Python 3 references from documentation

I encountered multiple errors when trying to use Python 3 and Zappa CLI, According to this post by Miserlou there is no support for it:
https://github.com/Miserlou/Zappa/issues/82

Description

GitHub Issues

Coverage remained the same at 73.469% when pulling 60c28095c7eea08da918b41e42bde6d238d70f73 on hosay:patch-1 into 5f1bfac0c533a8d2b8bd89fa284f2d0441c6764e on Miserlou:master.

I was using an old version of Zappa (got it from pip last week weirdly), I haven't confirmed python 3 is not working with the latest. Closing for now.


Network Info - Scope change and overlap with DeviceStatus API?

Problem description

Within PR #40 there is beside a lot of other changes a new API "code/API_definitions/network-info.yaml" included.
This API seems to be
a) not covered by the current scope of the Sub Project:

define intents in the form of policy thresholds for QoS metrics against the device and the application service. The API service will alert the consumers if and when the policy has breached.
NOTE: The scope of this API family should be limited (at least at a first stage) to 4G and 5G.

b) has a significant overlap with current discussion within DeviceStatus about the same functionality:
Expected action

Scope changes should be discussed with an issue in the API Backlog group. That allows also to identify potential overlaps and needs of scope overlap resolutions.
In addition the Sub Projects Connectivity Insights and DeviceStatus should discuss the scopes of their APIs with each other to avoid overlap and double work.
Additional context

See also my comment within DeviceStatus: https://github.com/camaraproject/DeviceStatus/issues/143#issuecomment-2180573172

I had an opportunity to clarify this during today's TSC call as well but adding all the information here for everyone's benefit.
@Kevsy proposed the new features here as part of connectivity insights to provide developers with information on network connection details. this feature was discussed and debated if connectivity insights is the right place for it.
When put to vote, the majority on the call voiced their support for moving this capability out of connectivity insights and called out that it might be a better fit in device status.
following the discussion, 2 steps were decided as next actions:

separate the API from the core connectivity-insight.yaml and have a separate yaml so that we are not loosing out on the efforts put in to create the API spec and can be easily moved when a new home is found(done as part of #40)
bring this up in TSC call for deciding the right place for these capabilities.

Action for step 2 is with @Kevsy and i believe it is yet to be planned. @Kevsy, I miss alternate TSC calls due to my US timezone. Please share if there was any specific information which might have been discussed but i have missed.

Hi @hdamker - I'm happy to raise this in API Backlog, I can see 3 options:
1- Scope Enhancement for Connectivity Insights
2- Scope Enhancement for Device Status
3- New API Proposal for 'Network Information'
I can do (1), knowing that if it is accepted then the preferred realization may be agreed to be (2) or (3).  Is that OK?

Hey @Kevsy @hdamker @maheshc01
I would recommend going with option 2. The proposal in Device Status focuses on the Network Connection Status of the device. Currently, we already have the Connection Status in Device Status, and we have agreed there not to add this to the API in order to keep it separate. This allows developers to decide which specific details of information they need. I would choose Device Status wg over Connectivity Insight wg because the Working Groups' directions suggest that  Connectivity Insight is more focused on general network information, while Device Status is more about device-specific information.
Regardless of the final decision, I recommend considering scope enhancements for Device Status for the other endpoints/APIs as well. Some information, such as roaming, doesn't have much to do with the connection standard.
@Kevsy i would suggest we raise a general issue in API Backlog with your three options and trying to find a solution there and in best finding the right "split" between both APIs.
Happy to discuss this

Hey @NoelWirzius - thanks, I've now created API Backlog 61 accordingly.

PR #53  with the fix has been merged.


Duplicate path and file, when in .vue file.

Such as this pic , I found suggestion didn't work  in .vue file , but .js or .ts file  are work.
In .vue file

In .js file

Try to configure the path-autocomplete.excludedItems
if you need more fine grained control for handing duplicate items you can use the path-autocomplete.excludedItems option as follows:
// disable all suggestions in HTML files, when the current line contains the href or src attributes
"path-autocomplete.excludedItems": {
        "**": {
            "when": "**/*.html",
            "context": "(src|href)=.*"
        }
},

// for js and typescript you can disable the vscode suggestions using the following options
"javascript.suggest.paths": false,
"typescript.suggest.paths": false

Try to configure the path-autocomplete.excludedItems
if you need more fine grained control for handing duplicate items you can use the path-autocomplete.excludedItems option as follows:
// disable all suggestions in HTML files, when the current line contains the href or src attributes
"path-autocomplete.excludedItems": {
        "**": {
            "when": "**/*.html",
            "context": "(src|href)=.*"
        }
},

// for js and typescript you can disable the vscode suggestions using the following options
"javascript.suggest.paths": false,
"typescript.suggest.paths": false

please reopen if you still encounter issues


Racing on condition in ReplicationInternal.setError()

ReplicationInternal.setError() will be called from multiple threads of RemoteRequest Workers so there is a possibility of racing condition over self.error variable and could cause the retry logic to fail to retry.
This could result to unpredictable behaviors. At least, there could be some pending failed revisions to push to the remote server.

After thought, I think the race condition might not be happening as the race condition can only be happen when the retry() method reset to null and at the same time there is an error happening. I think this scenario could not be happen. I will keep the ticket open until we end testing.

I believe this couldn't happen. I'm closing the issue now.


Support for grouping j-avatar

Great to see a new release! Any chance to see j-avatar-group come back to life? 🙂

Perhaps :) I feel it doesn’t have much value, but I suppose it would be nice to have.

Not really putting effort into avatars anymore, as the Vaadin component is pretty good already.


Doesn't save state

Bot Info

SDK Platform: .NET
SDK Version: <IP_ADDRESS>
Active Channels: Doesn't matter
Deployment Environment: Azure Tables
*Microsoft.Bot.Builder.Azure : 3.2.5
*WindowsAzure.Storage : 8.7 didn't upgrade to 9+  , because of https://github.com/Microsoft/BotBuilder-Azure/issues/58

Issue Description
It started about 2 weeks ago .
Bot doesn't save it's current state \ deserialize the previous state instead of current (the last one where he stopped ).
Occurs rarely.(It could be user get this bug , it could be not , user could get this bug several times per conversation)
Occurs in random moment of the workflow (doesn't depend on which dialog is  \ context.Wait(Smth) ).
No Exceptions at all ! Neither in workflow nor  http requests to Azure Tables.
Bot process looks like :
Bot state is 0
Bot moves to the state 1( send message 1)
Bot waiting for an answer( user message 1)
//
User gets bot message 1
User respond (user message 1)
//
Bot accept answer (user message 1) , Bot state = 1( expected  =  1)
Bot moves to the state 2( send message 2)
Bot waiting for an answer( user message 2)
//
User gets bot message 2
User respond (user message 2)
//
Bot accept answer (user message 2) , Bot state = 1 ( expected  =  2)
Actual Results
Not really good example (because use nested dialog), but same was with dialogues , wich doesn't know anything about each other.

Later , didn't changed anything in code \ server config any elsewhere

Please share your code, this will be next to impossible to diagnose without your code.

@JasonSowers added as collaborator to the copy of repository
Also today we have tried to downgrade BF to 3.12.4(stable version we used before 3.13.1) right now 30+ full conversations(25-40 interactions) , no bug

You're not going mad SenseVision, I just had a panic attack for most of the afternoon today because I thought I had completely messed up my work (and mediocre understanding of how BotFramework worked).
Exactly the same experience after moving from 3.14.0 to either 3.14.1 or 3.15 (not enough testing between upgrades to determine which) - random mutations in conversation position, sometimes even going back to points in 'completed' (Context.Done) dialogs. I only noticed properly after upgrading again to 3.15.
I'm using Azure Table Storage for state, and an Azure app service for the bot. Also 3.2.5 for Microsoft.Bot.Builder.Azure. Dialogs for conversations. (No LUIS, no FormFlow, or anything fancy. Bog-standard MessagesController.Post -> scope.Resolve, Conversation.SendAsync.... -> RootDialog -> context.Call(other dialogs) )
After downgrading Bot.Builder and Bot.Builder.History from 3.15 to 3.13.1 (and BotConnector to 3.14.07, although I can't say right now which is making the difference) everything is OK again. WindowsAzure.Storage is at 9.1.1.
To Jason and the team - apologies, as this kind of random comment that is missing a workable repro is about as welcome as a kick in the teeth :)
If I can find a consistent repro, I will certainly post it, but as SenseVision notes, it is frustratingly random.

I got your invite, I will start looking into this.  We recently released a new SDK version 3.15  can you please confirm if you are experiencing the same issue in 3.15.  @oflahero I couldn't gather if 3.15 was working or not for you from your post.

I experienced the same issues with <IP_ADDRESS>.
So the problem appears to have been introduced somewhere when moving between 3.13.1 to <IP_ADDRESS> in Microsoft.Bot.Builder and Microsoft.Bot.Builder.History (unless I was doing something stupid in my code that relied on something that was fixed after 3.13.1!) I don't have any further granularity info.

@oflahero Can you please share your project as well?  I'm trying to make a minimum reproducible example and want to see if there are any similarities between your project and SenseVision's
So I have started with the most simple implementation of saving state data and I am adding pieces in from SenseVision's project to try to figure out the root cause, but I haven't been able to reproduce it yet.  I will be spending the day looking into this

Can either of you confirm this happens in the emulator as well?  I have been trying all day to reproduce this with no luck.

Hey there. I spent a bit of time on this today too - I've settled on 3.14.0 for Bot.Builder, Bot.Builder.History and Bot.Connector as the most stable configuration. Anything higher (>=3.14.1) and the issue is back.
I tried to reproduce in the emulator with no luck. It's only happening for me in the channel, which in my case is Facebook Messenger.
My project's commercial, and currently pretty large, so no sharing I'm afraid. I understand the frustration of spending time trying to reproduce an issue like this. I will hopefully try to do a pared-down minimal project that exhibits the problem, but I wouldn't be surprised if it doesn't. The problem project has so many interconnected moving parts - targets full 4.7.1, also NetStandard by some NuGet packages. I have enough issues with assembly bindings as it is.
I can understand putting this on hold til more people claim to have the issue also.

Let me try facebook, no luck with repro i emulator or webchat 👎

@JasonSowers  sorry , i haven't answered , was super busy .
Check 3.15 ->
the earliest i'll be able try would be on Tuesday, i guess.
Can either of you confirm this happens in the emulator as well?
<IP_ADDRESS> - yes . Emulator and  FB.
I've rechecked references history , looks like @oflahero  is right 3.13.1 is OK

Hi guys,
we experienced the same thing after upgrading from 3.13 to <IP_ADDRESS>. dialogs seem to jump to a previous state. Seemed to be most reliably reproducible in the web versions of Slack and MS Teams (not sure if that has anything to do with it though)
Our guess was that something in the way the bot state is saved has changed between those versions (we are using TableStorage with a custom key for the bot state), but we couldn't find anything suspicious in the Bot.Builder commits...
So we just reverted back to 3.13.1 and everything works again.
Would be nice to get this out of the way so we can upgrade again.

Welcome to the club!
I'm about halfway through setting up a minimal project - haven't forgotten about you Jason. No guarantees it'll exhibit the symptoms, mind.

No worries guys, been busy over here as well.  I hope to make some more time to try to get to the bottom of this next week.  All of my bots are running 3.15 (because I test the SDK before we release it) and I have not noticed any issues with state like you are seeing, so I'm hoping one of you can provide a clue here especially because I haven't been able to reproduce this.

I have a repo at https://github.com/oflahero/315Issue where it looks like I can reproduce the issue.
It's a simple bot that echos what you type with the length of the input string. If you enter 'find', it also launches a dialog simulating searching for a phone or email contact by name substring.
There are only three contacts hardcoded. Once it either returns a match or tells you there are no matches, you're out of the dialog again.
Using branch 315 (Bot Builder & Connector at 3.15.0), and the Facebook channel, you can eventually (after repeatedly hitting 'find' and responding appropriately) observe it jump out of sync. It may take a good ten minutes of this.
I have a publicly available FB messenger page hosting the 3.15.0 version, if anyone wants to try it without installing themselves. Just send me your FB profile identifier so I can add you as a test user to the app on FB Developer, and I'll let you know where to look.
Branch 314 is the stable (3.14.0) version.
The 'UnrelatedPostIssue' branch is another problem entirely - it's a one-character diff commit, but it causes a 'BadRequest' exception in the bot on PostAsync. It's completely floored me.

Hi Guys
I have also noticed that our dialogs are jumping to a previous state ever since I updgraded the bot builder sdk from 3.13.1 to 3.15.0. It appears to specifically occur when there is a delay in the user response. We are storing our state using local SQL TableStorage. I have first noticed this via the directline channel. It also occurs in the emulator.

I went through the Bot.Builder commits between 3.13.1 and <IP_ADDRESS>
The only change related to our issue seems to be CachingBotDataStore changes in commit
https://github.com/Microsoft/BotBuilder/commit/992e29f4e0f61b98b31557fdba68d53fb8caabfc
(the cache was changed from local Dictionary to MemoryCache)
I couldn't spot anything suspicious with the changes, but @oflahero could you register your TableBotDataStore directly as IBotDataStore and remove the CachingBotDataStore registration in your example and see if that helps?

As I understand it though @thschuetze , you need a CachingBotDataStore sitting on top of your keyed registration for it to work though? At least until we get BotBuilder v4... (see issue https://github.com/Microsoft/BotBuilder/issues/4376)
Maybe there's a simpler way. I'll be the first to admit that the tight integration of Autofac into BotBuilder is a pet hate of mine (mainly because it confuses the hell out of me, and I loathe DI on principle :) )

Awesome work guys, thanks for helping us work this out.  I will be spending time on this today, but mainly tomorrow since its late in the day now trying to address the issue.

@oflahero you are right, I wasn't aware of that issue.
Could you try to register the old version of the CachingBotDataStore in the module to check if those changes have anything to do with the issue.
Btw. I got your example code and deployed it, but so far haven't been able to reproduce the issue with Slack (web) or Teams (web). Is there a specific way to reproduce it more reliably? Answering/typing as quick as possible for example?

Good news I was able to reproduce in the emulator, the bad news is I need to catch it on a turn it fails on this is going to be a tough one to find 👎

@seca23  I actually think your issue is related after looking into this.

@JasonSowers from the MessageController I call a LuisDialog. When an intent is triggered it calls a new dialog [that inherits from IDialog]. This dialog contains a few prompts and then starts a form flow. Now, at first it seemed like the problem existed at the completion of the form flow. However, later on, I have noticed that the problem also occurred in the middle of the form flow, and in other prompt dialogs. This happens intermittently. If I run through a form flow quickly, it seems to be fine again. However, especially when there is a delay in user response the problem seems to occur.
Our bot endpoint is local and we store the state in local SQL table storage.

@JasonSowers great stuff!
@thschuetze It can be very frustrating trying to reproduce it. I gave up today after five solid minutes of banging the keyboard. I did on two occasions find that the problem appeared when I had left the conversation in the middle of a dialog for a significant time.
How long that has to be I can't say, but my Azure website had definitely spun down by then and took an extra ten secs or so to get going again (don't let anyone fool you that Azure's 'always on' setting really does what it says on the tin)

It seems prompts (which are dialogs themselves) seem to be the culprit here.  If anyone noticing this behavior outside of on a step when a prompt is involved?

That could fit my situation; I'm using a PromptDIalog.Text. My example's not big enough to rule out non-prompt interactions though, might have to add a few more dummy steps in the process.

Hi guys,
I am also facing the same issue in my project.
Bot Info:
SDK Platform: .NET
SDK Version: <IP_ADDRESS>
Active Channels: Skype For Business, Emulator
Deployment Environment: Azure Tables
Package Version Info:
Microsoft.Bot.Builder - <IP_ADDRESS>
Microsoft.Bot.Builder.Azure - 3.2.5
Microsoft.Bot.Builder.CognitiveServices -1.1.2
Microsoft.bot.Builder.History - <IP_ADDRESS>
Microsoft.Bot.Connector - <IP_ADDRESS>
Issue:
There are multiple dialogs for various chat flows and prompts used in the project. I have implemented bot state service using Azure Table and used CachingBotDataStore also. I have ended the context wherever required and returned to parent dialogs from child dialog. The issue is intermittent and the bot is deployed on SfB channel. The behavior is random as sometimes the code works without any issue but other times there is problem with context. I have used Prompts extensively in my project as it's a guided flow for user.

Hi, any more news on the issue?
We kinda need to update to 3.15 soon because of the GDPR methods...

@oflahero
I experienced same issue as you had described .The dialogs jumps to previous state randomly and other times the code runs fine. The issue was persistent even after upgrading to latest packages (upgraded previous week) so i decided downgrading Bot.Builder and Bot.Builder.History from 3.15 to 3.13.1 (and BotConnector to 3.14.07) as you had shared. Everything seems much stable now.
There might be some issue with PromptDialogs. I have used many PromptDialogs in the project (PromptDialogs.Confirm, PromptDialog.Choice and PromptDialog.Text due to guided interaction with user). There are reprompts even when prompt has been answered with valid input, at other times the code runs smoothly without  any reprompts or context issues.
The issue is persistent for emulator and Skype For Business channel.

My hunch is that it's something either in the move to using MemoryCache or the singleton instance of ConnectorClient, in  in 3.14.
Can anyone confirm that they are experiencing this in a non-Azure environment? As in, can we rule out the Microsoft.Bot.Builder.Azure package?

we do not use the Bot.Builder.Azure package, but we are using a customized version of the TableBotDataStore.

Apologies all, we haven't forgotten about you.  Just busy around here with //build conference and all.  Unfortunately, this is a very time-consuming issue to reproduce and try to solve.  I will try my best to make sure I can get to this tomorrow.

Has anyone noticed these changes still happening with <IP_ADDRESS>?

So an interesting thing I found when I was trying to hunt this issue down yesterday was that if I put a simple Trace Trace.TraceWarning("some text");  inside a dialog (in some task like below) or a prompt (such as in the code below)  I was not able to reproduce the error, leading me to believe there is some race condition that the trace eliminates somehow.  I tried for about 30 minutes straight and was unable to reproduce it with this condition.  So this might be a possible workaround for the time being.  If anyone is able to confirm that they are seeing the same behavior when adding a Trace event
prompt
        void PromptForContact(IDialogContext context)
        {
            Trace.TraceWarning("prompt");
            PromptDialog.Text(context, SearchEntered, "Enter a few letters of the contact you're looking for.");
        }

Task inside a dialog:
        async Task ContactChosen(IDialogContext context, IAwaitable<GenericEntityChoosable> chosenEntity)
        {
         Trace.TraceWarning("ContactChosen");
            var ct = await chosenEntity;
            var chosenContact = _searchablePeople.Single(c => c.Id == ct.EntityID);
            var sMsg = $"Details are:  \nName: {chosenContact.Name}  \nEmail: {chosenContact.Email}  \nPhone: {chosenContact.Phone}";
            await MessageAndContinueAsync(context, sMsg);
            context.Done(true);
        }

Thanks Jason. I'll have a bit of time on Monday to trial <IP_ADDRESS> and/or the proposed Trace workaround.

We are actively looking for the root cause, just nothing to report as of yet.

Hi, we are also having this issue, we have narrowed it down the versioning like mentioned and downgrading it to 3.13.1 fixes the issue.
I was able to reproduce the issue using an example code from the repository and thats when I knew that the issue wasn't something in the code I wrote.
For us, normal dialogs seem to be fine, and the problem only occurs when using the formdialog and formflow.
Hope my input is helpful

I'm so glad I found this, thought I was going crazy. I think my issues are related.
My setup:

I have a chained dialog that asks the user for different information, the dialog links to another chained dialog that asks the user for a photo and calls another ValidationDialog that checks if the user's response contains an image and returns a message if it doesn't and awaits another input.

Here's the code that waits for until a valid input is given:
public async Task StartAsync(IDialogContext context)
        {
            await context.PostAsync(InputPrompt);
            context.Wait(InputGiven);
        }

        private async Task InputGiven(IDialogContext context, IAwaitable<IMessageActivity> result)
        {
            var message = await result;
            if (!Validator.IsValid(message))
            {
                await context.PostAsync(WrongInputPrompt);
                context.Wait(InputGiven);
            }
            else
                context.Done(new ImageUploadResult(message.Attachments.First().ContentUrl, message.Attachments.First().ContentType));
        }

This worked perfectly until upgrading from 3.13.1 to 3.15.2.
Issues experienced:

I message my bot, enter an invalid message (not containing a photo) and get a message telling me I need to upload a photo.
I then upload the image and the bot responds with the valid response and context.Done on the above dialog is called. However, the validation dialog appears stuck at the top of the stack until I send another valid response, like this:
Image
It doesn't happen every time I try but it seems to occur more often that not when the image I am uploading is large.
I also experienced another strange issue when the text of one card was combined with the buttons of another even though these are in completely separate places in my code though I have been unable to replicate this again.

After downgrading to 3.13.1 both of these issues no longer occur.
I'm happy to share my code and access to my dev environment if it would be helpful to resolve the issue.

The problem we are running into is that we cannot reproduce this on demand.  We have tried multiple ways to automate it with no success.  If anyone is able to produce a reproduction that happens in an even somewhat predictable or consistent manner please share with us.  We will continue trying and update as we have more information.

I do also have this kind of issues. They do happen very often.
@thschuetze said, that the only thing, that has been changed is the use of the MemoryCache in the CachingBotDataStore.
I have looked at the code and i am taking a guess, only a guess. Feedback is welcome.
The documentation of MemoryCache PhysicalMemoryLimitPercentag says:
If the cache size exceeds the specified limit, the memory cache implementation removes cache entries.
Then I have looked at CachingBotDataStore and I have noticed a heavy reliance on the MemoryCache.
During the loading process LoadAsync everything is fine. The cache will be used if possible.
During the saving process SaveAsync on the other side I couldn't find the call of inner.SaveAsync. It just puts everyhing in the MemoryCache, which can be erased any time. This is build that way because of FlushAsync.
To summarize my guess: CachingBotDataStore puts everything in the MemoryCache, which is cleared before FlushAsync is called.
@JasonSowers Even if it is not the problem, I wouldn't recommend a cache for storing the data and then put it in the database.
For the purpose of testing I would try to trigger the MemoryCache clearing. Some ideas would be reducing the PhysicalMemoryLimitPercentag, reducing the available RAM or storing huge binary data in a dialog or the context.

From what I have been Testing it seems to work when you do not use the cache.  This is the workaround we reccommend right now.
After you call AzureModel.Load(builder) register you IBotDataStore and do not register a CachingBotDataStore
            builder.Register(c => new TableBotDataStore(connectionString))
                .As<IBotDataStore<BotData>>()
                .AsSelf()
                .InstancePerLifetimeScope();

The problem with @tempel3's solution is that the original dictionary we were using caused a memory leak.  This came to our attention when people were testing bots under heavy load.  We think the cause of this is entries being evacuated or expiring from the memory cache.  Which means the MemoryCache is thinking, "I'm just doing my job, man",  when it is actually occasionally ruining the intended dialog flow.

I have a chatbot which doesn't use the cache, it's actually registering the TableBotDataStore exactly the same way you've described in your last comment Jason. What solved it for me is downgrading to SDK version 3.13.1. Related SO question: https://stackoverflow.com/questions/50568479/bot-framework-messes-up-dialog-state

@peterbozso How often does this happen with your current implementation?  Using this method I tested for about an hour and was not able to reproduce.  Whereas I'm usually able to produce this result every 10-15 minutes or so.

With the current implementation? You mean by downgrading to 3.13.1? Now it doesn't happen.

I mean when you use 3.15, how often does the problem arise.

I see, sorry. :) I use autobot for testing my bot. Out of 10 tests 4 fails on average because of this issue when using the 3.15 SDK.

@JasonSowers

This is the workaround we reccommend right now.
Wonder how you can recommend that if CachingBotDataStore is the only thing that makes the state being saved (because of its FlushAsync implementation that loads state instances and calls SaveAsync on them). Even InMemoryDataStore doesn't work without it in tests.

I have the same issue with v<IP_ADDRESS>. I'm using SqlBotDataStore and it happens regardless I register CachingBotDataStore or not. The bot uses only one dialog and keeps track of its state in a property, but sometimes the UPDATE [dbo].[SqlBotDataEntities] is not called and on the next message the state is restored to the previous one.

@peterbozso Thank you very much. I am working with Jason on this and a reproduction would go a long way to being able to get closer to the heart of this issue.

If it could help to someone. Yesterday I changed the scope of SqlBotDataStore registration from SingleInstance to InstancePerLifetimeScope and haven't faced the issue since then (more than 24 hours).

@mitkodi
I am still experiencing the issue even with InstancePerLifetimeScope
Version: v<IP_ADDRESS>
Here is how my registration looks:
var store = new SqlBotDataStore("BotDataContextConnectionString");
builder.Register(c => new CachingBotDataStore(store, CachingBotDataStoreConsistencyPolicy.ETagBasedConsistency))                 .As<IBotDataStore<BotData>>()                 .AsSelf()                 .InstancePerLifetimeScope();

@seca23 I don't wrap the SqlBotDataStore by CachingBotDataStore. I register only  SqlBotDataStore:
var store = new SqlBotDataStore(connectionString);
builder.Register(c => store)
    .Keyed<IBotDataStore<BotData>>(AzureModule.Key_DataStore)
    .AsSelf()
    //.SingleInstance();
    .InstancePerLifetimeScope();

@mitkodi, I see what you mean. Thanks, I will surely try it out and let you know if it resolves my problem. I am hopeful, thank you.

Not sure if this will help, but we are seeing the same issue while running automated tests. The same conversation will persist the DialogState key in private conversation data during one execution of the test, and will not persist the same key during another execution of the test. The behavior is empirically intermittent — we are not changing anything about the test between executions, but clearly the SDK is detecting some difference and following a different path.
Sample, incorrect private conversation data saved after processing a message during the test:
{
  "someKey": {}
}

Sample, correct private conversation data saved after processing the same message during a different execution of the same test:
 "someKey": {},
  "ResumptionContext": {
    "IsTrustedServiceUrl": true
  },
  "DialogState": "Big long string of serialized Dialog"
}

Looking a bit further, it also seems that the CachingBotStore invalidates the cache with every flush, but since we're running multiple instances of our Bot, that strategy is not going to work reliably without sticky sessions.

I've been playing with a dev deployment for a couple of days using <IP_ADDRESS>, using SqlBotDataStore (Instance PerLifetimeScope()) with no surrounding CachingBotDataStore. It appears to be stable so far, no occurrences of the issue.

Update: yesterday I observed behaviour matching this issue again, still using SqlBotDataStore on its own (no CachingBotDataStore.) Obviously I can't be 100% sure that the cause is the same, but the symptom is identical.
My RootDialog put a new child dialog on the stack, but then on replying to the first message from the child dialog, the bot acted as if the user was still in the MessageReceivedAsync loop of the RootDialog. That is to say, the new bot state ('now in child dialog') was not saved.
I didn't see any SQL Server dependency failures for this operation - had the internal 'bot state save' processing failed, I assume some kind of exception or trace would have be emitted?
If it helps, I've attached the ApplicationInsights timeline from the bot request. There appear to be more calls to login.botframework.com (and one to login.microsoftonline.com) than I'd expected.
In the meantime, back I go to 3.14.0 just in case.

Thank you, everyone, for your continued patience with this issue.  I finally have some good news.  We think we have identified the issue and will be testing a private release internally very soon.  We hope to have this out in the next release.  I will continue to keep you updated as I have information.

Nice one! Any hints while we're waiting Jason? Something to do with authentication timeout affecting the state save?

@oflahero @SenseVision @thschuetze @seca23 @VanjuliK @glasody @jamesmundy @tempel3 @peterbozso @delight-by @mitkodi @egracer
We believe this fix works, but there have already been instances of my testing being successful and others still reporting failures.   If anyone would like to test this before we release it to nuget you can find the packages here for 3.15.3 here.  Please let us know how this works out for you.  I will be actively monitoring this thread today.

@oflahero You can check out the PR here: https://github.com/Microsoft/BotBuilder/pull/4810

Thanks guys. If I'm reading it right, this fix will have no effect on a setup using SqlBotDataStore with no CachingBotDataStore?

@oflahero It shouldn't

@JasonSowers for me it works till now. I wrapped again  SqlBotDataStore (SingleInstance) by CachingBotDataStore (InstancePerLifetimeScope) and haven't faced the issue last three days.

@JasonSowers, I have also upgraded to 3.15.3 and everything seems to work fine.
I am also using the CachingBotDataStore with an on-premise SqlBotDataStore, and everything looks great.
Thanks a mil.

@oflahero you should no longer have the CachingBotDataStore disabled. In fact, we advise against it at this point.

@JasonSowers I just checked with the project I mentioned above and 3.15.3 seems to fix the issue for me completely.
Thanks for your work!

If anyone is still experiencing issues related to this, please open a new issue.  Thanks again to everyone for your help and patience.


Update zlib into CMakeLists.txt

Changes in 1.3 (18 Aug 2023)

Remove K&R function definitions and zlib2ansi
Fix bug in deflateBound() for level 0 and memLevel 9
Fix bug when gzungetc() is used immediately after gzopen()
Fix bug when using gzflush() with a very small buffer
Fix crash when gzsetparams() attempted for transparent write
Fix test/example.c to work with FORCE_STORED
Rewrite of zran in examples (see zran.c version history)
Fix minizip to allow it to open an empty zip file
Fix reading disk number start on zip64 files in minizip
Fix logic error in minizip argument processing
Add minizip testing to Makefile
Read multiple bytes instead of byte-by-byte in minizip unzip.c
Add memory sanitizer to configure (--memory)
Various portability improvements
Various documentation improvements
Various spelling and typo corrections

As a note, this version matches what is slated for noble: https://packages.ubuntu.com/noble/zlib1g-dev
CC: @marcoag

CI:

Linux
Linux-aarch64
Windows

https://github.com/Mergifyio backport jazzy


Add support for externalised attachments

🤔 What's changed?
This PR adds support for externalised attachment content.
Where an attachment message has a populated url field, the <Attachment/> component will now handle that accordingly depending on the media type. The specific variants are:

For binary/unknown attachments (including PDF etc), a download link will be shown pointing to the url
For image or video attachment, the url will populate the src attribute of the appropriate element
For text/JSON attachments, we'll attempt to fetch the content from the url and render it as normal

Also included are a general refactor of <Attachment/> internals to use a more React-y component structure, the addition of an error boundary to handle any errors that happen for a given attachment, and a simpler visual treatment for text/x.cucumber.log+plain attachments:

⚡ What's your motivation?
https://github.com/cucumber/html-formatter/issues/281#issuecomment-1899935418
🏷 What kind of change is this?

:zap: New feature (non-breaking change which adds new behaviour)

The next step after this will be to modify the HTML formatter implementation(s) to support externalising some kinds of attachment. I'll probably start with JS.
📋 Checklist:

[x] I agree to respect and uphold the Cucumber Community Code of Conduct
[x] I've changed the behaviour of the code

[x] I have added/updated tests to cover my changes.

[ ] My change requires a change to the documentation.

[ ] I have updated the documentation accordingly.

[x] Users should know about my change

[ ] I have added an entry to the "Unreleased" section of the CHANGELOG, linking to this pull request.

This text was originally generated from a template, then edited by hand. You can modify the template here.

What happens when resources can't be fetched?

Mmh. That error message isn't very helpful. I think it would be good to add some detail to ensure people don't come to us and ask us why their attachments can't be loaded.
For example, Jenkins is commonly used and has rather restrictive CORS settings. Unless configured correctly reports with attachments are always problematic.
So two scenarios that are important to be handled nicely.

Someone the html report from the file system. And the attachment files havei been removed. Is it clear that the attachment isn't there?

Someone loads the report from a server that can't or won't serve the files. Can we make it clear that the server didn't allow the request and possibly show the servers response (http code, responses body).


[3.0] code clean of MetadataService

code clean of MetadataService

Codecov Report

Merging #9393 (982944a) into 3.0 (437c1e9) will decrease coverage by 0.22%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##                3.0    #9393      +/-   ##
============================================
- Coverage     65.30%   65.08%   -0.23%
+ Complexity      342      339       -3
============================================
  Files          1202     1202
  Lines         51884    51947      +63
  Branches       7729     7690      -39
============================================
- Hits          33884    33809      -75
- Misses        14386    14477      +91
- Partials       3614     3661      +47

Impacted Files
Coverage Δ

.../org/apache/dubbo/metadata/ServiceNameMapping.java
100.00% <ø> (ø)

...apache/dubbo/metadata/WritableMetadataService.java
33.33% <ø> (ø)

...bbo/rpc/proxy/javassist/JavassistProxyFactory.java
26.92% <0.00%> (-73.08%)
:arrow_down:

...pache/dubbo/common/function/ThrowableFunction.java
71.42% <0.00%> (-28.58%)
:arrow_down:

...org/apache/dubbo/metadata/MappingChangedEvent.java
62.50% <0.00%> (-25.00%)
:arrow_down:

...ache/dubbo/remoting/api/NettyEventLoopFactory.java
61.53% <0.00%> (-23.08%)
:arrow_down:

.../remoting/api/SingleProtocolConnectionManager.java
61.53% <0.00%> (-23.08%)
:arrow_down:

...bo/rpc/cluster/support/FailbackClusterInvoker.java
59.37% <0.00%> (-14.07%)
:arrow_down:

...ache/dubbo/remoting/transport/AbstractChannel.java
75.00% <0.00%> (-12.50%)
:arrow_down:

...ian2/dubbo/AbstractHessian2FactoryInitializer.java
50.00% <0.00%> (-11.12%)
:arrow_down:

... and 41 more

Continue to review full report at Codecov.

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

Thanks. But sorry the code has been refactored in branch 3.0-meta-refactor


Prepare folder split to add new RP under Microsoft.RedHatOpenshift namespace

Move ARO to the subfolder to enable addition
of next rp.# ARM (Control Plane) API Specification Update Pull Request

[!TIP]
Overwhelmed by all this guidance? See the Getting help section at the bottom of this PR description.

[!NOTE]
As of January 2024 there is no PR assignee. This is expected. See https://aka.ms/azsdk/pr-arm-review.

PR review workflow diagram
Please understand this diagram before proceeding. It explains how to get your PR approved & merged.

Click here to see the details of Step 1, Breaking Changes review
If you are in purview of Step 1 of the diagram, follow the Breaking Changes review process.
IMPORTANT! This applies even if you believe your PR was mislabeled, for any reason, including tool failure.

Click here to see the details of Step 2, ARM review
See https://aka.ms/azsdk/pr-arm-review.

 Click here to see the diagram footnotes
Diagram footnotes
[1] See ARM review queue (for PR merge queues, see [2]).
[2] public repo merge queue, private repo merge queue (for ARM review queue, [1])
The ARM reviewer on-call engineer visits the merge queue twice a day, so the approximate ETA for merges is 12 - 24 hours.

Purpose of this PR
What's the purpose of this PR? Check the specific option that applies. This is mandatory!

[ ] New resource provider.
[ ] New API version for an existing resource provider. (If API spec is not defined in TypeSpec, the PR should have been generated using OpenAPI Hub).
[ ] Update existing version for a new feature. (This is applicable only when you are revising a private preview API version.)
[ ] Update existing version to fix OpenAPI spec quality issues in S360.
[x] Other, please clarify:

split the namespace folder in order to prepare the addition of the new RP under the same namespace
change is non breaking, only moving into subfolder

Due diligence checklist
To merge this PR, you must go through the following checklist and confirm you understood
and followed the instructions by checking all the boxes:

[x] I confirm this PR is modifying Azure Resource Manager (ARM) related specifications, and not data plane related specifications.
[x] I have reviewed following Resource Provider guidelines, including
ARM resource provider contract and
REST guidelines (estimated time: 4 hours).
I understand this is required before I can proceed to the diagram Step 2, "ARM API changes review", for this PR.

Additional information

 Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the Generated ApiView comment added to this PR. You can use ApiView to show API versions diff.

Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
suppressions guide to get approval.

Getting help

First, please carefully read through this PR description, from top to bottom. Please fill out the Purpose of this PR and Due diligence checklist.
To understand what you must do next to merge this PR, see the Next Steps to Merge comment. It will appear within few minutes of submitting this PR and will continue to be up-to-date with current PR state.
For guidance on fixing this PR CI check failures, see the hyperlinks provided in given failure
and https://aka.ms/ci-fix.
For help with PR workflow diagram Step 2 (ARM review), see https://aka.ms/azsdk/pr-arm-review.
If the PR CI checks appear to be stuck in queued state, please add a comment with contents /azp run.
This should result in a new comment denoting a PR validation pipeline has started and the checks should be updated after few minutes.
If the help provided by the previous points is not enough, post to https://aka.ms/azsdk/support/specreview-channel and link to this PR.

Hi @petrkotas I am only Python SDK owner and I am OK for this change. For other review support, please seek help in teams channel

Should the read me files be under RP folder instead of a subfolder ?

Could you check and fix the Typespec validation errors https://github.com/Azure/azure-rest-api-specs/pull/28599/checks?check_run_id=23483087627

Hi @ramoka178 I have checked them and cannot fix those. The errors are pointing out the openapi was not generated from typespec, which is correct. There openapi definitions belong to old service, which is not required to onboard typespec at this moment. We do plan to move though. We have item in the backlog for the migration to typespec. As I mentioned in my previous, comment these openapi files are not new, they are moved between folders.

Hi @ramoka178 I have checked them and cannot fix those. The errors are pointing out the openapi was not generated from typespec, which is correct. There openapi definitions belong to old service, which is not required to onboard typespec at this moment. We do plan to move though. We have item in the backlog for the migration to typespec. As I mentioned in my previous, comment these openapi files are not new, they are moved between folders.

Could you add a suppression in that case ? Roopesh Manda, Evan Hissey are managing the suppression approval. They can be reached once the suppression is added
https://eng.ms/docs/products/azure-developer-experience/design/specs-pr-guides/pr-suppressions#typespec-requirement-check

Hi @rkmanda or @MSEvanhi may I ask to help with accepting the suppression for typespec required on this PR? The ARO is a brownfield project that does not require typespec at this moment. We are aware of the future requirement and will move at some point. Thank you.

I've marked this ARMSignedOff as I assume there's no real reason it requires ARM review - nothing changing except paths right? @petrkotas

This is correct @TimLovellSmith. We are making room for another RP under the same namespace. The files did not change in reality, only moved and updated relative path to common-types.

Hi @TimLovellSmith may I ask you for help understanding the last event? I am confused as to why the label ArmSignedOff was removed from this PR, if I did not change. Thank you.

@petrokas sorry it was a tooling bug. I fixed it. Please follow:

https://github.com/Azure/azure-rest-api-specs/pull/28599#issuecomment-2039484706
aka.ms/azsdk/specreview/merge

/pr RequestMerge

Dear reviewer, is there anything I can do to help with merging? I see some checks are failing again, although they were passing just days ago. Like typespec Requirement, which I suppressed and it is now not working.

/azp run

@petrkotas - Please refresh to fix merge failures.

I have rebased but the error is persisting. I believe explicit approval must happen for typespec suppression.  I have reach out to Roopesh and Evan .


Improve error message for DriftRemoteException when wrapping SqliteException

Is your feature request related to a problem? Please describe.
Seeing the change in sqlite3 1.9.2 reminded me of a problem I come across when looking at DriftRemoteExceptions in Sentry - I often don't have parameters in the message.
I now update to sqlite3: 1.9.2 and there are still no parameters, probably since I don't use prepared statements in those cases?
Is it possible to add the parameters also for non-prepared statements?

Hmm the issue may actually belong in the sqlite3 repository :o
After looking at the code I also now realize, that it DriftRemoteException only wraps the SqliteException.toString() because it is send between isolates. So the main question is, can we have parameters in all cases?

that it DriftRemoteException only wraps the SqliteException.toString() because it is send between isolates

toString() should contain a representation of the parameters as well though. That said, it seems like serializing exceptions is not necessary anymore if the two isolates are in the same isolate group, so we can avoid the DriftRemoteException wrapper in lots of cases (18f3c2a933ce4fcebb2e3712ac10c0f147a6846c).

I often don't have parameters in the message

If there's a variable in the SQL query, we are always using prepared statements of some sort.
One thing that comes to mind is that we're not providing the parameters in the exception if the error happens while preparing the statement (before binding arguments) , mostly because we don't have that information at the place where the exception is thrown. I wonder if that could be the case, and whether drift should fill in the information in that case...

Hmm in my particular test I selected from a non-existent table. I basically just tried this from the example:
customSelect(
    'SELECT COUNT(*) AS c FROM todos WHERE category = ?',
    variables: [Variable.withInt(5)],
  )

Yeah, I think that explains why the parameters aren't shown: The exception doesn't happen when running the statement, but rather while preparing it.
Since the exception would happen regardless of the parameters, I don't think adding the parameters to the exception is that useful in that case. But I'll add some context to the exception message, so that it will say SqliteException(1): while preparing statement vs SqliteException(1): while executing statement <with args and parameters>, maybe that makes it clearer why an exception has happened (if it happened while preparing the statement, the actual parameter values couldn't have been part of the problem).


Launching Electron Forge with --experimental-modules

[x] I have read the contribution documentation for this project.
[x] I agree to follow the code of conduct that this project follows, as appropriate.
[x] I have searched the issue tracker for an issue that matches the one I want to file, without success.

Please describe your issue:
I'm trying to enable ES6 modules using electron-forge start -- --experimental-modules but I'm getting the following output:
error: unknown option `--experimental-modules'

I'm using Git Bash on Windows 10.

What version of Electron Forge are you using?

Also, what version of Electron are you using?

@malept
C:\Users\richi>node -v
v12.4.0

C:\Users\richi>npm -v
6.9.0

C:\Users\richi>yarn -v
1.16.0

C:\Users\richi>electron -v

 v5.0.5

C:\Users\richi>electron-forge --version
√ Checking your system
6.0.0-beta.39

What is the Electron version in your project? (See package.json)
On a related note: you should avoid installing Electron globally.

@malept It's on version v5.0.5.
Here's all the other packages I am using.

I think you're supposed to put --experimental-modules in the NODE_OPTIONS environment variable, but that doesn't work when you package the app.
If you want ES Module support, your best bet is esm with minimal changes.

Node.js 13.2.0 recently removed the --experimental-modules flag, making ES Modules enabled by default. 🎉
So we'll have it by default once Electron starts using Node 13.2.