text:
KubernetesDiscoveryClient  cause OutOfMemoryError

version
spring-cloud-kubernetes version:1.1.6.RELEASE
kubernetes on aliyun  1.18.8-aliyun.1
program arguments
-Xms1024m -Xmx2048m -XX:MaxDirectMemorySize=32m -Xss512k -Xtune:virtualized -XX:+HeapDumpOnOutOfMemoryError
heapDumpAnalyse

Can you please try and reproduce this with Spring Cloud 2021.0.2?

This problem occured in our production environment.It is not allowed to switch versions at will. Figure show the spring version

We no longer support Hoxton that is why I am asking to try and reproduce with a version we do support
https://spring.io/projects/spring-cloud-kubernetes#support

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

Closing due to lack of requested feedback. If you would like us to look at this issue, please provide the requested information and we will re-open the issue.

repo: spring-cloud/spring-cloud-kubernetes


text:
Eureka FreeMarker template error in AMI's column when running in AWS Fargate with private IP

I've successfully connected one of our microservices to Eureka using Fargate. Eureka is currently on an actual EC2 instance and microservices will be running from Fargate (hopefully Eureka too if I manage to get it to work). I have already got this running properly (or it seems as microservices connect to Eureka), with that said, I am getting a FreeMarker template error on the Eureka status page under the AMIs columns in "Instances currently registered with Eureka".
What I have done to achieve this Fargate to EC2 Eureka connection with private IP is the following. This dockerfile loads an entrypoint file which runs a shell script.
Dockerfile:
#############
### build ###
#############

# base image
FROM maven:3.6.2-ibmjava-8-alpine as build

# set working directory
WORKDIR /app

# install and cache app dependencies
COPY . /app
RUN mvn clean package

############
### prod ###
############

# base image
FROM openjdk:8-alpine

RUN apk add jq

# set working directory
WORKDIR /app

# copy entrypoint from the 'build environment'
COPY --from=build /app/entrypoint.sh /app/entrypoint.sh

# copy artifact build from the 'build environment'
COPY --from=build /app/target/user-service-0.0.1-SNAPSHOT.jar /app/user-service-0.0.1-SNAPSHOT.jar

# expose port 8081
EXPOSE 8081

# run entrypoint
ENTRYPOINT ["/bin/sh", "./entrypoint.sh"]

This entrypoint shell script saves the private IP from the Fargate metadata endpoint into the shell session.
entrypoint.sh:
#!/bin/sh
export FARGATE_IP=$(wget -q -O - http://169.254.170.2/v2/metadata | jq -r .Containers[0].Networks[0].IPv4Addresses[0])
echo $FARGATE_IP
java -jar user-service-0.0.1-SNAPSHOT.jar

The application property file loads the Fargate private IP so the microservice connects successfully.
application-aws.properties
eureka.client.region=us-east-1
eureka.client.use-dns-for-fetching-service-urls=true
eureka.client.eureka-server-u-r-l-context=eureka
eureka.client.eureka-server-d-n-s-name=eureka.domain.com
eureka.client.eureka-server-port=8761
eureka.instance.prefer-ip-address=true
eureka.instance.ip-address=${FARGATE_IP}
eureka.instance.non-secure-port=8081

This is the error I receive on the Eureka page under the AMIs column even though the services seem to work. Any ideas?
FreeMarker template error (DEBUG mode; use RETHROW in production!):
The following has evaluated to null or missing: ==> amiCount.key [in template "eureka/status.ftl" at line 35, column 26]
---- Tip: It's the step after the last dot that caused this error, not those before it.
---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ----
---- FTL stack trace ("~" means nesting-related): - Failed at: ${amiCount.key} [in template "eureka/status.ftl" at line 35, column 24] ---- Java stack trace (for programmers):
---- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]
 at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134)
 at freemarker.core.EvalUtil.coerceModelToTextualCommon(EvalUtil.java:467)
 at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:389)
 at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:358)
 at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100)
 at freemarker.core.DollarVariable.accept(DollarVariable.java:63)
 at freemarker.core.Environment.visit(Environment.java:366)
 at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:317)
 at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
 at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:242)
 at freemarker.core.Environment.visitIteratorBlock(Environment.java:642)
 at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:107)
 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:93)
 at freemarker.core.Environment.visit(Environment.java:366)
 at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:317)
 at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
 at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:242)
 at freemarker.core.Environment.visitIteratorBlock(Environment.java:642)
 at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:107)
 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:93)
 at freemarker.core.Environment.visit(Environment.java:330)
 at freemarker.core.Environment.visit(Environment.java:336)
 at freemarker.core.Environment.visit(Environment.java:336)
 at freemarker.core.Environment.process(Environment.java:309)
 at freemarker.template.Template.process(Template.java:384)
 at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:389)
 at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:302)
 at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:253)
 at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:178)
 at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316)
 at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1371)
 at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1117)
 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1056)
 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
 at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
 at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:88)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:114)
 at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:104)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.lang.Thread.run(Thread.java:748)

I'm not sure why amiCount isn't populated, but it would probably be as simple as providing a default.

Is there a simple way of doing that without modifying source code? To temporarily show the connected micro-services properly.

Not that I know of. You could copy the template into your local app's src/main/resources/templates/eureka/status.ftlh and it should find that first.

Is there any elegant solution for this by now?

+1 facing same issue when deployed service on kubernetes

+1 same here. It is happening randomly

any update on this?

no, there isn't

source: gharchive/issue

authors: amit-github-personal fwuen lucasdall lucasobsidiam rohitkrishna-marneni spencergibb

repo: spring-cloud/spring-cloud-netflix

license_type: permissive

license_source: bigquery


text:
Can i use json string in get method for feign?

curl xxxx?user={username:x,age:11}

@RequestMapping(value = UserConstants.USERS_PATH, method = RequestMethod.GET)
  UserEntity get(@RequestBody UserEntity user);

I don't think so (you can't send a body with a GET).

authors: Dreampie dsyer


text:
Implement semaphore synchronization to prevent concurrent modificatio…issue#4094

…ns of InstanceStatus
Implement semaphore synchronization to prevent concurrent modifications of InstanceStatus

Added a Semaphore to control concurrent access to InstanceStatus modifications.
Modified EurekaClientConfigurationRefresher to acquire the semaphore before performing deregister and register operations.
Modified DiscoveryClientConfiguration to acquire the semaphore before performing refreshInstanceInfo operations.
Ensured the semaphore is released in a finally block to handle exceptions properly.

This change addresses the issue of concurrent modifications of InstanceStatus, ensuring that only one thread can modify the status at a time.

Fixes gh-4094.

Please mark your PR as "draft" until it's ready for review.

Since the comments were not address, I'm going to work on the issue.

source: gharchive/pull-request

authors: OlgaMaciaszek bazzop


text:
Reintroduce BinderHeaderMapper

There are test failures - only issued the PR for the review.
Provide a  custom header mapper that is identical to the DefaultKafkaHeaderMapper in Spring Kafka.
This is to address some interoperability issues between Spring Cloud Stream 3.0.x and 2.x apps,
where mime types in the header are not de-serialized properly. This custom BinderHeaderMapper
will be eventually deprecated and removed once the fixes are in Spring Kafka.
Resolves #796

Isn't there any CI associated with PRs?
How can we be sure that this is alright?
Thanks

@artembilan All the header mapper related tests pass for me.

LGTM with @artembilan 's suggestions.

authors: artembilan garyrussell sobychacko

license_source: github-api


text:
XD-3534 Add HDFS Dataset sink module

Ported existing Spring XD hdfs-dataset sink module

I have some issues with idleTimeout and fsUri:
Running local hdfs://localhost:8020 and I simply build the module locally and registered module with:
module register --coordinates org.springframework.cloud.stream.module:hdfs-dataset-sink:jar:exec:1.0.0.BUILD-SNAPSHOT --name hdfs-dataset-sink --type sink

idleTimeout defaults to 0 so it seems that every single write creates a new dataset so I'm getting new avro file every 2 seconds. Being honest I don't remember if XD dataset sink behaves like this. I'd expect idleTimeout=0 to disable flushing and thus simply falling back to batchSize when new avro file is created.
stream create --name "ticktock" --definition "time --fixedDelay=2|hdfs-dataset" --deploy

drwxr-xr-x   - root supergroup          0 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data
drwxr-xr-x   - root supergroup          0 2015-11-05 07:43 /tmp/hdfs-dataset-sink/data/string
drwxr-xr-x   - root supergroup          0 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/.metadata
-rw-r--r--   3 root supergroup        173 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/.metadata/descriptor.properties
-rw-r--r--   3 root supergroup          8 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/.metadata/schema.avsc
drwxr-xr-x   - root supergroup          0 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/.metadata/schemas
-rw-r--r--   3 root supergroup          8 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/.metadata/schemas/1.avsc
-rw-r--r--   3 root supergroup        105 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/0142625d-86f4-4034-be0a-a223ca78fdba.avro
-rw-r--r--   3 root supergroup        105 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/040ce3e4-46c0-4602-a8a7-f8c2f48fb6ea.avro
-rw-r--r--   3 root supergroup        105 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/041535af-c176-438f-8744-ad53c15a9c00.avro
-rw-r--r--   3 root supergroup        116 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/1c38c57d-ac86-4140-819d-0f648f9dc84c.avro
-rw-r--r--   3 root supergroup        105 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/294c5fa0-ebb5-403d-96aa-2a76cf0f01a5.avro
-rw-r--r--   3 root supergroup        105 2015-11-05 07:42 /tmp/hdfs-dataset-sink/data/string/2c0dbc08-e98e-4286-bc37-67d67017e038.avro

Tried to use 20sec idleTimeout but then it waits default batchSize 10000 so didn't get any writes. Expected and didn't want to wait batch to reach its size.
stream create --name "ticktock" --definition "time --fixedDelay=2|hdfs-dataset --idleTimeout=20000" --deploy

With batchSize=10 I get 3 avro files per minute which is expected if idleTimeout is more that 2 sec.
stream create --name "ticktock" --definition "time --fixedDelay=2|hdfs-dataset --idleTimeout=20000 --batchSize=10" --deploy

I don't see fsUri used anywhere in DatasetSinkConfiguration. It seem to use auto-config for Configuration which defaults to hdfs://localhost:8020. So expected stream writes to fail if giving spoofed fsUri. Files were still written under custom location.
stream create --name "ticktock" --definition "time --fixedDelay=2|hdfs-dataset --fsUri=hdfs://localhost:12345 --directory=/tmp/hdfs-dataset-sink-custom" --deploy

root@neo:/usr/local/hadoops# hadoop/bin/hdfs dfs -ls /tmp
Found 2 items
drwxrwxrwx   - root supergroup          0 2015-09-02 08:36 /tmp/hadoop-yarn
drwxr-xr-x   - root supergroup          0 2015-11-05 08:11 /tmp/hdfs-dataset-sink-custom
root@neo:/usr/local/hadoops# hadoop/bin/hdfs dfs -ls -R /tmp/hdfs-dataset-sink-custom
drwxr-xr-x   - root supergroup          0 2015-11-05 08:11 /tmp/hdfs-dataset-sink-custom/data
drwxr-xr-x   - root supergroup          0 2015-11-05 08:11 /tmp/hdfs-dataset-sink-custom/data/string
drwxr-xr-x   - root supergroup          0 2015-11-05 08:11 /tmp/hdfs-dataset-sink-custom/data/string/.metadata
-rw-r--r--   3 root supergroup        180 2015-11-05 08:11 /tmp/hdfs-dataset-sink-custom/data/string/.metadata/descriptor.properties
-rw-r--r--   3 root supergroup          8 2015-11-05 08:11 /tmp/hdfs-dataset-sink-custom/data/string/.metadata/schema.avsc
drwxr-xr-x   - root supergroup          0 2015-11-05 08:11 /tmp/hdfs-dataset-sink-custom/data/string/.metadata/schemas
-rw-r--r--   3 root supergroup          8 2015-11-05 08:11 /tmp/hdfs-dataset-sink-custom/data/string/.metadata/schemas/1.avsc
-rw-r--r--   3 root supergroup        110 2015-11-05 08:11 /tmp/hdfs-dataset-sink-custom/data/string/0274cc54-572b-4809-b11f-ab8e18ceafa6.avro
-rw-r--r--   3 root supergroup        105 2015-11-05 08:11 /tmp/hdfs-dataset-sink-custom/data/string/033fc459-21ff-4763-84a0-2b48f8e27980.avro

Yes, I'm seeing same java.io.IOException: Filesystem closed error. Trying to figure out where it's coming from, in case it's not caused by shutdown hook.

Interesting, it seems that I don't get Filesystem closed error if I do:
stream create --name "ticktock" --definition "time|hdfs-dataset --batchSize=20" --deploy

and wait first file to be written.
If I do:
stream create --name "ticktock" --definition "time|hdfs-dataset" --deploy

there's no files written(if I don't wait full default batch size) and I get error.
It's worth to check if we get this error only if no data is flushed, thus no interaction with kite, thus there would not be any existing open hadoop FileSystem's.

damn, I take it back. This error doesn't happen every stream undeploy.

Right, it has to be FileSystem autoclose which is i.e. called from shutdown hook. I don't see errors if I disable autoclose with:
stream create --name "ticktock" --definition "time|hdfs-dataset --spring.hadoop.config.fs.automatic.close=false" --deploy

Rebased

squashed and merged per https://github.com/spring-cloud/spring-cloud-stream-modules/commit/3181e73a8e3e737844e9f249bcdd76043cf03eba

authors: jvalkeal trisberg


text:
Messages are not routed to the queue from Topic Exchange

I am trying to move my plain Spring Boot RabbitMQ application to Spring Cloud Stream hence in the broker side I already created Topic Exchange and bind the same exchange to a Queue with a Routing Key as part of the application thus reusing the same infrastructure over again. Details of the RabbitMQ setup steps are given in the below readme file:
https://github.com/purbarunc/Spring-Boot-RabbitMQ?tab=readme-ov-file#spring-boot-rabbitmq
I am using StreamBridge to publish the message to the Topic Exchange "Order_Exchange" using the below code:
streamBridge.send("Order_Exchange", orderMessage);
Messages seems to be published to the Exchange successfully since I see some spike in the dashboard as below:

But, messages are getting dropped and not getting routed to the already existing queue. I am suspecting this to the absence or misconfiguration of the routing key while publishing the message. I added the below property to my application.property file but still no luck.
spring.cloud.stream.rabbit.bindings.output.producer.bindingRoutingKey='rabbitOrderPub'
I looked into Stack overflow with the tag "spring-cloud-stream" and also in the documentation but I dont find anything similar.
Can anyone help me to understand what going wrong or I am missing some additional configuration. Code is available in the below Github link:
https://github.com/purbarunc/Spring-Cloud-Stream-RabbitMQ/tree/main/scs-rabbitmq-pub

The issue is with the word output in spring.cloud.stream.rabbit.bindings.output.producer.bindingRoutingKey...... That segment refers to an actual binding which in your case would be the same as exchange name, so tryspring.cloud.stream.rabbit.bindings.Order_Exchange.producer.bindingRoutingKey.....

@olegz Change done as mentioned:
https://github.com/purbarunc/Spring-Cloud-Stream-RabbitMQ/commit/c53d4aad69ddccf6724380d6bb8f7ba994fdb526
But the message is still unroutable/drop. Find the below screenshot as below from the dashboard:

Let me try and i'll get back to you by tomorrow. I'll also update the docs

Let me ask you a question.
Is your intention to provide routing through the application? I mean you can manually create exchange, queue and bind them together at the Rabbit level and then  simply send a message to the exchange. Just trying to get a a better feel for yoru use case

In any event, here is what I believe you are currently need to satisfy your scenario where I assume the queue exists but exchange does not and your want to dynamically bind the exchange to the queue and successfully receive a message.
So assuming my-queue exists, here are the three properties you need to provide.
"--spring.cloud.stream.rabbit.bindings.Order_Exchange.producer.binding-routing-key=my-queue",
"--spring.cloud.stream.rabbit.bindings.Order_Exchange.producer.routingKey=my-queue",
"--spring.cloud.stream.bindings.Order_Exchange.producer.required-groups=my-queue"

You can also make it more dynamic by using routing-key-expression for cases where you have multiple routings from the exchange
--spring.cloud.stream.rabbit.bindings.Order_Exchange.producer.routing-key-expression=headers.route
. . .
streamBridge.send("Order_Exchange", MessageBuilder.withPayload("hello").setHeader("route", "my-queue").build());

Let me ask you a question. Is your intention to provide routing through the application? I mean you can manually create exchange, queue and bind them together at the Rabbit level and then simply send a message to the exchange. Just trying to get a a better feel for yoru use case

Yes, exactly thats what I was trying to do, since I have already configured exchange,queue at Rabbit Level. But to do that I need to configure the routing key properly in my application code somewhere then only it will be routed to the queue I believe..which is kind of not working in my case.

Try what I posted above. Also if you (as you said) have already configured exchange,queue at Rabbit Level. you can also configure binding there as well. So the real question is if you need some dynamic routing or is it more/less static

In any event, here is what I believe you are currently need to satisfy your scenario where I assume the queue exists but exchange does not and your want to dynamically bind the exchange to the queue and successfully receive a message. So assuming my-queue exists, here are the three properties you need to provide.
"--spring.cloud.stream.rabbit.bindings.Order_Exchange.producer.binding-routing-key=my-queue",
"--spring.cloud.stream.rabbit.bindings.Order_Exchange.producer.routingKey=my-queue",
"--spring.cloud.stream.bindings.Order_Exchange.producer.required-groups=my-queue"

Exchange also exists. Find the below screenshots from my Rabbit Dashboard:

spring.cloud.stream.rabbit.bindings.Order_Exchange.producer.routingKey=rabbitOrderPub
With this its seems to be working..

Its working with the above configuration. I was missing the right one. Thanks for the help! Good to close the issue.

authors: olegz purbarunc

repo: spring-cloud/spring-cloud-stream


text:
Refactor AbstractMessageChannelBinder

As a developer, I'd like to refactor createProducerMessageHandler() and createConsumerMessageHandler() APIs. The goal is to simplify the binder specific extensions.

Closed via https://github.com/spring-cloud/spring-cloud-stream/commit/c194ae720f21249831eb99b850cd8f3fb4c0e830

authors: mbogoevici sabbyanandan


text:
issues about zookeeper and spring cloud config

Thanks for raising a Spring Cloud issue. What sort of issue are you raising?
Question
a bug with spring zookeeper and spring cloud config
Bug report
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-04-17 10:15:57.657 ERROR 6508 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   :

APPLICATION FAILED TO START

Description:
The bean 'zookeeperDiscoveryProperties', defined in class path resource [org/springframework/cloud/zookeeper/discovery/configclient/ZookeeperDiscoveryClientConfigServiceBootstrapConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/cloud/zookeeper/discovery/ZookeeperDiscoveryAutoConfiguration.class] and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
2019-04-17 10:15:57.660 ERROR 6508 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed
Enhancement
spring:
application:
name: config-server
cloud:
config:
name: bus
enabled: false
discovery:
enabled: true
service-id: ${spring.application.name}
server:
git:
search-paths:
- microservice
- apps
uri:
username:
password:
zookeeper:
enabled: true
connect-string:
discovery:
enabled: true
register: true
instance-id: ${spring.application.name}

Please supply the versions of spring boot and cloud that you are using.

Please supply the versions of spring boot and cloud that you are using.

my zookeeper version is 3.4.14
pom.xml

org.springframework.boot
spring-boot-starter-parent
2.2.0.M1

org.springframework.cloud
spring-cloud-starter-zookeeper-discovery

org.apache.zookeeper
zookeeper

org.apache.zookeeper
zookeeper
3.4.14

org.slf4j
slf4j-log4j12

Please supply the versions of spring boot and cloud that you are using.
<parent> 		<groupId>org.springframework.boot</groupId> 		<artifactId>spring-boot-starter-parent</artifactId> 		<version>2.2.0.M1</version> 		<relativePath/> <!-- lookup parent from repository --> 	</parent>
<dependency> 		    <groupId>org.springframework.cloud</groupId> 		    <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> 		    <exclusions> 				<exclusion> 				  <groupId>org.apache.zookeeper</groupId> 				  <artifactId>zookeeper</artifactId> 				</exclusion> 		    </exclusions> 		</dependency> 		<dependency> 			<groupId>org.apache.zookeeper</groupId> 			<artifactId>zookeeper</artifactId> 			<version>3.4.14</version> 			<exclusions> 				<exclusion> 					<groupId>org.slf4j</groupId> 					<artifactId>slf4j-log4j12</artifactId> 				</exclusion> 			</exclusions> 		</dependency>

Unless you are using snapshots of spring cloud Hoxton (which I don't know since you didn't supply them), it is not compatible with boot 2.2.x

Unless you are using snapshots of spring cloud Hoxton (which I don't know since you didn't supply them), it is not compatible with boot 2.2.x

when i use spring cloud zookeeper config , it dont have config properties promote in bootstrap.yml
spring cloud zookeeper config center
       config:         enabled: true         root: configuration         defaultContext: apps         profileSeparator: '::'

authors: hongdaliu spencergibb

repo: spring-cloud/spring-cloud-zookeeper


text:
fix(release-pipes): get the release pipelines working properly

Change the release pipelines to use the release stepTemplate & add the next-version step
Add a standard release pipeline that promotes the changelog

/override pr
Why are you still here?

repo: spring-financial-group/Dockerfiles

license: MIT


text:
Remove unused CI files

The file test/run.sh is no longer required. This file and the test directory can be deleted.
The file was originally used for Jenkins CI. Now that this project has been converted to GitHub Actions, this file can be removed.

Closed with PR #68.

repo: spring-guides/gs-accessing-data-jpa


text:
Support for embedding search with metadata filter expressions

Extend the VectorStore with similaritySearch with filters method. It is a default implementation that throws an exception for stores that didn't implement it.
The filters argument is String and vector store type specific.
Implement the filters for the PineconeVectorStore using the pinecone metadata filters expressions.
Implement the filters for the PGVector store using the JsonPath expressions on the metadata jsonb column.

Resolves: #75

Let's add a portable Query/Criteria based API for common operations similar to what is done in Spring Data MongoDB. The search with a String can be used in the case the Query/Criteria based API is not sufficient for users need and they want to pass in a vendor specific query.

Agree @markpollack , working on it.

Resolved with: 3615667f054f9531c63862f37b7313d0204fcbf7

authors: markpollack tzolov

repo: spring-projects-experimental/spring-ai


text:
Support for Re-ranking Retrieval Optimization in Advanced RAG

I want to add a re-ranking feature in RAG but have encountered some issues that need improvement.
Initially, I planned to add an Advisor for handling re-ranking after QuestionAnswerAdvisor, but I checked that QuestionAnswerAdvisor already adds the search results context to .withUserParams(advisedUserParams) in the code.
Although a subsequent Advisor can override the UserParams, when using a re-ranking model, the process typically involves vector search to retrieve 50-100 chunks, followed by re-ranking. If all these results are added to UserParams, it would waste both time and memory, even though the later Advisor can override them.
I hope the RAG-related Advisors can be improved in the following ways:

Retrieve the document contents and attach them to UserParams only after all Advisors have completed processing.
Add support for a re-ranking model, which is a common retrieval optimization technique.
Typically, a re-ranking model only returns the index and similarity scores. However, it would be ideal if the re-ranking process still returns a List<Documents> containing the metadata.

Below is the code I have modified.
public class RerankRAGAdvisor implements RequestResponseAdvisor {
	private static final String DEFAULT_USER_TEXT_ADVISE = """
			Context information is below.
			---------------------
			{question_answer_context}
			---------------------
			Given the context and provided history information and not prior knowledge,
			reply to the user comment. If the answer is not in the context, inform
			the user that you can't answer the question.
			""";
	private final VectorStore vectorStore;
	private final String userTextAdvise;
	private final SearchRequest searchRequest;
	public static final String RETRIEVED_DOCUMENTS = "qa_retrieved_documents";
	public static final String FILTER_EXPRESSION = "qa_filter_expression";
	private final RestClient restClient;
	private String apiKey= System.getenv("VOYAGE_KEY");
	// Re-ranking API return data
	@JsonInclude(Include.NON_NULL)
	public record RerankList(
			@JsonProperty("object") String object,
			@JsonProperty("data") List<Rerank> data,
			@JsonProperty("model") String model,
			@JsonProperty("usage") Usage usage) {
	}
	@JsonInclude(Include.NON_NULL)
	public record Rerank(
			@JsonProperty("index") Integer index,
			@JsonProperty("relevance_score") float relevanceScore,
			@JsonProperty("document") String document) {
	}

	//Re-ranking API
	public ResponseEntity<RerankList> rerankDocuments(String query, List<Document> documents) {
        String url = "https://api.voyageai.com/v1/rerank";
        String bearerStr = "Bearer "+this.apiKey;
        Map<String, Object> requestBody = new HashMap<>();
        requestBody.put("query", query);
        requestBody.put("model", "rerank-1");
        requestBody.put("top_k", 5);
        requestBody.put("return_documents",true);
        requestBody.put("documents", documents.stream().map(Document::getContent).toList());

        return restClient.post()
            .uri(url)
            .contentType(MediaType.APPLICATION_JSON)
            .header("Authorization",bearerStr)
            .body(requestBody)
            .retrieve()
            .toEntity(new ParameterizedTypeReference<>() {
			});
    }
	public RerankRAGAdvisor(RestClient restClient, VectorStore vectorStore) {
		this(restClient, vectorStore, SearchRequest.defaults(), DEFAULT_USER_TEXT_ADVISE);
	}
	public RerankRAGAdvisor(RestClient restClient, VectorStore vectorStore, SearchRequest searchRequest) {
		this(restClient, vectorStore, searchRequest, DEFAULT_USER_TEXT_ADVISE);
	}
	public RerankRAGAdvisor(RestClient restClient, VectorStore vectorStore, SearchRequest searchRequest, String userTextAdvise) {
		Assert.notNull(restClient, "The restClient must not be null!");
		Assert.notNull(vectorStore, "The vectorStore must not be null!");
		Assert.notNull(searchRequest, "The searchRequest must not be null!");
		Assert.hasText(userTextAdvise, "The userTextAdvise must not be empty!");

		this.restClient = restClient;
		this.vectorStore = vectorStore;
		this.searchRequest = searchRequest;
		this.userTextAdvise = userTextAdvise;
	}
	@Override
	public AdvisedRequest adviseRequest(AdvisedRequest request, Map<String, Object> context) {
		// 1. Advise the system text.
		String advisedUserText = request.userText() + System.lineSeparator() + this.userTextAdvise;
		var searchRequestToUse = SearchRequest.from(this.searchRequest)
			.withQuery(request.userText())
			.withTopK(100)
			.withFilterExpression(doGetFilterExpression(context));
		// 2. Search for similar documents in the vector store.
		List<Document> documents = this.vectorStore.similaritySearch(searchRequestToUse);
		// 3. Re-ranking
		List<Rerank> rerankDocs = rerankDocuments(request.userText(), documents).getBody().data();
		context.put(RETRIEVED_DOCUMENTS, rerankDocs);
		// 4. Create the context from the documents.
		String documentContext = rerankDocs.stream()
			.map(Rerank::document)
			.collect(Collectors.joining(System.lineSeparator()));
		// 5. Advise the user parameters.
		Map<String, Object> advisedUserParams = new HashMap<>(request.userParams());
		advisedUserParams.put("question_answer_context", documentContext);
		AdvisedRequest advisedRequest = AdvisedRequest.from(request)
			.withUserText(advisedUserText)
			.withUserParams(advisedUserParams)
			.build();
		return advisedRequest;
	}
	@Override
	public ChatResponse adviseResponse(ChatResponse response, Map<String, Object> context) {
		ChatResponse.Builder chatResponseBuilder = ChatResponse.builder().from(response);
		chatResponseBuilder.withMetadata(RETRIEVED_DOCUMENTS, context.get(RETRIEVED_DOCUMENTS));
		return chatResponseBuilder.build();
	}
	@Override
	public Flux<ChatResponse> adviseResponse(Flux<ChatResponse> fluxResponse, Map<String, Object> context) {
		return fluxResponse.map(cr -> {
			ChatResponse.Builder chatResponseBuilder = ChatResponse.builder().from(cr);
			chatResponseBuilder.withMetadata(RETRIEVED_DOCUMENTS, context.get(RETRIEVED_DOCUMENTS));
			return chatResponseBuilder.build();
		});
	}
	protected Filter.Expression doGetFilterExpression(Map<String, Object> context) {
		if (!context.containsKey(FILTER_EXPRESSION)
				|| !StringUtils.hasText(context.get(FILTER_EXPRESSION).toString())) {
			return this.searchRequest.getFilterExpression();
		}
		return new FilterExpressionTextParser().parse(context.get(FILTER_EXPRESSION).toString());
	}
}

I'm currently working on this as part of the Modular RAG features. Tracking the status in https://github.com/spring-projects/spring-ai/issues/1811

@ThomasVitale In this issue https://github.com/spring-projects/spring-ai/issues/1811 this will be an abstraction to support also other platforms like watsonx? I was planning to raise an enhancement to add the Text Rerank capability of watsonx

authors: ThomasVitale kevintsai1202 rjtmahinay

repo: spring-projects/spring-ai


text:
update  samples  module

the  code  of the samples  module  has been older and  many  api it's used has  removed  in  lasted  version .

@stepjacky

the code of the samples module

Are you referring to the project samples ?

sorry ,I found , the flowing bolded api is in 1.1.0-snapshot ,while i use the stable version 1.0.1
                RegisteredClient registeredClient = null;
			registeredClient.**postLogoutRedirectUri("http://127.0.0.1:8080/logged-out")**
			.build();

authors: jgrandja stepjacky


text:
INTEXT-217: Cleanup KafkaProducerContext.beanName

JIRA: https://jira.spring.io/browse/INTEXT-217
The KafkaProducerMessageHandlerSpec provides an internal KafkaProducerContext for the bean registration.
The KafkaProducerContext is NamedComponent and we don't generate beanName for it because its value is not_specified by default.
That causes the duplicate bean issue in case of several  Kafka.outboundChannelAdapter()

Clean the KafkaProducerContext.beanName in the KafkaProducerMessageHandlerSpec to allow IntegrationFlowBeanPostProcessor to generate
an unique beanName for each KafkaProducerContext bean definition.

Merged as a317e688de96479e69eb0e3227a048ea0d19234c

authors: artembilan garyrussell


text:
@KafkaListener groupId property is not working

@KafkaListener(id="consumer1" ,idIsGroup = false, groupId="myGroup",
topicPartitions ={@TopicPartition(topic="myTopic", partitions={"0"})})
@KafkaListener(id="consumer2", idIsGroup = false, groupId="myGroup" ,
topicPartitions ={@TopicPartition(topic="myTopic", partitions={"0"})})

I configured 2 consumers in one group,  i found consumer1 and consumer2 both reading the message. please tell me how could i get the message consumed just once in the group.
i found the  2 consumers have the same offset value in my console log, that confused me.
whether  using spring-boot 2.1.5.RELEASE or spring-boot 1.5.3.RELEASE & spring-kafka 1.3.10.RELEASE has the same problem.

GitHub issues are not for asking questions about why something is not working the way you expect; they are for reporting bugs and asking for new features.
When you manually assign topics and partitions with @TopicPartition, you are NOT using group management, you are explicitly  saying you want to receive all records in that partition.
use topics = "myTopic" instead and Kafka will allocate partitions to the instances.

I'm sorry. i will use issues funciton  in right way. thank you very much

This is just an Apache Kafka feature: when you assign partitions manually to your consumers, they are not involved in group management: https://kafka.apache.org/documentation/#intro_consumers
So, what you have with your configuration is expected behavior.
Therefore closing as Works as Designed.

authors: artembilan garyrussell theanswer0815

repo: spring-projects/spring-kafka


text:
When SpringBoot kafka enables jaas, ‘Caused by: org.apache.kafka.common.KafkaException: javax.security.auth.login.LoginException: unable to find LoginModule class: org.apache.kafka.common.security.plain.PlainLoginModule’

In what version(s) of Spring for Apache Kafka are you seeing this issue?
  <groupId>org.springframework.kafka</groupId>
  <artifactId>spring-kafka</artifactId>
  <version>2.2.4.RELEASE</version>

Describe the bug
I have enabled spring-kafka in lower version of springboot (2.1.3), below is my configuration
spring:
  kafka:
    ###########【Kafka集群】###########
    bootstrap-servers:
    jaas:
      enabled: true
      loginModule: org.apache.kafka.common.security.plain.PlainLoginModule
      options:
        username:
        password:
    properties:
      security.protocol: SASL_PLAINTEXT
      sasl.mechanism: PLAIN
    producer:
      retries: 3 # 重试次数
      acks: all # 应答级别:多少个分区副本备份完成时向生产者发送ack确认(可选0、1、all/-1)
      batch-size: 16384 # 批量大小
      buffer-memory: 33554432 # 生产端缓冲区大小
      # Kafka提供的序列化和反序列化类
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: MyGroup1
      enable-auto-commit: false
      auto-commit-interval: 1000
      auto-offset-reset: latest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      max-poll-records: 50

I need to use jaas to authenticate, encrypt and protect the sending of my spring-kafka data, but I got this error after calling kafkaTemplate

2023-05-23 19:04:43 [arthas-command-execute] WARN  c.t.a.c.c.m.TimeTunnelCommand -tt failed.
com.taobao.arthas.core.command.express.ExpressException: ognl.MethodFailedException: Method "doctorAuditIdCard" failed for object cn.mwcare.doctorplus.boss.sync.impl.DefaultSendKafkaMessageService@210c4071 [org.apache.kafka.common.KafkaException: Failed to construct kafka producer]
        at com.taobao.arthas.core.command.express.OgnlExpress.get(OgnlExpress.java:43)
        at com.taobao.arthas.core.command.monitor200.TimeTunnelCommand.processWatch(TimeTunnelCommand.java:370)
        at com.taobao.arthas.core.command.monitor200.TimeTunnelCommand.process(TimeTunnelCommand.java:297)
        at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82)
        at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18)
        at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111)
        at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108)
        at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:385)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: ognl.MethodFailedException: Method "doctorAuditIdCard" failed for object cn.mwcare.doctorplus.boss.sync.impl.DefaultSendKafkaMessageService@210c4071
        at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1556)
        at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
        at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1620)
        at ognl.ASTMethod.getValueBody(ASTMethod.java:91)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
        at ognl.SimpleNode.getValue(SimpleNode.java:258)
        at ognl.ASTChain.getValueBody(ASTChain.java:141)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
        at ognl.SimpleNode.getValue(SimpleNode.java:258)
        at ognl.Ognl.getValue(Ognl.java:470)
        at ognl.Ognl.getValue(Ognl.java:572)
        at ognl.Ognl.getValue(Ognl.java:542)
        at com.taobao.arthas.core.command.express.OgnlExpress.get(OgnlExpress.java:40)
        ... 14 common frames omitted
Caused by: org.apache.kafka.common.KafkaException: Failed to construct kafka producer
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:457)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:289)
        at org.springframework.kafka.core.DefaultKafkaProducerFactory.createKafkaProducer(DefaultKafkaProducerFactory.java:318)
        at org.springframework.kafka.core.DefaultKafkaProducerFactory.createProducer(DefaultKafkaProducerFactory.java:305)
        at org.springframework.kafka.core.DefaultKafkaProducerFactory$$FastClassBySpringCGLIB$$6502e513.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)
        at org.springframework.cloud.sleuth.instrument.messaging.SleuthKafkaAspect.wrapProducerFactory(TraceMessagingAutoConfiguration.java:240)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
        at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
        at org.springframework.kafka.core.DefaultKafkaProducerFactory$$EnhancerBySpringCGLIB$$265da808.createProducer(<generated>)
        at org.springframework.kafka.core.KafkaTemplate.getTheProducer(KafkaTemplate.java:437)
        at org.springframework.kafka.core.KafkaTemplate.doSend(KafkaTemplate.java:367)
        at org.springframework.kafka.core.KafkaTemplate.send(KafkaTemplate.java:190)
        at cn.mwcare.doctorplus.boss.sync.impl.DefaultSendKafkaMessageService.sendMessageQueue(DefaultSendKafkaMessageService.java:228)
        at cn.mwcare.doctorplus.boss.sync.impl.DefaultSendKafkaMessageService.doctorAuditIdCard(DefaultSendKafkaMessageService.java:87)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:899)
        at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1544)
        ... 26 common frames omitted
Caused by: org.apache.kafka.common.KafkaException: javax.security.auth.login.LoginException: unable to find LoginModule class: org.apache.kafka.common.security.plain.PlainLoginModule
        at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:153)
        at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:140)
        at org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:65)
        at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:88)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:414)
        ... 58 common frames omitted
Caused by: javax.security.auth.login.LoginException: unable to find LoginModule class: org.apache.kafka.common.security.plain.PlainLoginModule
        at javax.security.auth.login.LoginContext.invoke(LoginContext.java:794)
        at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195)
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682)
        at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
        at javax.security.auth.login.LoginContext.login(LoginContext.java:587)
        at org.apache.kafka.common.security.authenticator.AbstractLogin.login(AbstractLogin.java:60)
        at org.apache.kafka.common.security.authenticator.LoginManager.<init>(LoginManager.java:64)
        at org.apache.kafka.common.security.authenticator.LoginManager.acquireLoginManager(LoginManager.java:114)
        at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:142)
        ... 62 common frames omitted

The error message told me that the PlainLoginModule could not be loaded. I first suspected that there was a conflict in the coordinate file of Maven, and all of them have been ruled out so far.

If you don't believe me, let's verify

please help me

Those versions are no longer supported.
https://spring.io/projects/spring-kafka#support


text:
GH-781: Add commitSyncTimeout container property

Resolves https://github.com/spring-projects/spring-kafka/issues/781
Also fix updateCopyright gradle task.

#### Conflicting files
`spring-kafka/src/test/java/org/springframework/kafka/listener/KafkaMessageListenerContainerTests.java`

And will be ready for merge!

#### Conflicting files
`spring-kafka/src/test/java/org/springframework/kafka/listener/KafkaMessageListenerContainerTests.java`

And will be ready for merge!


text:
docket.directModelSubstitute is not working with List of enums

I got an issue with docket.directModelSubstitute.
I'm trying to replace a List of enums to the type String as following:
docket.directModelSubstitute(RemovalType.class, String.class);
The RemovalEnum is declared in a Removal class as this: List removalTypes.
When I'm generating my swagger contract, it doesn't replace the RemovalType.class with String class.
There is only a issue, when it is used with a List - if im trying with a normal enum class, it is working fine.
springfox-staticdocs version 2.6.1
Any suggestion?

You need to also add an explicit alternate type rule for List<RemovalType> to List<String>

authors: dilipkrish rasmusviben

repo: springfox/springfox


text:
Map<String, Instant> return type is missing model

After upgrading to Version 3.0.0 (from 2.9.2) a return type of Map<String, Instant> leads to following error message:
"Unable to find a model that matches key ModelKey{qualifiedModelName=ModelName{namespace='java.time', name='Instant'}, viewDiscriminator=null, validationGroupDiscriminators=[], isResponse=true}"
and the model for the return type is not generated but:
"

< * >:
{...}

"

I was able to work around this with:
.alternateTypeRules(
new AlternateTypeRule(
typeResolver.resolve(Map.class, String.class, Instant.class),
typeResolver.resolve(Map.class, String.class, Date.class)
)
)

Thanks for reporting!

I think return types based on Maps are the problem. Another one I found was Map<String,MonetaryAmount>.
We have a ".directModelSubstitute(MonetaryAmount.class, MoneyNode.class)" for this, that does not work with Map-based return types. Adding
new AlternateTypeRule(
typeResolver.resolve(Map.class, String.class, MonetaryAmount.class),
typeResolver.resolve(Map.class, String.class, MoneyNode.class)
)
like above solves the problem.

Type substitutions need to be explicit, but let me see if I can address this

authors: MichaelZett dilipkrish


text:
🛑 Mattermost Chat is down

In d79be80, Mattermost Chat (https://mattermost.sp-ps.ch) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Mattermost Chat is back up in d344684 after 8 minutes.

repo: spschweiz/status


text:
🛑 Microsoft Exchange (Email, Kalender, Kontakte) is down

In 766d296, Microsoft Exchange (Email, Kalender, Kontakte) ($URL_EXCHANGE) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Microsoft Exchange (Email, Kalender, Kontakte) is back up in eba654f after 8 minutes.


text:
Add list user policies endpoint to iam backend.

Add response and endpoint methods.
Add test covering put, get, delete and list user policy.

Closes #878
Note: I was a bit confused about the type being returned by get_user_policy hence the assertion based on policy doc in the string.

Coverage increased (+0.2%) to 93.717% when pulling 9a2f2fcd4b34ecfca8961274ed183c65dca84e14 on smarlowucf:master into 30b1de507cb08794edade449505fbddd0a8a043b on spulec:master.

This is great, thanks!

authors: coveralls smarlowucf spulec

repo: spulec/moto


text:
An error ocurred while starting the kernel

Description
What steps will reproduce the problem?

The error is:
Traceback (most recent call last):
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\python38\lib\site‑packages\spyder\plugins\ipythonconsole\plugin.py", line 1209, in create_kernel_manager_and_kernel_client
kernel_manager.start_kernel(stderr=stderr_handle, **kwargs)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\python38\lib\site‑packages\jupyter_client\manager.py", line 305, in start_kernel
self.kernel = self._launch_kernel(kernel_cmd, **kw)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\python38\lib\site‑packages\jupyter_client\manager.py", line 212, in _launch_kernel
return launch_kernel(kernel_cmd, **kw)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\python38\lib\site‑packages\jupyter_client\launcher.py", line 135, in launch_kernel
proc = Popen(cmd, **kwargs)
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\python38\lib\subprocess.py", line 854, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\python38\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
Versions

Spyder version: 4.1.0
Python version: 3.8.2
Qt version: 5.9.7
PyQt5 version: 5.9.2
Operating System: Windows 7

Dependencies

# Mandatory:
atomicwrites >=1.2.0           :  1.3.0 (OK)
chardet >=2.0.0                :  3.0.4 (OK)
cloudpickle >=0.5.0            :  1.3.0 (OK)
diff_match_patch >=20181111    :  20181111 (OK)
intervaltree                   :  None (OK)
IPython >=4.0                  :  7.13.0 (OK)
jedi =0.14.1                   :  0.14.1 (OK)
nbconvert >=4.0                :  5.6.1 (OK)
numpydoc >=0.6.0               :  0.9.2 (OK)
paramiko >=2.4.0               :  2.7.1 (OK)
parso =0.5.2                   :  0.5.2 (OK)
pexpect >=4.4.0                :  4.8.0 (OK)
pickleshare >=0.4              :  0.7.5 (OK)
psutil >=5.3                   :  5.7.0 (OK)
pygments >=2.0                 :  2.6.1 (OK)
pylint >=0.25                  :  2.4.4 (OK)
pyls >=0.31.2;<0.32.0          :  0.31.9 (OK)
qdarkstyle >=2.8               :  2.8 (OK)
qtawesome >=0.5.7              :  0.7.0 (OK)
qtconsole >=4.6.0              :  4.7.2 (OK)
qtpy >=1.5.0                   :  1.9.0 (OK)
rtree >=0.8.3                  :  0.9.3 (OK)
sphinx >=0.6.6                 :  2.4.4 (OK)
spyder_kernels >=1.9.0;<1.10.0 :  1.9.0 (OK)
watchdog                       :  None (OK)
zmq >=17                       :  18.1.1 (OK)

# Optional:
cython >=0.21                  :  None (OK)
matplotlib >=2.0.0             :  None (OK)
numpy >=1.7                    :  1.18.1 (OK)
pandas >=0.13.1                :  1.0.3 (OK)
scipy >=0.17.0                 :  None (OK)
sympy >=0.7.3                  :  None (OK)

This bug is fixed in our 4.1.2 version, so please update.

repo: spyder-ide/spyder


text:
Error

Description
What steps will reproduce the problem?

What is the expected output? What do you see instead?
Please provide any additional information below
File "D:\Anaconda3\envs\python27\lib\site-packages\spyder\plugins_init_.py", line 511, in
toggled=lambda checked: self.toggle_view(checked),
File "D:\Anaconda3\envs\python27\lib\site-packages\spyder\plugins\ipythonconsole.py", line 709, in toggle_view
self.create_new_client(give_focus=False)
File "D:\Anaconda3\envs\python27\lib\site-packages\spyder\plugins\ipythonconsole.py", line 991, in create_new_client
self.connect_client_to_kernel(client)
File "D:\Anaconda3\envs\python27\lib\site-packages\spyder\plugins\ipythonconsole.py", line 1018, in connect_client_to_kernel
stderr_file)
File "D:\Anaconda3\envs\python27\lib\site-packages\spyder\plugins\ipythonconsole.py", line 1415, in create_kernel_manager_and_kernel_client
config=None, autorestart=True)
File "D:\Anaconda3\envs\python27\lib\site-packages\traitlets\config\configurable.py", line 73, in init
super(Configurable, self).init(**kwargs)
File "D:\Anaconda3\envs\python27\lib\site-packages\traitlets\traitlets.py", line 997, in init
setattr(self, key, value)
File "D:\Anaconda3\envs\python27\lib\site-packages\traitlets\traitlets.py", line 585, in set
self.set(obj, value)
File "D:\Anaconda3\envs\python27\lib\site-packages\traitlets\traitlets.py", line 559, in set
new_value = self._validate(obj, value)
File "D:\Anaconda3\envs\python27\lib\site-packages\traitlets\traitlets.py", line 591, in _validate
value = self.validate(obj, value)
File "D:\Anaconda3\envs\python27\lib\site-packages\traitlets\traitlets.py", line 2053, in validate
raise TraitError(msg.format(value, self.name, class_of(obj)))
traitlets.traitlets.TraitError: Could not decode 'C:\Users\\xc1\xf5\xd0\xcb\xc5\xf4\AppData\Roaming\jupyter\runtime\kernel-be4cc644360c.json' for unicode trait 'connection_file' of a QtKernelManager instance.
Version and main components

Spyder Version: 3.2.3
Python Version: 2.7.13
Qt Versions: 5.6.2, PyQt5 5.6 on Windows

Dependencies
pyflakes >=0.5.0  :  1.6.0 (OK)
pycodestyle >=2.3 :  2.3.1 (OK)
pygments >=2.0    :  2.2.0 (OK)
pandas >=0.13.1   :  None (NOK)
numpy >=1.7       :  None (NOK)
sphinx >=0.6.6    :  1.6.3 (OK)
rope >=0.9.4      :  0.9.4 (OK)
jedi >=0.9.0      :  0.10.2 (OK)
nbconvert >=4.0   :  5.2.1 (OK)
sympy >=0.7.3     :  None (NOK)
cython >=0.21     :  None (NOK)
qtconsole >=4.2.0 :  4.3.1 (OK)
IPython >=4.0;<6.0:  5.3.0 (OK)
pylint >=0.25     :  1.7.2 (OK)

Thanks for the report @liuxingpeng520521.
It seems you are using an old and no longer supported version of Spyder (Spyder Version: 3.2.3).
Please update to the latest versions of Spyder.
Cheers!


text:
Creating new notebook fails

When I create a new Jupyter Notebook in Spyder, an error message pops up:
Error Loading Notebook
Unreadable Notebook: C:\Users...\AppData\Local\Temp\spyder\notebooks\untitled5.ipynb FileNotFoundError(2, 'No such file or directory')
But obviously there is no file yet since I am just creating a new one, so this is kind of strange...

Hi @FlorianGreibich . Internally, when you create a new notebook, Spyder should create an empty notebook and read that. Obviously something is going wrong in your case.
Could you please tell me what version of Spyder and spyder-notebook you are using?

Hello,
here the requested information:
Name                    Version                   Build  Channel
spyder                    4.0.1                    py37_0
spyder-kernels            1.8.1                    py37_0
spyder-notebook           0.2.3              pyh9f0ad1d_0    spyder-die
Von: Jitse Niesen notifications@github.com
Gesendet: Donnerstag, 28. Mai 2020 10:23
An: spyder-ide/spyder spyder@noreply.github.com
Cc: Greibich Florian Florian.Greibich@A1.at; Mention mention@noreply.github.com
Betreff: Re: [spyder-ide/spyder] Creating new notebook fails (#12889)
Hi @FlorianGreibichhttps://github.com/FlorianGreibich . Internally, when you create a new notebook, Spyder should create an empty notebook and read that. Obviously something is going wrong in your case.
Could you please tell me what version of Spyder and spyder-notebook you are using?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/spyder-ide/spyder/issues/12889#issuecomment-635195117, or unsubscribehttps://github.com/notifications/unsubscribe-auth/APXGNDVNTQTTFVU6NZ6QSQTRTYNPNANCNFSM4NM3MUGQ.

authors: FlorianGreibich jitseniesen


text:
Spyder 4.1.3 matplotlib Issue

Description
What steps will reproduce the problem?

Spyder 4.1.3 not loading properly. Following error occurs:
"An error ocurred while starting the kernel
Your Python environment or installation doesn't have the matplotlib module installed or it occurred a problem importing it. Due to that, it is not possible for Spyder to create this special console for you."
Versions

Spyder version: 4.1.3
Python version: 3.8.3
Qt version: 5.9.7
PyQt5 version: 5.9.2
Operating System: Windows 10

Dependencies

# Mandatory:
atomicwrites >=1.2.0           :  1.4.0 (OK)
chardet >=2.0.0                :  3.0.4 (OK)
cloudpickle >=0.5.0            :  1.4.1 (OK)
diff_match_patch >=20181111    :  20181111 (OK)
intervaltree                   :  None (OK)
IPython >=4.0                  :  7.13.0 (OK)
jedi =0.15.2                   :  0.15.2 (OK)
nbconvert >=4.0                :  5.6.1 (OK)
numpydoc >=0.6.0               :  0.9.2 (OK)
paramiko >=2.4.0               :  2.7.1 (OK)
parso =0.5.2                   :  0.5.2 (OK)
pexpect >=4.4.0                :  4.8.0 (OK)
pickleshare >=0.4              :  0.7.5 (OK)
psutil >=5.3                   :  5.7.0 (OK)
pygments >=2.0                 :  2.6.1 (OK)
pylint >=0.25                  :  2.5.2 (OK)
pyls >=0.31.9;<0.32.0          :  0.31.10 (OK)
qdarkstyle >=2.8               :  2.8.1 (OK)
qtawesome >=0.5.7              :  0.7.0 (OK)
qtconsole >=4.6.0              :  4.7.4 (OK)
qtpy >=1.5.0                   :  1.9.0 (OK)
rtree >=0.8.3                  :  0.9.4 (OK)
sphinx >=0.6.6                 :  3.0.4 (OK)
spyder_kernels >=1.9.1;<1.10.0 :  1.9.1 (OK)
watchdog                       :  None (OK)
zmq >=17                       :  18.1.1 (OK)

# Optional:
cython >=0.21                  :  None (OK)
matplotlib >=2.0.0             :  None (OK)
numpy >=1.7                    :  None (OK)
pandas >=0.13.1                :  None (OK)
scipy >=0.17.0                 :  None (OK)
sympy >=0.7.3                  :  None (OK)

Hi @frankgestrada, thanks for the report.
# Optional:
cython >=0.21                  :  None (OK)
matplotlib >=2.0.0             :  None (OK)
numpy >=1.7                    :  None (OK)
pandas >=0.13.1                :  None (OK)
scipy >=0.17.0                 :  None (OK)
sympy >=0.7.3                  :  None (OK)

It seems you need to install these dependencies to get it to work correctly.
It seems you are using Anaconda (or miniconda) so please open the Anaconda Prompt  and type
conda install matplotlib

Closing due to lack of response.

In spyder, It is generally solved by installing matplotlib using Anaconda.

authors: frankgestrada goanpeca madipraise


text:
Feature request: fold all and collapse all

It'd be handy to have fold all/collapse all features.

Hi @ma-sadeghi, thanks for opening this issue. Could you please explain more in detail about what are you referring as "fold all/collapse all features"?

Hi @andfoy, so let's say you have 10 functions inside file.py. To fold code for all 10 functions, you need to manually go 1 by 1 and click on the upside down triangle next to def keyword. Other IDEs have a feature to fold/collapse all functions/classes in a given file.

Hey @ma-sadeghi, thanks for the suggestion. We already have issue #8090 for all suggestions on how to improve code folding. Please leave yours there.

authors: andfoy ccordoba12 ma-sadeghi


text:
How to open a .py-file from Nautilus in an open instance of Spyderlib?

From kram...@gmail.com on 2013-06-07T07:02:09Z
What steps will reproduce the problem?

In nautilus, right click a .py file and "open with > Spyder".
Then repeat that process for another file in Nautilus. What is the expected output? What do you see instead? I expect the second file to open in the existing open instance of Spyder, but instead it opens the .py file in a new instance of Spyder.

I am using Spyder version 2.19 on an up to date Ubuntu 12.04 installation.
Original issue: http://code.google.com/p/spyderlib/issues/detail?id=1434

From techtonik@gmail.com on 2013-06-07T07:30:22Z
I believe this feature is only available in 2.2.0+

From kram...@gmail.com on 2013-06-07T08:39:47Z
Alright. Would you possible know how I can install the most recent stable version of Spyder on Ubuntu 12.04?

From kram...@gmail.com on 2013-06-07T08:44:12Z
Nevermind. I just downloaded the source and did a "sudo setup.py install" which fixed the issue.
Thanks for creating Spyder! I simply love it!

From kram...@gmail.com on 2013-06-07T08:44:50Z
Btw. This issue can be marked as solved, but I have no clue how to do that..

From ccordoba12 on 2013-06-07T09:13:52Z
Thanks for your interest in Spyder and your kind words
Status: Duplicate
Mergedinto: 466


text:
Unchecking "Check for new versions on startup" is not remembered

What steps will reproduce the problem?

Start Spyder
Spyder shows a dialog box "A new version is available"
Uncheck "Check for new versions on startup"
Re-start Spyder
Dialog box is shown again, with "Check for new versions on startup" still checked.

Expected behavior: Spyder should not check for updates.
The actual wording of the checkbox may be different, but I already closed the dialog box.
Version: 5.1.5
Python 3.8.10 64-bit | Qt 5.12.10 | PyQt5 5.12.3 | Linux 5.8.0-63-generic
Installed via pip

Hi @mghansen256 thank you for the feedback! I was able to reproduce this with the Windows installer too. For the moment, you can uncheck the preference with the Preference dialog (Preferences > Application > Advanced settings > Check for updates on start up). Let us know if that helps :)

I found the error:
the spyder.ini configuration file does not change the check_updates_on_startup option to False, it always stays True, see the following video:
https://user-images.githubusercontent.com/10239480/219907147-7f8d959f-b77d-491f-8908-3855da94bc4f.mp4
But when trying to reproduce this error in the development environment, the bug does not occur. The option DOES change to False.
https://user-images.githubusercontent.com/10239480/219906424-23e9377d-634c-4c16-9aef-81c68debc365.mp4
In order for the message to appear on the screen, there must be a new version of Spyder available, so the only thing I changed in my branch were those conditions, so the dialog box could pop up. You can see it in this commit of my branch
This doesn't solve the bug, but I'm not able to reproduce it in development environment. @dalthviz I would like to ask you if there is a way to generate an executable file out of a branch to add some custom debug logs in the version where the bug occurs and also to make sure if the bug occurs only when its's not running in develop mode. I will also try to implement a pytest test, to assert that the file is being written with 'False' when the box is unchecked.

Thank you @angelasofiaremolinagutierrez for all the effort checking this! Regarding generating an executable, I think you could submit a PR here using your branch adding there the debugging logs you mentioned and also changing the Spyder version to be for example 5.4.1 by changing this line:
https://github.com/angelasofiaremolinagutierrez/spyder/blob/baa398280ecb24cfc11f2056c85bdcf7f716de21/spyder/__init__.py#L31-L33
to be able to trigger the dialog without having to change the validation lines or the worker code.
When submitting a PR a Github Action will generate a Windows installer that you can download from the action artifacts:

Clicking details should take you to a page where a Summary button is available and clicking that you should be able to find the generated artifacts/Windows installers:

Adding some sort of test for this functionality sounds like a great idea :+1:
Also, could you check if with Spyder latest release (Spyder 5.4.2) you can reproduce this? I think you tested with 5.1.5 but since you can reproduced it when launching from develop mode maybe this was fixed already somehow? For that you will need to create a new conda environment using the conda-forge channel. Something like the following from an Anaconda prompt should work to create the env and launch Spyder from it:
conda create -n spyder-cf python=3.9 spyder=5.4.2
conda activate spyder-cf
spyder

Thank you again for taking the time to check this and if you have any other question let us know!

Thank you @dalthviz for your answer, it was really helpful!
I could not change the version_info variable as you suggested to, because when I tried to run it changing it, the 'New Spyder version' dialog did not showed up. And then when I clicked in help > check for updates... option, it resulted in a dialog box saying "Spyder is up to date.". I think to check this I have to change the function 'check_updates' so I just left the commit as I showed you before, to test it like that.
I have submitted the PR to generate the installer. It needs aproval from one of the maintainers to do the checks

Could you please aprove it? #20570
And about this:

Also, could you check if with Spyder latest release (Spyder 5.4.2) you can reproduce this? From your videos seems like you tested with 5.1.5 but since you can reproduced it when launching from develop mode maybe this was fixed already somehow? For that you will need to create a new conda environment using the conda-forge channel. Something like the following from an Anaconda prompt should work to create the env and launch Spyder from it:

I didn't test it with the latest release, because for the dialog to show up it needs to be a newer release out.

Could you please aprove it?

@angelasofiaremolinagutierrez I approved it, everything is running now.

Thank you! @jitseniesen
The bug does not reproduce with the installer either. Maybe @dalthviz is right and the bug was some how fixed from 5.1.5 to 5.4.2. I would like to make sure is truly fixed but I don't know how to test it because of what I said earlier:

I didn't test it with the latest release, because for the dialog to show up, there must be a newer version out.

Do you have any ideas?

I didn't test it with the latest release, because for the dialog to show up, there must be a newer version out.

Totally right! Sorry for the confussion there 😅 Could you check with Spyder 5.4.1 please? With that the dialog should trigger in the same way as when you tested with Spyder 5.1.5 @angelasofiaremolinagutierrez

I just tested it with Spyder 5.4.1, you were right, this is already solved. The bug did not reproduce. I think this issue can be closed @dalthviz
https://user-images.githubusercontent.com/10239480/220472334-0b7ead38-61fe-4f33-a0fd-b9e2952ed478.mp4

Awesome! Thank you so much again @angelasofiaremolinagutierrez for all your help checking this issue! I will close it then :+1:

authors: angelasofiaremolinagutierrez dalthviz jitseniesen mghansen256


text:
Error with Python 3 if non-ASCII Unicode appears in script

From dave.lin...@gmail.com on 2014-10-25T12:59:57Z
Spyder Version:  2.3.0beta2
Python Version:  3.3.3
Qt Version    :  4.8.4, PyQt4 (API v2) 4.9.6 on Windows
pyflakes >=0.6.0:  None (OK)
pep8 >=0.6      :  None (NOK)
IPython >=0.13  :  1.1.0 (OK)
rope >=0.9.2    :  0.9.4 (OK)
sphinx >=0.6.6  :  1.2.1 (OK)
matplotlib >=1.0:  1.3.1 (OK)
sympy >=0.7.0   :  0.7.4.1 (OK)
pylint >=0.25   :  1.0.0 (OK)
What steps will reproduce the problem?

Write a script that uses non-ASCII Unicode in the script
Example:
SEP  = "‖"

Run it.

Output is:

Inspect Spyder internals:
spy.app, spy.window, dir(spy)
>>> Traceback (most recent call last):
File "C:\WinPython-64bit-3.3.3.3\python-3.3.3.amd64\lib\site-packages\spyderlib\widgets\editor.py", line 1486, in analyze_script
finfo.run_code_analysis(run_pyflakes, run_pep8)
File "C:\WinPython-64bit-3.3.3.3\python-3.3.3.amd64\lib\site-packages\spyderlib\widgets\editor.py", line 450, in run_code_analysis
source_code = self.get_source_code().encode(enc)
UnicodeEncodeError: 'ascii' codec can't encode character '\u2016' in position 1510: ordinal not in range(128)
What is the expected output? What do you see instead?
It's Python 3, so I expect it to handle Unicode smoothly.
Original issue: http://code.google.com/p/spyderlib/issues/detail?id=2023

From ccordoba12 on 2014-10-25T11:06:17Z
Phew! So glad we are on the way of fixing this! Could you test this pull request https://bitbucket.org/spyder-ide/spyderlib/pull-request/83/fixes-for-various-unicode-issues-in-python to see if it fixes your problem?
Summary: Error with Python 3 if non-ASCII Unicode appears in script  <span class="oldvalue"> (was: Error w/Python 3 if non-ASCII Unicode appears in script) </span>
Labels: MS-v2.3.2 Cat-Editor

From dave.lin...@gmail.com on 2014-10-25T11:41:43Z
@-ccordoba12: Thanks. Updating to the latest WinPython (3.3.5 from April) seems to have fixed it.

From ccordoba12 on 2014-10-26T10:33:20Z
Ok, great. Thanks for letting us know
Status: WontFix
Labels: -MS-v2.3.2


text:
Spyder closing as soon as opens

Description
What steps will reproduce the problem?

I opened spyder via Anaconda Navigator
Spyder was loading
Once the IDE shows up it stays up for around 1 sec or less
It closes automatically
The prompt dialog shows this error:

[15572:2400:0110/113144.022:ERROR:broker_win.cc(59)] Error reading broker pipe: O pipe foi finalizado. (0x6D)

Traceback
Traceback (most recent call last):
  File "C:\Users\kevin.manoel\Anaconda3\lib\site-packages\spyder\plugins\projects\plugin.py", line 276, in <lambda>
    triggered=lambda v: self.open_project())
  File "C:\Users\kevin.manoel\Anaconda3\lib\site-packages\spyder\plugins\projects\plugin.py", line 433, in open_project
    project_type_class = self._load_project_type_class(path)
  File "C:\Users\kevin.manoel\Anaconda3\lib\site-packages\spyder\plugins\projects\plugin.py", line 865, in _load_project_type_class
    project_type_id = config[WORKSPACE].get(
  File "C:\Users\kevin.manoel\Anaconda3\lib\configparser.py", line 963, in __getitem__
    raise KeyError(key)
KeyError: 'workspace'

Versions

Spyder version: 5.1.5
Python version: 3.9.7
Qt version: 5.9.7
PyQt5 version: 5.9.2
Operating System: Windows 10

Dependencies

# Mandatory:
atomicwrites >=1.2.0          :  1.4.0 (OK)
chardet >=2.0.0               :  4.0.0 (OK)
cloudpickle >=0.5.0           :  2.0.0 (OK)
cookiecutter >=1.6.0          :  1.7.3 (OK)
diff_match_patch >=20181111   :  20200713 (OK)
intervaltree >=3.0.2          :  3.1.0 (OK)
IPython >=7.6.0               :  8.7.0 (OK)
jedi >=0.17.2;<0.19.0         :  0.18.1 (OK)
jsonschema >=3.2.0            :  4.16.0 (OK)
keyring >=17.0.0              :  23.4.0 (OK)
nbconvert >=4.0               :  6.4.4 (OK)
numpydoc >=0.6.0              :  1.5.0 (OK)
paramiko >=2.4.0              :  2.8.1 (OK)
parso >=0.7.0;<0.9.0          :  0.8.3 (OK)
pexpect >=4.4.0               :  4.8.0 (OK)
pickleshare >=0.4             :  0.7.5 (OK)
psutil >=5.3                  :  5.9.0 (OK)
pygments >=2.0                :  2.11.2 (OK)
pylint >=2.5.0;<2.10.0        :  2.9.6 (OK)
pyls_spyder >=0.4.0           :  0.4.0 (OK)
pylsp >=1.2.2;<1.3.0          :  1.2.4 (OK)
pylsp_black >=1.0.0           :  None (OK)
qdarkstyle =3.0.2             :  3.0.2 (OK)
qstylizer >=0.1.10            :  0.1.10 (OK)
qtawesome >=1.0.2             :  1.0.3 (OK)
qtconsole >=5.1.0             :  5.3.2 (OK)
qtpy >=1.5.0                  :  2.2.0 (OK)
rtree >=0.9.7                 :  0.9.7 (OK)
setuptools >=49.6.0           :  65.6.3 (OK)
sphinx >=0.6.6                :  5.0.2 (OK)
spyder_kernels >=2.1.1;<2.2.0 :  2.1.3 (OK)
textdistance >=4.2.0          :  4.2.1 (OK)
three_merge >=0.1.1           :  0.1.1 (OK)
watchdog >=0.10.3             :  2.1.6 (OK)
zmq >=17                      :  23.2.0 (OK)

# Optional:
cython >=0.21                 :  0.29.32 (OK)
matplotlib >=2.0.0            :  3.6.2 (OK)
numpy >=1.7                   :  1.21.5 (OK)
pandas >=1.1.1                :  1.4.4 (OK)
scipy >=0.17.0                :  1.9.3 (OK)
sympy >=0.7.3                 :  1.11.1 (OK)

Hey @ArthurLandgraf, thanks for reporting. This was incorrectly closed by our bot, but you can this error is fixed in our latest version available in Anaconda (5.3.3). Please update by closing Spyder, opening the Anaconda Prompt and running there the commands mentioned in our documentation.

Sure, thanks! After trying many solutions listed here, I deleted my project's folder ".spyproject" and created a new project in the same existing folder after that everything went back to normal.


text:
Custom environment not populating into Spyder

Issue Report Checklist

[x] Searched the issues page for similar reports
[x] Read the relevant sections of the Spyder Troubleshooting Guide and followed its advice
[x] Reproduced the issue after updating with conda update spyder (or pip, if not using Anaconda)
[ ] Could not reproduce inside jupyter qtconsole (if console-related)
[x] Tried basic troubleshooting (if a bug/error)

[x] Restarted Spyder IDE
[x] Reset preferences with spyder --reset
[x] Reinstalled the latest version of Anaconda --> I use miniforge
[x] Tried the other applicable steps from the Troubleshooting Guide

[x] Completed the Problem Description, Steps to Reproduce and Version sections below

Problem Description
I have been trying to use a custom environment in Spyder IDE. I successfully created the environment in Miniforge using the command "conda create --name myenv" in the Miniforge prompt. When I open the Preferences tab and navigate to the Python interpreter, I select the "Use the following Python interpreter" option and click the dropdown menu, but Spyder does not recognize my new environment. I can see the complete list of other environments with the exception of the new one.
Attempts to Fix
there is a similar question in this channel, where the problem was that the env was created in Appdata and not in .conda but my env is indeed in .conda
Plus I restarted my computer, miniforge and Spyder. I have updated Spyder too.
Version
Spyder version: 6.0.1
Python 3.11.9 64-bit | Qt 5.15.8 | PyQt5 5.15.9
Windows 11 Education

Hey @ceci3095, thanks for reporting. You said:

I successfully created the environment in Miniforge using the command "conda create --name myenv" in the Miniforge prompt

If the command you used to create your environment was conda create --name myenv, then it's an empty environment. And since it doesn't contain Python, then it's not shown in Preferences > Main Interpreter because Spyder can't work with it.
So, you can make your env available in Spyder by running these additional commands in the Miniforge prompt:
conda activate myenv
conda install python spyder-kernels=3

Let us know if that solves the problem for you.

Thank you! It works now

Great! Glad things are working for you know.


text:
Folding code

Hi, is there a way to collapse code blocks (like function definitions, classes, long if-statements, etc.)?  I currently have Spyder 3.0.0dev.

Nop, there is no way to do it currently. But we hope to have code folding before 3.0 is finally released.

By the way, this issue is a duplicate of issue #706, so I'm closing it.


text:
Editor tabbar keeps scrolling automatically

@rlaverde, this is still not fixed. If I have these tabs in the Editor

and then select the mainwindow.py tab, I end up with this

while what I would like to see is this

i.e that after selecting mainwindow.py there's no scrolling at all in the tabbar.
Please fix this one.

Sorry, this only seems to be an issue when using KDE's default theme (i.e. Breeze), so it's not that important.
I'm leaving it for 3.2.1.

Closing as duplicate of https://github.com/spyder-ide/spyder/issues/5459


text:
Add pylint required version in docs

From miniw...@gmail.com on 2010-12-01T05:18:58Z
It is just a doc remarks.
The v2 docs say than pylint is an optional require to use pylint ins spyder but do not give required version number.
But, apparently pylint version 0.22 is required because the 0.21 from my vendor did not work with spyder (no results at all).
Original issue: http://code.google.com/p/spyderlib/issues/detail?id=481

From pierre.raybaut on 2010-12-01T04:41:43Z
I've tested it with arbitrary old pylint versions, that's why I did not care to mention a version requirement.
If  had to, I'd say v0.18 because that's the oldest version I remember trying but it would certainly work with older releases. 0.22 is very recent: Ive just installed it yesterday.

From miniw...@gmail.com on 2010-12-01T06:06:23Z
You are right i have just tested with pip 'install pylint==0.18' and it works. I have retested with my vender version with no problem. Maybe it was just a .pylintrc file issue.

From miniw...@gmail.com on 2010-12-01T06:20:53Z
Ok i get it, it is probably a bug from mu vendor package version and not form spyder :
Traceback (most recent call last):
File "/usr/bin/pylint", line 3, in <module>
from pylint import lint
File "/usr/lib/python2.6/site-packages/pylint/lint.py", line 46, in <module>
from logilab.common.graph import ordered_nodes
ImportError: cannot import name ordered_nodes
The same version form pip install work perfectly. I will open a bug at Novell for this.

From pierre.raybaut on 2010-12-01T08:36:40Z
Status: Done


text:
Spyder is making me lose internet connection

Problem Description
So, since I decided to update Spyder (I think I was running 3.2.0 before updating) it started having this problem where at random intervals (5-30 minutes) it leads to a total loss of traffic in my internet connection for 1-3 minutes, even though it says it is connected. When I try to open any webpage it says there's no internet connection. I don't have to be running a script for this to happen, it'll be randomly happening as long as I have Spyder in the background.
Things I have tried:
Updating conda, anaconda, spyder
Uninstalling anaconda, then reinstall
Uninstalling spyder and anaconda, then reinstall
Turn off firewall
Nothing has worked as of now.
Thanks in advance if anyone can help
What steps will reproduce the problem?

Open Spyder (usually through Anaconda, but doesn't matter if it is through there)
Browse internet until webpages stop loading for 1-3 minutes until internet comes back

## Package Versions

* Spyder:3.2.7
* Python: 3.6
* Qt: 5.6.2
* PyQt: 5.6.0
*Anaconda: 5.1.0
* Operating System: Windows 10

### Dependencies
<!--- Please go to the menu entry Help > Dependencies,
press the Copy to clipboard button and paste below --->

IPython >=4.0    :  6.2.1 (OK)
cython >=0.21    :  0.27.3 (OK)
jedi >=0.9.0     :  0.11.1 (OK)
nbconvert >=4.0  :  5.3.1 (OK)
numpy >=1.7      :  1.14.0 (OK)
pandas >=0.13.1  :  0.22.0 (OK)
pycodestyle >=2.3:  2.3.1 (OK)
pyflakes >=0.6.0 :  1.6.0 (OK)
pygments >=2.0   :  2.2.0 (OK)
pylint >=0.25    :  1.8.2 (OK)
qtconsole >=4.2.0:  4.3.1 (OK)
rope >=0.9.4     :  0.10.7 (OK)
sphinx >=0.6.6   :  1.6.6 (OK)
sympy >=0.7.3    :  1.1.1 (OK)

Thanks for reporting. This has been reported before, but we don't know the cause nor how to fix it, sorry.


text:
Add options to not include runfile, execute a cell and run selsection in the history

There could be options in the history preferences to include run file, run cells and run selections events in the history.
Something like:
Save in History:
[x] Run Files
[x] Run Cells
[x] Run Selections

If the option is unchecked the commands would still show up in the shell when they run but there would be no entry in the history or in the previous commands (the up arrow)
I thought I would split this off from #7113
When #7141 gets merged the solution could look something like running this after the command is executed.
hismgr = self.kernel_client.history_manager
session_id = hismgr.get_last_session_id()
line = self.kernel_client.history_accessor.get_tail(1, include_latest=True)[1]
hismgr.db.execute('DELETE FROM history WHERE line={0} and session={1}'.format(line, session_id))

This is untested and isn't really skipping the history, more like undoing it.  I think this might be all we can do without patching IPython.
There is a "store_history" option in the ipython execute which sounds promising but it is functionally equivalent to "silent".  It doesn't show the command in the console and the "busy" status isn't activated.
The best option I suppose would be to get an option on IPython execute to skip the history.

@bcolsen, I don't think you proposal be feasible as it is because if two evaluations in different consoles finish at the same time, trying to delete their entries in the global history could corrupt the database.
Maybe there's an option to tell IPython: don't save history for this evaluation.

I don't think you proposal is feasible as it is because if two evaluations in different consoles finish at the same time

The history for each console would need to be separate for this to work(which they are already) but I think that's the best way forward at this point. We would just need to be sure to have the right session id for the console. I think the get line is actually unnecessary because we should already know this.

Maybe there's an option to tell IPython: don't save history for this evaluation.

That would be ideal. Is this something that can be done in qtconsole? I had a look at the hidden option there but it was more like silent.

The history for each console would need to be separate for this to work(which they are already) but I think that's the best way forward at this point.

The cached history is different but there's only one history database for all IPython sessions.

Is this something that can be done in qtconsole?

If it's possible, it should be available in IPython, not qtconsole.


text:
Editor: Only ask for completions when text is generated after pressing a key

Fixes #11021.

Hello @ccordoba12! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file spyder/utils/tests/test_encoding.py:

Line 74:5: E128 continuation line under-indented for visual indent


text:
🛑 Client Website - your80s.co.uk is down

In 13c2056, Client Website - your80s.co.uk (https://your80s.co.uk) was down:

HTTP code: 404
Response time: 316 ms

Resolved: Client Website - your80s.co.uk is back up in af7b83b after 11 minutes.

repo: sqbxmediagroup/status


text:
🛑 Client Website - 10yearstheshow.com is down

In e36d27d, Client Website - 10yearstheshow.com (https://10yearstheshow.com) was down:

HTTP code: 404
Response time: 314 ms

Resolved: Client Website - 10yearstheshow.com is back up in e5ab527 after 12 minutes.


text:
Get-DbaRestoreHistory - Performance when dealing with multiple servers

Trying one of the examples from the cmdlet help, piping a list of servers from a CMS, results in poor performance for me. It's quicker to run the SQL in the CMS.
Today it looks like its getting hung up on a particular server and just sitting there, whereas in previous testing it was finishing, just slower than direct SQL queries with the CMS.
Will do some more testing.

Recent changes in #208 may resolve this, still need to test to find out though. Just referencing the PR so I don't forget tomorrow ;)

Fixed in #208.

repo: sqlcollaborative/dbatools


text:
Copy-SqlDatabase - add an option to copy backups to another location

Is this a feature OR bug:
Feature
Additional comments
Data Migration Assistant offers this cool feature -- I could have used it tonight cuz my Sqls are on diff domains.

We need to create a blog post and suggest how to do this using Backup-DbaDatabase and Copy-DbaDatabse instead.


text:
Add backport label on repos where it exists

It's really useful for glancing at a list of PRs or auditing PRs to be able to filter away any PR that has a backport label, so it'd be great if this tool added that label automatically to all backport PRs.

I tried doing this, but Github's API didn't seem to let me add labels to PRs. Will make this a priority now.

You may want to take a look at the elastic-jasper github code to see how I did it there. I can't remember off-hand

@epixa I've created a PR https://github.com/sqren/backport-cli/pull/12 that allows the user to labels to their config file, which will be added to the backport PR. Like this:
{
  "name": "elastic/kibana",
  "versions": ["6.x", "6.0", "5.6", "5.5", "5.4"],
  "labels": ["backport"]
}

I also considered making it a handler like (although that seems unnecessary for now)
{
  "name": "elastic/kibana",
  "versions": ["6.x", "6.0", "5.6", "5.5", "5.4"],
  "labels": version => {
    return something ? ["backport", version] : [version];
  }
}

authors: epixa sqren

repo: sqren/backport-cli


text:
Improvement to Autocomplete Performance

When there are a lot of alternatives, the autcomplete performance starts to suffer. Adding a cache should help this a little bit.
Some related changes were made to how shift behavior works (now shift+arrows will suppress the tooltip, but not shift+letter which made it impossible to autocomplete things with capital letters).

LGTM

authors: Nathan-Fenner jeeyoungk

repo: square/metrics


text:
Compiled module-info.class in published jars

Due to https://github.com/johnrengelman/shadow/issues/352 these 3 published jars report as org.slf4j on the module-path.

| Misk Chat Project | :dvd:org.slf4j | com.squareup.misk:chat:0.2.5 |
| Misk Exemplar Project | :dvd:org.slf4j | com.squareup.misk:exemplar:0.2.5 |
| urlshortener | :dvd:org.slf4j | com.squareup.misk:urlshortener:0.2.5 |

See details at https://github.com/jodastephen/jpms-module-names/issues/16

Thanks for reporting this. Can fix.

Fix: https://github.com/square/misk/pull/280

authors: sormuras swankjesse

repo: square/misk


text:
MockWebServer Named annotations

https://github.com/square/okhttp/issues/8193

Yep, we are probably the only ones using multiple.  So it's a feature for ourselves.
That said, I find it elegant because it's no API, no change normally, but available when you need it.

I'll prepare a separate PR for comparison before closing this.

repo: square/okhttp


text:
Wrong string escaping in code generation

plugin 1.0.0-rc4
with this query (field userId is nullable):
select_news_list:
SELECT * FROM socialFeedItem WHERE message IS NOT NULL AND userId = ? ORDER BY datetime(creation_time) DESC;

code generation make this method :
private inner class Select_news_list<out T : Any>(private val userId: String?, mapper: (SqlCursor) -> T) : Query<T>(select_news_list, mapper) {
        override fun createStatement(): SqlPreparedStatement {
            val statement = database.getConnection().prepareStatement("SELECT * FROM socialFeedItem WHERE message IS NOT NULL AND userId ${ if (userId == null) \"IS\" else \"=\" } ?1 ORDER BY datetime(creation_time) DESC", SqlPreparedStatement.Type.SELECT, 1)
            statement.bindString(1, userId)
            return statement
        }
    }

the inserted code should be IS  and = should not be escaped.

what do you mean by

the inserted code should be IS and = should not be escaped.

im assuming you're referring to this part: if (userId == null) \"IS\" else \"=\"
which looks correct to me

the generated code does not compile because " are escaped.
The statement should be :
"SELECT * FROM socialFeedItem WHERE message IS NOT NULL AND userId ${ if (userId == null) "IS" else "=" } ?1 ORDER BY datetime(creation_time) DESC"

ah. i think this is related to the kotlinpoet update we just had. Will investigate, thanks!

@Egorand is working on the kotlinpoet fix
for now you can work around by making your sql multiline:
select_news_list:
SELECT * FROM socialFeedItem
WHERE message IS NOT NULL AND userId = ? ORDER BY datetime(creation_time) DESC;

Great, thanks !

authors: AlecStrong julienbanse

repo: square/sqldelight


text:
Unknown error occurred

Error: An unknown error occurred. Please file a bug report at https://github.com/squattingmonk/nasher/issues
         ... using the stack trace info below:
nasher.nim(118)          nasher
convert.nim(138)         convert
nwn.nim(211)             updateIfo
gff.nim(568)             readGffRoot
gff.nim(399)             readStructInto
util.nim(76)             resolve
encodings.nim(507)       convert
encodings.nim(453)       convert
encodings.nim(448)       convertWin
encodings.nim(390)       convertToWideString
oserr.nim(95)            raiseOSError
Error: unhandled exception: The parameter is incorrect.
 [OSError]

I'm on Nasher 0.20.1, neverwinter.nim 1.6.2 and nim 1.6.14.  Tried deleting my cache folder an re-running but getting the same issue.
Let me know what additional info may be of use.

If I go back to neverwinter.nim version 1.5.9 this is no longer happening, my best guess right now is something related to:
https://github.com/niv/neverwinter.nim/commit/c4585e47c93fe01d5d68b1466e2adda630bf5770#diff-66304a5aa3208dc9e761f10001b7c9a3f9d95c597b738c18dfbf7a9f21bf5bfbL46

Fixed by updating to neverwinter.nim v1.6.3 which has this:

Fixed encoding not initialising correctly when get*Encoding wasn't called.

repo: squattingmonk/nasher


text:
Enhance UI landing page

Fixed Changes:

added links to li items in navbar
added hover state for clickable elements
reduced navbar height
landing page now stretches to full height of screen
changed font from inter(default) to fira sans
other minor ui changes

** multiple commits because of any issue where github was indenting the code more than the local code, which was show as changed code

I noticed quite a lot of unnecessary code syntax formatting changes for converting double quotes to single quotes which skews the GitHub diffing of Pull Requests making it difficult to isolate and review actual changes over the additional code syntax re-formatting changes.
I believe you may have overridden the default Prettier settings to convert to single quotes.
Are you able to deselect / revert / disable the option selection for Prettier: Single Quote? See screenshot below:

@Sayvai managed to fix the quotes issue in the .tsx files looking into solutions for the .ts files

@Sayvai fix the quotes issue in the ts file

I also noticed that there is now a huge space between the resume upload box section and the pdf renderer viewer section.
I believe the root cause is that you've now included the h-screen TailwindCSS class to the hero.tsx file within the  element.
See attached screenshot below 👇

Could we fix this gap?

What's the update on this PR? @sandipkarmokar  and @Sayvai ?

What's the update on this PR? @sandipkarmokar and @Sayvai ?

@srbhr - @sandipkarmokar is aware of the latest PR comments, and will look into refactoring whenever he can 🙂

@srbhr , i fixed the issue as pointed out by @Sayvai .

@Sayvai fixed according to changes suggested

@Sayvai thanks for the review, will remember the suggestions for the future.

Also, please create a PR to fix that font inter on the landing page. Fira Sans looks cool to me.

@srbhr create a PR for the font change

authors: Sayvai sandipkarmokar srbhr

repo: srbhr/Resume-Matcher


text:
EGWTTP support of long messages

Long messages will be cut after some limit (ble restriction), this should be managed - depending on need in the client?
A test is the go for the network endpoint as it returns quite a lot of json.
I suggest the ewttp protocol supports an offset header key in both request and reply. Then a client can manage the message building properly (i.e. request more data and get data with an offset.

This is now implemented along with unit tests for the bluetooth part. Basically it is the responsibility of the client to detect that the actual data recieved is shorter than the content-length and then request more data at an offset (and keep track of the previous data already recieved).
The test cases by large implement this behavior.
There is no support for sending data to the server larger than 512 bytes - one loose idea on how to do this would be to let the server basically do the same thing and send a response asking for more data until the request has been fulfilled. But this is not at all as straight forward and there could be other simpler ideas.
There is generally also a lot of overhead in the protocol itself that could be made shorter by just using abbreviations for header items.

repo: srcfl/srcful-gateway


text:
Update README.md

Sorry, but I'm not an expert of github...

Please open pull-requests against the upstream repository!

authors: srebhan tguenneguez

repo: srebhan/telegraf


text:
Separate repos for different each type of firefox build

Firefox, Firefox Nightly, Firefox Beta and Firefox ESR all types of builds are being released in the same repo with different tags.
So, AppImage managers are not able to identify each releases.
The result is when I use such app such as AppImagePool, and trying to download any firefox build (e.g Firefox ESR), it shows only Nightly build. Because these apps are supposed to fetch the latest release and Nightly Build is tagged as latest.
This will be solved if separate repos are created for each type of build.

Sorry, that will bring in a lot of maintenance overhead. But feel free to fork the repository and set up separate builds for each repo.

authors: ksharindam srevinsaju

repo: srevinsaju/Firefox-Appimage


text:
Duration disappears on clicking on it

I don't know if this is intentional or not, but if you click on the duration, it disappears.

It was intentional. :)

repo: sridhama/youtube-playlist-duration