primordic/IssueDupesLite huggingface dataset:
Repository: klembot/twinejs

Issue #1158: Ability to choose location of Story Library folder location.
Created: 2022-06-08T20:56:10Z
Is your feature request related to a problem? Please describe.
Currently the default and unchangeable location of the Story Library (on Windows 10) is under the user Documents folder on the System Boot Drive (C:). I have a smaller SSD main boot drive and I really don't like using it for any kind of project data storage. Text is not so bad but Images and sound files can be a problem.
Describe the solution you'd like.
Please allow the user the option to choose the location where the Story Library folder is, including allowing the user to specify a different drive other than the system boot drive.
Describe alternatives you've considered.
The alternative of using (on Windows 10) "mklink" command to create a Symbolic Link to replace the Stories folder with a reference to another folder is generally messy. Symbolic links are not a beginner friendly solution and can cause problems for an unaware user since they appear like a real file folder in Windows Explorer, leading to confusion later in time.
Additional context on this suggestion.
I am thankful that the installation process did allow me to select the location for the application folder.
Also, the application itself is amazing, may thanks to everyone working on it!
Presubmission checklist

 I am interested in working on code that would implement this feature request. (This is not required to submit a suggestion.)
 I have done a search and believe that an issue does not already exist for this idea in the GitHub repository.
 I have read and agree to abide by this project's Code of Conduct.

Duplicate issue #1278: 2.5+ Allow users to choose the story directory location
Created: 2022-08-30T19:13:51Z
Is your feature request related to a problem? Please describe.
There are numerous issues with running Twine with a symlinked story folder (windows errors, backup errors), but people continue to do it, because there is a strong desire to move the story folder — for example to put it on a cloud drive, a backed up location, or just as part of a larger app structure.
Instead of going down the rabbit hole of fixing symlinks, just allow users to select the story location.
Describe the solution you'd like.
In the application settings, allow the user to select the location for the story folder.
Describe alternatives you've considered.
The alternatives are all to do with fixing symlinks :)
Additional context on this suggestion.
No response
Presubmission checklist

 I am interested in working on code that would implement this feature request. (This is not required to submit a suggestion.)
 I have done a search and believe that an issue does not already exist for this idea in the GitHub repository.
 I have read and agree to abide by this project's Code of Conduct.

Closing comment (2022-09-03T14:49:32Z): Dupe of #1158, I think--nothing with this has changed re: 2.5.
Repository: klembot/twinejs

Issue #412: Allow adding floating annotations to the story view
Created: 2017-08-27T11:16:10Z
Originally reported by: Ori Avtalion (Bitbucket: salty_horse, GitHub: Unknown)

Twine should allow a way of adding "comments" to the node graph.
I'm thinking that next to the "+ Passage" button there should be a "+ Annotation" button.
This will create a transparent box which you will be able to fill with text and move around like a regular Passage node. Ideally you will be able to control the font size and color.
Proposed by Emily Short on Twitter: https://twitter.com/emshort/status/901750080251863040


Bitbucket: https://bitbucket.org/klembot/twinejs/issue/412

Duplicate issue #1345: Tool for drawing comment blocks in editor
Created: 2022-12-23T18:55:18Z
Is your feature request related to a problem? Please describe.
I would love to see some more tools for organising passages in the editor.
I usually really like to plan out my story in blocks (separating it into space for chapters, utility passages for scripts, temp passages that i may come back to, or those that need some refining later) first and then flesh it out. This works in the beginning, but as the story grows, it gets somewhat confusing to manage and reorganise the whole workspace.
Describe the solution you'd like.
It would be great to be able to draw comment blocks in the workspace. They would be only for editing with a clear thick border and a title on top that we could edit for adding comments.
The main idea would be to replicate the behaviour of Comment Boxes in Unreal Engine blueprints editor. This should be an editor feature only. Just drawing an empty node, adding coment text to the title bar of it and allow to change its position and size.
That will be useful for story organisation, making easy to understand templates, reusing parts of the game
Additionally it could be extended in the future: make all nodes inside a block comment to be moved when you move around the group node itself, similar behaviour with copy&paste, etc.
Describe alternatives you've considered.
Other example would be Frame Node used in Blender 3D software. Documentation here.
It is very similar to UE4 comment boxes but also has ability to change background colors.
Additional context on this suggestion.
No response
Presubmission checklist

 I am interested in working on code that would implement this feature request. (This is not required to submit a suggestion.)
 I have done a search and believe that an issue does not already exist for this idea in the GitHub repository.
 I have read and agree to abide by this project's Code of Conduct.

Closing comment (2023-01-09T15:56:27Z): Also a duplicate of #412
Also a partial duplicate of #583, #707 (the "chapters" here are visual grouping elements of the same sort but with collapsing), #714 (another version of the chapter/group feature), #282 (mentions the box-drawing option).
#520 isn't quite asking for the same, but the the impulse (more organisation tools in the story map) is the same.
Repository: klembot/twinejs

Issue #675: Twine 2 IDE replace all function messes up story
Created: 2020-05-30T10:28:28Z
Version last tested: 2.3.7 with sugercube 2.31.1
Description:
Wrote a story. Wanted to change a variable name from $GameData to setup.gamedata. Made the mistake of using the replace all function that came with the IDE. When the replace dialogue box popped up, I unchecked the include passage name checkbox and pressed replace all.
When the replacement was done, at least half of the passages had their names went missing. Little doubt everything failed to work.
Deleted the whole story, loaded from an archive a few seconds ago and the problem was temporarily solved. At least I do not have to reinstall the whole Twine 2 IDE like the other issue reporter.

Duplicate issue #869: Story corrupted when using find and replace
Created: 2021-06-06T17:59:00Z
I was working on a story today using desktop Twine (2.3.13, MacOS Catalina, 10.15.7).
I opened the search and replace dialog and did a case sensitive, passage content only, search for the word "Blaze". I then did a replace with "Bayard".
Immediately the names and links on many passages dissapeared. Opening any of those passages showed that they had the content of the start passage, and no name. Each of these passages also had the start icon displayed on them. All links to affected passages were removed. Attempting to rename one of these passages caused Twine to freeze. After re-opening the story, any operation performed on the defective passages affected all of them, making it impossible to rename them again.
I took a copy of the story file as soon as the error happened. In that copy:

the affected passages were preserved, but with their name replaced by ""
the affected passages each had the word Blaze replaced with Bayard
the affected passages retained their PID, size, tags, and locations

i.e. all paragraphs in which a replacement was made, had their names removed.

Closing comment (2021-06-07T22:26:44Z): Also duplicates #675, #595, and #397
Repository: krille-chan/fluffychat

Issue #1313: Calls doesn't work
Created: 2024-09-04T07:54:17Z
Bug Description
Hi there is problem with outcomming calls, It just hanging up after 1 second.
Steps to Reproduce

Open Chat
Call to any contact

Expected Behavior
it should call
App Version
1.22
Additional Platform Information
Iphone 11 and Android One Plus
Additional Context
No response

Duplicate issue #1556: No ring notifications on Android
Created: 2025-01-12T18:33:58Z
Bug Description
Fluffy Chat client (tried last two latest versions).
No ring notification. The bell comes, but nothing on screen pops up.
Steps to Reproduce

Logged in
Call from another user
Hear the bell, but no pop up to answer the call
Tried both latest versions
Tried both video and audio call
Tried uninstalling reinstalling

Using it with Synapse Matrix server with NTFY
Works perfectly with element-android app.
Expected Behavior
Pop up screen to answer the call
App Version
1.22.0 and 1.23.0
Additional Platform Information
Pixel 8 Pro, iPhone 12
Additional Context
No response

Closing comment (2025-01-16T18:18:32Z): Probably related to #1313
Repository: krille-chan/fluffychat

Issue #63: Add bidi support
Created: 2023-07-15T00:01:32Z
Description
Messengers are among those apps in which people with different languages (RTL/LTR) might make content. It is also possible people make mixed text on RTL and LTR. Therefore it is crucial to support bidirectional (bidi) text support in such apps. currently FluffyChat (at least in version 0.30.0 on Gnu/Linux Kubutnu 20.04) doesn't support it. As the result, text are shown in LTR direction regardless of in what language they are written.
To Reproduce
Simple! Just write some RTL text (from Persian, Arabic, Urdu,..) It would be better if it be mixed. I would sugget to write this text: "یک two سه four". If you see it in this order, it is wrong. It is now LTR since it is surrounded with LTR text. But if it be an independent body of text, it should be opposite. You may check the following screenshot for reference:

Additional information:

Device: Laptop
OS and OS version: Kubuntu 20.04
Installed version of FluffyChat: 0.30.0 (from flathub)
(Android only) Which store are you using: -
(Android only) Are Google Services available: -

/issue fluffy

Duplicate issue #365: RTL: Chat Bubbles UI is Very Messed Up
Created: 2023-07-15T00:17:17Z
I inserted this as a sidenote in another issue #646 a long time ago. I should have made it its own issue.
Description

Text bubble alignment is opposite what it should be when in RTL.  Other users' avatars are on the right, whereas text bubbles are left-aligned and the squared corner is also on the left, away from their avatars.


To Reproduce
Put device in an RTL language and look at the text bubbles.
Additional information:

Device: Samsung GS20
OS and OS version: Android 11 12
Installed version of FluffyChat:  latest nightly 0.42.2 1.2.0 1.4.0
(Android only) Which store are you using: fdroid
(Android only) Are Google Services available: available, but I'm using gotify-up

Closing comment (2024-03-07T16:20:53Z): Duplicate of #63.
Repository: krille-chan/fluffychat

Issue #818: Can't play OGG audio on iOS
Created: 2024-01-19T03:16:20Z
Bug Description
Clicking play on an OGG audio message I received on iOS leads to the error dialog below being shown.

The full log is:
[ERROR] Unable to play audio message - MissingPluginException(No implementation found for method play on channel com.ryanheise.just_audio.methods.bbbbe37e-0bac-448d-8679-3d4387371b7d)
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:320)
<asynchronous suspension>
#1      [MethodChannelAudioPlayer.play](http://methodchannelaudioplayer.play/) (package:just_audio_platform_interface/method_channel_just_audio.dart:64)
<asynchronous suspension>
#2      AudioPlayer._sendPlayRequest (package:just_audio/just_audio.dart:981)
<asynchronous suspension>

However, that error is not shown when playing M4A audio (the format generated by FluffyChat itself, for example). Perhaps other clients generate OGG audio instead.
Steps to Reproduce

Receive or send a .OGG audio message on iOS
Click play to listen to it

Expected Behavior
The audio plays
App Version
1.17.1
Additional Platform Information
iPhone 11, iOS 17.2.1
Additional Context
No response

Duplicate issue #862: [BUG]: Unable to play audio message
Created: 2024-02-01T20:09:32Z
Operating system: ios
Version: 1.17.2

Exception
MissingPluginException(No implementation found for method play on channel com.ryanheise.just_audio.methods.c903579e-c70a-4f6d-b1ec-4be96a6de509)
StackTrace
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:320)

#1      MethodChannelAudioPlayer.play (package:just_audio_platform_interface/method_channel_just_audio.dart:64)

#2      AudioPlayer._sendPlayRequest (package:just_audio/just_audio.dart:981)

Closing comment (2024-02-02T03:17:15Z): seems like a duplicate of #818
Repository: krille-chan/fluffychat

Issue #3: Text vanishes after leaving the chat
Created: 2023-07-14T23:58:26Z
Hello,
Every time when I write a message and minimize the app before sending it, it vanishes so I have to write it again. Could you please fix that?

Duplicate issue #388: Save draft of message when leaving the view.
Created: 2023-07-15T00:18:29Z
Description
When typing a message and then leave the chat screen the message is gone. It would be good to save it so that it is possible to continue after looking thing up in other apps or making a pause while writing.

To Reproduce
Go on a chat. Write a message. Do not sent the message. Go to the Main Page. Go back on the chat. Started message is gone.

Additional information:

Device: iPhone 12 mini
OS and OS version: iOS 15.5
Installed version of FluffyChat: 1.5.0
(Android only) Which store are you using:
(Android only) Are Google Services available:

Closing comment (2024-09-04T04:04:41Z): Duplicate of #3, but I should confirm whether this still happens.
Repository: krille-chan/fluffychat

Issue #1038: [BUG]: Unable to play video
Created: 2024-04-20T23:15:21Z
Operating system: android
Version: 1.19.2

Exception
Unable to decrypt file
StackTrace
#0      Event.downloadAndDecryptAttachment (package:matrix/src/event.dart:660)

#1      EventVideoPlayerState._downloadAction (package:fluffychat/pages/chat/events/video_player.dart:36)

Duplicate issue #1039: [BUG]: Unable to play video
Created: 2024-04-20T23:15:53Z
Operating system: android
Version: 1.19.2

Exception
Unable to decrypt file
StackTrace
#0      Event.downloadAndDecryptAttachment (package:matrix/src/event.dart:660)

#1      EventVideoPlayerState._downloadAction (package:fluffychat/pages/chat/events/video_player.dart:36)

Closing comment (2024-04-21T17:40:37Z): this seems to be a 1:1 duplicate of #1038
Repository: krille-chan/fluffychat

Issue #944: Send on Enter not working on Ubuntu 22.04 LTS Flatpak
Created: 2024-03-14T16:16:20Z
Bug Description
For a view versions now, send on enter does not work for me. Trying to turn it off and on doesnt change that.
enter button just makes hard line break instead
Steps to Reproduce
Write text in a chat
press enter
move mouse over and actually click on send button
Expected Behavior
sending on enter
App Version
1.18.0
Additional Platform Information
PC (Ubuntu 22.10 LTS, Flatpak)
Additional Context
this is my first github issue, i hope that's how it's done...

Duplicate issue #1429: (Desktop) Can't send messages by pressing enter
Created: 2024-10-25T17:19:00Z
Bug Description
In flathub version when pressing "Enter" messages aren't sent even tho toggle in settings is activated

Steps to Reproduce

Download latest release from flathub
Try to send messages by pressing enter
fail 😔

Expected Behavior
messages should be sent when I press enter
App Version
1.22.0
Additional Platform Information
OS: Zorin OS 17.2 x86_64
Additional Context
Trying to toggle it on and off didn't resolve the issue sadly :(

Closing comment (2025-01-01T16:54:09Z): duplicate of #944
Repository: krille-chan/fluffychat

Issue #1030: Dark screen when rotating phone
Created: 2024-04-18T11:42:45Z
Bug Description

  
    
    

    screen-20240418-143855.mp4
    
  

  

  


Steps to Reproduce

Open fluffychat
Rotate screen
Rotate screen
See black screen

Expected Behavior
Normal app interface
App Version
1.19.1
Additional Platform Information
Nothing Phone 1
Additional Context
No response

Duplicate issue #1436: Black screen when rotating screen
Created: 2024-10-27T08:42:39Z
Bug Description
When rotating the screen between portrait and landscape the fluffychat app goes black
Steps to Reproduce

open the fluffychat app
rotate your screen to landscape then back to portrait
screen goes black
(in settings menu  any rotation gives black screen)

Expected Behavior
The screen should turn without going black and needing to restart the app
App Version
1.22.0
Additional Platform Information
Pixel 7A grapheneOS android 15
Additional Context
No response

Closing comment (2024-10-28T14:28:29Z): Duplicate. #1030
Repository: kubernetes-retired/contrib

Issue #743: NGINX ingress controller does not work properly with a named targetPort
Created: 2016-04-08T03:16:35Z
When using a named targetPort on the service it does not resolve which endpoint port to use, as far as I can tell.
This is a bit of a hard problem to solve because it's not immediately apparent from the endpoints list what the port name is.

Duplicate issue #781: Nginx Ingress Controller problem with named targetPort in Service
Created: 2016-04-14T12:34:02Z
service.yaml:
apiVersion: v1
kind: Service
metadata:
  name: kibana-logging
  namespace: kube-system
  labels:
    k8s-app: kibana-logging
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: "Kibana"
spec:
  ports:
  - port: 5601
    protocol: TCP
    targetPort: 5601
  selector:
    k8s-app: kibana-logging

with ingress.yaml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kibana-logging
  namespace: kube-system
spec:
  rules:
  - host: phive-logs.pmi.ag
    http:
      paths:
      - backend:
          serviceName: kibana-logging
          servicePort: 5601
        path: /

works flawlessly :)
but if i set targetPort: ui (as it is named in the pod definition) nginx ingress controller logs: service kube-system/kibana-logging does no have any active endpoints ... but:
$ kubectl get ep --namespace=kube-system kibana-logging
NAME             ENDPOINTS          AGE
kibana-logging   10.103.11.3:5601   4h

Closing comment (2016-04-14T21:23:43Z): Soo duplicate of #743?
Repository: kubernetes-retired/contrib

Issue #1491: Blunderbuss should pick owners for top-level directory additions
Created: 2016-08-05T18:55:16Z
When directory additions are made to the top-level of the repository, blunderbuss does not make assignments, or find owners.
Example: no assignees for #1343, #1189, #892, #841

Duplicate issue #1470: No assignees for some PRs
Created: 2016-08-02T23:22:35Z
We have 11 PRs to which Blunderbuss is unable to make an assignment. We must investigate why it fails to make an assignment.
Logs from Blunderbuss:
W0802 23:14:15.888785       1 blunderbuss.go:117] Couldn't find an owner for: dnsperf/Dockerfile
W0802 23:14:15.888881       1 blunderbuss.go:117] Couldn't find an owner for: dnsperf/Makefile
W0802 23:14:15.889008       1 blunderbuss.go:117] Couldn't find an owner for: dnsperf/README.md
W0802 23:14:15.889626       1 blunderbuss.go:117] Couldn't find an owner for: dnsperf/dnsperf-job.yaml
W0802 23:14:15.889647       1 blunderbuss.go:117] Couldn't find an owner for: dnsperf/queryfile-local-services
W0802 23:14:15.889703       1 blunderbuss.go:117] Couldn't find an owner for: dnsperf/runjob.sh
E0802 23:14:15.890100       1 blunderbuss.go:128] No owners found for PR 1189

It appears that some of them are PRs which add code to directories which have since been deleted from the repo. We should possibly close those PRs.

Closing comment (2016-08-05T20:15:27Z): Duplicate of #1491
Repository: kubernetes-retired/contrib

Issue #2533: Create a separate repo for cluster autoscaler
Created: 2017-04-06T17:35:07Z
We need a separate repo to a) conform to new guidelines of deprecating contrib and more importantly to b) properly do release management (branches, tags, release notes etc)
@MaciekPytel

Duplicate issue #2540: Move Cluster-Autoscaler to a separate repo
Created: 2017-04-10T21:46:38Z
We would like to have a separate repo for cluster autoscaler to ensure proper branching and versioning.
cc: @MaciekPytel @fgrzadkowski

Closing comment (2017-04-11T08:40:46Z): Duplicate of #2533
Repository: kubernetes-retired/contrib

Issue #944: [ansible] namespace kube-system is not created
Created: 2016-05-10T14:03:25Z
namespace kube-system is not created because kube-addons.sh is expecting to find it at /opt/namespace.yaml.
https://github.com/kubernetes/kubernetes/blob/master/cluster/addons/addon-manager/kube-addons.sh#L68

Duplicate issue #941: [ansible] Monitoring & logging services not started
Created: 2016-05-10T13:03:29Z
I followed the ansible/vagrant README. Ansible successfully finished but the monitoring and logging services are not started:
[static-67 vagrant (master u=)]$ vagrant ssh kube-master
[vagrant@kube-master ~]$ kubectl cluster-info
Kubernetes master is running at http://localhost:8080
I ran vagrant up --provider libvirt with the default options. So CentOS7 is used in my case. I also tried to run vagrant provision again as indicated in the README, but that did not help.

Closing comment (2016-05-12T07:52:39Z): No, the kube-system namespace is not created. So this issue is indeed related to #944.
Repository: kubernetes-retired/contrib

Issue #2434: cluster-autoscaler: Feature request: publish "latest" or "beta" docker image 
Created: 2017-03-01T12:07:57Z
I don't see any Docker image past 0.4.0 on the registry.  Would be great to try some of the latest additions in a "latest" or some sort of "beta" tagged Docker image.

Duplicate issue #2357: Cluster-autoscaler: Update GCR image regularly
Created: 2017-01-31T11:40:06Z
When testing the auto-scaling functionality, specifically the multiple AWS ASG capability.  The latest image (v0.4.0) on gcr does not support the new flag --expander.

Closing comment (2017-03-01T16:33:14Z): Related to #2434 request to have a regularly built 'latest' labelled image
Repository: kubernetes-retired/contrib

Issue #2425: cluster-autoscaler: Remove minimum ASG size requirement of 1
Created: 2017-02-26T17:48:04Z
I use 3 different ASGs for my cluster.  One of them I have set to a minimum of 3 for my cluster's main components to live on.  The other two ASGs are only for batch jobs that require specific types of instances.  I'd like to be able to have the other two ASGs have a minimum count of 0.
e.g.  I'd like this configuration to be valid:
--nodes=3:10:primary-asg
--nodes=0:10:batch-job-a-asg
--nodes=0:10:batch-job-b-asg
I specifically use the 2nd two ASGs in conjunction with Kubernetes Jobs, so I don't need those instances sitting around when no jobs are running.

Duplicate issue #2516: Autoscaling: accept min-nodes value of 0
Created: 2017-03-31T19:06:54Z
FEATURE REQUEST
It would be convenient to accept min-nodes to be equal to 0 for autoscaling on node-pools.
If you want to run a resource-intensive batch process now and then this will save a lot of costs.

Closing comment (2017-04-19T15:09:10Z): Duplicate of #2425.
Repository: kubernetes-sigs/controller-runtime

Issue #857: Proposal: Add reconciliation buffer to reduce load
Created: 2020-03-14T19:35:50Z
Some of my controllers receive a bunch of reconciliation requests. However there's no improvement to the controller quality if I handle them all individually compared to handling them once every now and then.
I propose that we can optionally add a following controller option to these options:

  
    
      controller-runtime/pkg/controller/controller.go
    
    
        Lines 33 to 44
      in
      2361b05
    
  
  
    

        
          
           type Options struct { 
        

        
          
           	// MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1. 
        

        
          
           	MaxConcurrentReconciles int 
        

        
          
            
        

        
          
           	// Reconciler reconciles an object 
        

        
          
           	Reconciler reconcile.Reconciler 
        

        
          
            
        

        
          
           	// RateLimiter is used to limit how frequently requests may be queued. 
        

        
          
           	// Defaults to MaxOfRateLimiter which has both overall and per-item rate limiting. 
        

        
          
           	// The overall is a token bucket and the per-item is exponential. 
        

        
          
           	RateLimiter ratelimiter.RateLimiter 
        

        
          
           } 
        
    
  


I'm definitely not an expert, but I think the option could have the same interface as the rate limiting interface, but instead of working on retries, working on all requests?

Duplicate issue #2228: Rate limiting resyncs
Created: 2023-03-07T17:31:54Z
Is there a way to rate limit the resyncs of cached objects? Our operator manages a lot of objects with a lot of owned resources. Each resync can take a long time to finish reconciling and blocks actual updates to individual resources that come through.

Closing comment (2023-05-04T20:48:30Z): Duplicate of #857 ?
Repository: kubernetes-sigs/controller-runtime

Issue #942: source.Channel ignoring event
Created: 2020-05-11T08:52:00Z
Hello, I'm using source.Channel to do an artificial initial reconciliation followed by periodic cycles, and have noticed that sometimes the initial request is ignored.
Did some investigation and looks like a race condition where the events are processed before the Channel has any targets.
In particular this goroutine is started,

  
    
      controller-runtime/pkg/source/source.go
    
    
        Lines 194 to 197
      in
      c2dfe1a
    
  
  
    

        
          
           cs.once.Do(func() { 
        

        
          
           	// Distribute GenericEvents to all EventHandler / Queue pairs Watching this source 
        

        
          
           	go cs.syncLoop() 
        

        
          
           }) 
        
    
  


before,

  
    
      controller-runtime/pkg/source/source.go
    
    
         Line 219
      in
      c2dfe1a
    
  
  
    

        
          
           cs.dest = append(cs.dest, dst) 
        
    
  


Here, syncLoop() calls distribute() who sends the event to every channel on cs.dest. So it can happen that that syncLoop() processes an event, before cs.dest is initialized, so it doesn't get processed by anyone.
As for a fix, I'd suggest starting the goroutine after cs.dest is set instead. I can create a PR as well if preferred.
This was seen on controller-runtime v0.5.2, but looking at the code, it seems to also apply to master.
Best regards,
Luis

Duplicate issue #961: Race condition in source.Channel loses events
Created: 2020-05-22T22:32:05Z
There is race condition in source.Channel between syncLoop() (which drains the incoming Source events) and adding new destination channels for distribution:
cs.dest = append(cs.dest, dst)

The two are not synchronized and it is possible for the source channel to be drained from existing events before the destination channel is established. This will cause these events to be lost.

Closing comment (2020-05-23T01:47:46Z): I think this issue is a duplicate of #942
Repository: kubernetes-sigs/controller-runtime

Issue #103: Channel Source is borked due to stop channel injection
Created: 2018-08-06T02:09:50Z
The Channel source expects the stop channel to be injected before calling Start, but the stop channel on the controller manager will be nil until ControllerManager#Start is called.  Since most people will probably call Controller#Watch before ControllerManager#Start, this breaks the channel source.
I've got a patch to fix it in the works, but wanted to file this so that I don't forget.

Duplicate issue #149: source.Channel gets a nil value for stop channel
Created: 2018-09-18T21:35:39Z
Problem
When adding a Channel to a controller by calling Watch(), InjectStopChannel gets called with a value of nil instead of a real channel.
This appears to be because nothing sets the value of stop before Watch() gets called. The value of stop only gets set once the manager's Start() method is called.
Here's the order of operations:

Manager gets created
Controller gets created and added to the manager
Controller's Watch() method gets called with the new Channel as an argument
Manager's Start() method gets called, with a stop channel being passed in. This is the opportunity for a stop channel to be provided by a controller author.
The manager's Start() method calls each controller's Start() method, also passing through the stop channel.

At step 3, the manager's stop channel gets injected into the Channel. But the manager's stop channel doesn't get set until step 4, so at step 3 it has a nil value.
Workaround
The controller author can call InjectStopChannel directly and pass it the same channel they'll later pass to the manager's Start() method. But the InjectStopChannel method is clearly documented as not being intended for this purpose, nor is this approach helpful to the controller author.

Closing comment (2018-09-19T08:08:51Z): duplicate of #103
Repository: kubernetes-sigs/controller-runtime

Issue #934: Multi Namespace Cache doesn't support Get for cluster scoped resources
Created: 2020-04-30T19:46:16Z
I have a requirement to watch resources in multiple namespaces as well as a cluster-scoped resource. This is how I build the cache:
cache.MultiNamespacedCacheBuilder([]string{
	"namespace-1",
        "namespace-2"
})
While the namespace-scoped resources work as expected, the cluster scoped resource fails at the Get() function. The List() call for multi cache namespace works fine though. In the code, I see this:
func (c *multiNamespaceCache) Get(ctx context.Context, key client.ObjectKey, obj runtime.Object) error {
	cache, ok := c.namespaceToCache[key.Namespace]
	if !ok {
		return fmt.Errorf("unable to get: %v because of unknown namespace for the cache", key)
	}
	return cache.Get(ctx, key, obj)
}
For a cluster scoped object, the namespace will be "", so this will naturally return an error. This function should check if the object is cluster-scoped and return a cache appropriately.

Duplicate issue #1323: Cached client doesn't support Get for cluster scoped resources if namespace is given
Created: 2021-01-08T19:03:16Z
cached client Get returns not found when looking for cluster-scoped object and passing in a namespace.
client.Get should ignore the namespace for cluster scoped objects and return the object. Logging a
warning is probably a good idea that we are ignoring the namespace.
The APIReader ignores the namespace for cluster-scoped gets. The cache should behave similarly.

Closing comment (2021-01-08T19:06:04Z): This may be related to #934.
Repository: kubernetes-sigs/controller-runtime

Issue #244: Enable filtered list watches as watches
Created: 2018-12-12T12:08:02Z
When setting up watches during initialization it's currently not possible to filter by any selectors (which is possible using list watches).
For example it is not possible to only watch pods with specific labels (e.g having the label pod-type: my-controller-type). The current behavior results in very broad caching, which might not be desirable for large Kubernetes deployments.
In some scenarios an operator could contain multiple controllers, and they all share caches, so keying caches on GVK's alone might be problematic if they want to watch the same resource type, but with different filters.
When doing List/Get, how would one decide which of the caches to use? It seems that perhaps this needs to be an explicit choice by the operator developers?

Duplicate issue #1227: Sets a custom filter on watch or list resource from apiserver
Created: 2020-10-23T17:08:24Z
Hi All:
I have a requirement: to reconcile changes in the ConfigMap resource named app-config
In client-go i can use the informers.WithTweakListOptions function to solve this problem
For example:
cmInformer := v13.NewFilteredConfigMapInformer(clientset, namespace, resyncPeriod,
		cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, func(options *v1.ListOptions) {
			options.FieldSelector = fields.OneTermEqualSelector("metadata.name", "app-config").String()
		})

cmInformer.AddEventHandler(xxxx)

but if i use kubernetes-sigs/controller-runtime, I noticed that kubernetes-sigs/controller-runtime does not provide any method to filter when the watch apiserver resource changes
How can i do it ？
thank you for you reply

Closing comment (2020-10-25T20:49:42Z): @alvaroaleman: Closing this issue.

In response to this:

Closing as duplicate of #244
/close

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
Repository: kubernetes-sigs/controller-runtime

Issue #103: Channel Source is borked due to stop channel injection
Created: 2018-08-06T02:09:50Z
The Channel source expects the stop channel to be injected before calling Start, but the stop channel on the controller manager will be nil until ControllerManager#Start is called.  Since most people will probably call Controller#Watch before ControllerManager#Start, this breaks the channel source.
I've got a patch to fix it in the works, but wanted to file this so that I don't forget.

Duplicate issue #116: Watching Channels doesn't work
Created: 2018-08-23T12:32:02Z
Adding a watch on channels, as mentioned in kubebuilder docs, on a fresh generated controller fails when running tests with the following error:
	testing_t_support.go:22: 
			/home/u/go/src/github.com/presslabs/mysql-operator/vendor/github.com/onsi/gomega/internal/assertion/assertion.go:69 +0x1ed
		github.com/presslabs/mysql-operator/vendor/github.com/onsi/gomega/internal/assertion.(*Assertion).NotTo(0xc42039ba40, 0x1332420, 0x1b92b68, 0x0, 0x0, 0x0, 0x1342260)
			/home/u/go/src/github.com/presslabs/mysql-operator/vendor/github.com/onsi/gomega/internal/assertion/assertion.go:43 +0xae
		github.com/presslabs/mysql-operator/pkg/controller/mysqlbackup.TestReconcile(0xc42010e1e0)
			/home/u/go/src/github.com/presslabs/mysql-operator/pkg/controller/mysqlbackup/mysqlbackup_controller_test.go:53 +0x2f5
		testing.tRunner(0xc42010e1e0, 0x12ae268)
			/usr/local/go/src/testing/testing.go:777 +0xd0
		created by testing.(*T).Run
			/usr/local/go/src/testing/testing.go:824 +0x2e0
		
		Expected error:
		    <*errors.errorString | 0xc4200bf5d0>: {
		        s: "must call InjectStop on Channel before calling Start",
		    }
		    must call InjectStop on Channel before calling Start
		not to have occurred

The changes that I made to a fresh generated controller are:
diff --git a/pkg/controller/mysqlbackup/mysqlbackup_controller.go b/pkg/controller/mysqlbackup/mysqlbackup_controller.go
index bebdfce8..7935c0fb 100644
--- a/pkg/controller/mysqlbackup/mysqlbackup_controller.go
+++ b/pkg/controller/mysqlbackup/mysqlbackup_controller.go
@@ -35,6 +35,8 @@ import (
        "sigs.k8s.io/controller-runtime/pkg/manager"
        "sigs.k8s.io/controller-runtime/pkg/reconcile"
        "sigs.k8s.io/controller-runtime/pkg/source"
+
+       "sigs.k8s.io/controller-runtime/pkg/event"
 )
 
 /**
@@ -78,6 +80,15 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
                return err
        }
 
+       events := make(chan event.GenericEvent)
+       err = c.Watch(
+               &source.Channel{Source: events},
+               &handler.EnqueueRequestForObject{},
+       )
+       if err != nil {
+               return err
+       }
+
        return nil
 }
What happens:

the stop channel is added after the watcher is registered, when the manager is started
then when the Channel source is registered in the Watch method the stop channel is inserted but its inserts a nil channel.
when the source starts checks for a stop channel to be different than nil and fails , here

Closing comment (2018-08-23T12:33:53Z): I will close it, it's a duplicate of #103
Repository: kubernetes-sigs/controller-runtime

Issue #1799: Tests crash if os.UserCacheDir() returns an unusable directory
Created: 2022-02-10T13:46:23Z
Since commit 58c17f6 (“addr.Suggest should lock a file instead of memory”), pkg/internal/testing/addr/manager.go’s init() function tries to create a directory using either os.UserCacheDir() or os.TempDir(), whichever succeeds first. In many build environments, $HOME is non-empty but points to an unusable directory; in such cases, os.UserCacheDir() returns an unusable directory, which causes init() to panic.
It could instead try os.TempDir(), which is usable in many more scenarios than os.UserCacheDir().

Duplicate issue #1845: Panic creating kubebuilder-envtest cache directory
Created: 2022-03-24T18:34:30Z
Encountered following error:
$ kubectl -n infra logs -f eks-provider-db6d54fd5-gzx7t
panic: mkdir /.cache: permission denied

goroutine 1 [running]:
sigs.k8s.io/controller-runtime/pkg/internal/testing/addr.init.0()
	/workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/testing/addr/manager.go:51 +0xda

controller-runtime version: v0.9.6
golang version: go1.17.7
The issue is related to the init function that sets up kubebuilder-envtest caching directory, see code.
The UserCacheDir is supposed to return the cache directory location. In the pod setup, HOME is set to / and XDG_CACHE_HOME is not set so UserCacheDir ends up returning //.cache without emitting error. However, the process doesn't have permission to create directory under that location and thus it paniced.
One walkaround is to manually set XDG_CACHE_HOME to /tmp in deployment spec. It would be great if we have logic that fall back to using /tmp on permission issues.

Closing comment (2022-04-05T07:31:27Z): This is a duplicate of #1799.
Repository: kubernetes-sigs/controller-runtime

Issue #2238: Don't set global workqueue MetricsProvider
Created: 2023-03-14T20:19:34Z
Currently, controller-runtime sets the global workqueue MetricsProvider in an init method which makes it impossible for users of the library to configure their own.
As noted in:

kubernetes/client-go#1193
kubernetes/kubernetes#114242 (comment)
SIG API meeting: https://docs.google.com/document/d/1x9RNaaysyO0gXHIr1y50QFbiL1x8OWnk2v3XnrdkT5Y/edit?pli=1#heading=h.41qdxxsr3sdz

Duplicate issue #2670: Create a separate registry for work-queue metrics
Created: 2024-02-01T06:02:53Z
Hi all!
We are using custom controllers to manage our custom resources, and wish to export the workqueue metrics to Prometheus.
This is done by using the workqueue.SetProvider() provided by kubernetes.io/client-go.
When we try to register our metrics using this function in our init(), this doesn't take effect, as the init() function being used in the metrics package of this repo seems to making the call to SetProvider() first.
We can make use of this registry that you provide. It however comes with a whole lot of other metrics which we do not wish to export, such as - leader election, latency, request size, response size and other client metrics. And since they're internal we aren't able to unregister them.
Wonder if we can either:

[The best option in my opinion] Create a separate registry for just workqueue metrics in this repo and not add the other metrics to it, so that we can use it in our project. We can then combine all those metrics along with the non-workqueue related ones in a separate registry, thus unaffecting the previous behaviour.
Not have the init() function altogether in the metrics.go file. Instead provide those functionalities as a separate function, so that we users can call it in our init(). This way, if we choose to, we can create our own metrics and call SetProvider() ourselves.
Any other option which might not have been covered above...
Or is there a way we can tackle this on our side without having to make any changes here?

I'm up for working on this issue.

Closing comment (2024-07-01T16:04:33Z): This issue is effectively a duplicate of #2238, except that it assumes a solution. Lets keep the discussion for this in the other issue.
Repository: kubernetes-sigs/controller-runtime

Issue #1159: Metadata-only list/watch support
Created: 2020-09-10T18:46:10Z
The kube apiserver supports listing and watching just the metadata for resources.  We should expose support for this both in our watch machinery and in our client.
This is particularly useful for performance when watching large numbers of different resources, or when you're watching a particularly numerous resource but need only the metadata for most/all instances of the resource.
/kind feature
/priority important-longterm

Duplicate issue #1086: Support partial metadata informers / watches
Created: 2020-07-29T21:20:35Z
Client-go has support for a metadata-only client and informer which can be found https://github.com/kubernetes/client-go/tree/36233866f1c7c0ad3bdac1fc466cb5de3746cfa2/metadata. This can be useful when users don't want to cache particular objects, but metadata is usually enough to receive notifications.
/milestone Next
/kind design
/cc @ncdc

Closing comment (2020-09-15T21:53:12Z): @alvaroaleman: Closing this issue.

In response to this:

Closing as duplicate of #1159 (Because I find the title of the latter more clear :) )
/close

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
Repository: kubernetes-sigs/controller-runtime

Issue #244: Enable filtered list watches as watches
Created: 2018-12-12T12:08:02Z
When setting up watches during initialization it's currently not possible to filter by any selectors (which is possible using list watches).
For example it is not possible to only watch pods with specific labels (e.g having the label pod-type: my-controller-type). The current behavior results in very broad caching, which might not be desirable for large Kubernetes deployments.
In some scenarios an operator could contain multiple controllers, and they all share caches, so keying caches on GVK's alone might be problematic if they want to watch the same resource type, but with different filters.
When doing List/Get, how would one decide which of the caches to use? It seems that perhaps this needs to be an explicit choice by the operator developers?

Duplicate issue #687: Ability to create watches for different namespaces
Created: 2019-11-20T21:10:44Z
We have a use case where we have 2 namespaced resources, and a controller watching resources of type A in all namespace, but it would also like to watch resources of type B for a single specific namespace (for instance based on which namespace an instance of 'A' exists). At present, this is not possible to watch instances of B in a specific namespace. The alternative of watching resource B in all namespaces is not desired (lets say B is the Secret type, and we would like to avoid overly wide privileges for the operator).
Right now namespace is configured at the manager level, but ideally for our use case, we should be able to specify a namespace when watching resources, similar to what was discussed here: #124 (comment)
What would be required to allow the above, and is a contribution of that something that would get accepted?

Closing comment (2019-11-22T18:32:17Z): @alvaroaleman: Closing this issue.

In response to this:

IMHO this is a duplicate of #244 . Feel free to re-open if you disagree.
/close

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
Repository: kubernetes-sigs/descheduler

Issue #1170: DefaultEvictor to support Delete verb
Created: 2023-06-14T18:32:58Z
Is your feature request related to a problem? Please describe.

Consider a strategy such as pods with too many restarts, it is very likely that the PDB is already violated so eviction will not be able to evict as it would violate the budget.
app-server-6996cdf64f-7shnv                              0/2     Init:CrashLoopBackOff   150 (2m54s ago)   12h
app-server-7dd65cc5ff-5rkw6                              0/2     Init:CrashLoopBackOff   154 (3m32s ago)   12h
app-server-7dfdf8c678-2dd2x                              2/2     Running                            0                              12h

PDB:
apiVersion: policy/v1
kind: PodDisruptionBudget
spec:
  maxUnavailable: 20%
  selector:
    matchLabels:
      app.kubernetes.io/name: app-server

Describe the solution you'd like

Ability to instruct DefaultEvictor to use delete instead of evict.
Describe alternatives you've considered

Custom plugin
What version of descheduler are you using?
descheduler version: v0.27.1
Additional context

    - name: "DefaultEvictor"
      args:
        verb: delete # default is evict

Duplicate issue #1253: Add support for pod deletion (vs. eviction)
Created: 2023-10-03T16:38:10Z
There are times when "evict" is not sufficient to remove pods.
Consider a use-case when the pod is stuck in the "Terminating" state, which could happen for various reasons, but mainly due to the "kubelet" related issues (not running, network, etc).
Currently, we typically run kubectl delete --force --grace-period=0 to overcome this issue.
Granted, such a workaround is not always applicable to all workloads (for example, stateful, etc.).
It is still could be very useful to craft a policy that would address the use case of pods stuck in a "Terminating" state.

Closing comment (2023-10-07T13:44:41Z): Duplicate of #1170
Repository: kubernetes-sigs/descheduler

Issue #604: TopologySpreadConstraint should take target node's requests allocation into consideration before evicting
Created: 2021-07-15T01:47:41Z
Is your feature request related to a problem? Please describe.

TopologySpreadConstraint strategy should take target node's requests allocation into consideration before evicting them.
For example, if I have 3 nodes in the cluster with 3 domains size [7 5 3], maxSkew=1, whenUnsatisfiable=ScheduleAnyways, it will attempt to evict 2 pods from the node1 and place them on node3 without any consideration of whether node3 is over-allocated or not. If the cluster is not set to scale, we will get in a constant evict/schedule loop as the 2 pods get evicted (and since node3 is over-allocated), Scheduler will put it back on node1 again.
Describe the solution you'd like

It would be ideal for Descheduler to take target node's requests allocation into consideration to see if the pods that are about to be evicted would fit on the target node.
Describe alternatives you've considered

No workarounds.
What version of descheduler are you using?
descheduler version: v0.21.0
Additional context

This is related to other non-utilization strategies as well.

Duplicate issue #785: Cluster Node Skew Eviction Loop
Created: 2022-04-14T19:44:57Z
Is your feature request related to a problem? Please describe.
Yes, currently our clusters may have node skew to one AZ. In such cases the scheduler may try and place the pod back on the same az/sometimes even node it was just evicted from. This causes an eviction loop until the cluster rebalances it's AZs.
Describe the solution you'd like
The RemovePodsViolatingTopologySpreadConstraint should be stateful so it can prevent continuous eviction on the same nodes. (maybe even az). perhaps it should also take cluster node skew into constraint.
Describe alternatives you've considered
Currently looking into why our clusters nodes are skewing heavily to some AZs, external of descheduler.
What version of descheduler are you using?
descheduler version: 1.23

Closing comment (2022-04-19T23:47:38Z): Any chance this is a duplicate of #604?
AFAICT PR #636 seems pretty close to being ready 🤞🏼