Coder Social home page Coder Social logo

Comments (15)

sevkin avatar sevkin commented on June 5, 2024 3

@githubnemo plz add solution about fs.inotify.max_user_watches in notes section of readme

from compiledaemon.

githubnemo avatar githubnemo commented on June 5, 2024 1

A gotcha. This is from fsnotify.Watcher.Add() which roughly translates to the inotify_add_watch syscall which describes the failure mode ESPC as follows:

ENOSPC The user limit on  the  total  number  of  inotify  watches  was
        reached or the kernel failed to allocate a needed resource.

Consider increasing the number of possible inotify watches.

from compiledaemon.

githubnemo avatar githubnemo commented on June 5, 2024

That is unexpected.

Any special things concerning your environment? OS? What file system are you using?

from compiledaemon.

cameracker avatar cameracker commented on June 5, 2024

Sorry for the delay.

After a few reboots and such I determined that running the command in visual studio code's integrated terminal causes this problem, and in some unknown cases can cause CompileDaemon to yield this error until reboot. I'm not sure what about VSC causes the error, or why it is permanent sometimes but I think it can be worked around by simply not running it in VSC :)

from compiledaemon.

githubnemo avatar githubnemo commented on June 5, 2024

Well, that's odd.

So I assume you are starting CompileDaemon more than once in the VSC terminal? Because Walk() is only called once at the beginning. Maybe there are other instances of CompileDaemon lingering in the background, eating up all free file descriptors and at the end, Walk() in the new instance cannot open any more files?

from compiledaemon.

cameracker avatar cameracker commented on June 5, 2024

In this case we only use CompileDaemon for one specific component of our software and only use it there. So there should have only been one instance.

I suspected that there was a lingering instance initially, but couldn't find evidence of that using ps or any other task manager. And it doesn't explain why after a reboot ->VSC start it'd be busted. I'll keep poking at it and will share anything interesting I find, but I don't know if there's anything in particular to figure out.

Thanks for paying attention to this :)

from compiledaemon.

robbert229 avatar robbert229 commented on June 5, 2024

Encountered the same issue on a fresh reboot. Not using VSCode but I am using Atom.

from compiledaemon.

githubnemo avatar githubnemo commented on June 5, 2024

@robbert229 any infos on the environment you are using? How do you invoke CD?

from compiledaemon.

robbert229 avatar robbert229 commented on June 5, 2024

I am running Arch Linux, and I was attempting to invoke

CompileDaemon -exclude-dir=./minio-data -exclude-dir=./neo4j-data -color -build="go build -o api.exe server" -command="npm run api" -graceful-kill=true -log-prefix=false

Edit

Found the solution! It turns out that -exclude-dir wouldn't exclude the desired directories, this is because of the ./ prefixing the directory name.The flag -exclude-dir=./vendor wouldn't ignore the vendor directory

Will looking through the source for the cause of my problems I saw that filepath.Walk had somthing interesting in it. info.Name() returns the name of the file. If it was walking over ./vendor/aws/foo.go it would be foo.go, is this intended behavior?

err = filepath.Walk(*flag_directory, func(path string, info os.FileInfo, err error) error {
	if err == nil && info.IsDir() {

		if flag_excludedDirs.Matches(info.Name()) {
			return filepath.SkipDir
		} else {
			fmt.Printf("Adding: %s\n", path)
			return watcher.Add(path)
		}
	}
	return err
})

from compiledaemon.

githubnemo avatar githubnemo commented on June 5, 2024

This problem would be detected earlier if CD had a verbose mode, plotting the watched directories. Good job at identifying the problem, I haven't looked into it yet but this looks promising. I will look into this momentarily.

from compiledaemon.

githubnemo avatar githubnemo commented on June 5, 2024

@robbert229 thanks for finding the actual issue behind this problem! It should be fixed now.

from compiledaemon.

mrosentr avatar mrosentr commented on June 5, 2024

I still have this issue with Ubuntu 16.04 64bit after recompiling fix#23.

from compiledaemon.

githubnemo avatar githubnemo commented on June 5, 2024

@mrosentr Can you paste the command line of how you invoke CD and the output when starting with -verbose?

from compiledaemon.

mrosentr avatar mrosentr commented on June 5, 2024

I use this one primarily:
CompileDaemon -directory=. -build="go build -o server" -command="./server" -color=true -verbose

Have also tried this:
CompileDaemon -directory=/path-to-source -build="go build -o server" -command="./server" -color=true -verbose

Output:
2017/03/15 14:22:17 Watching directory '.' for changes.
2017/03/15 14:22:17 filepath.Walk():no space left on device

from compiledaemon.

mrosentr avatar mrosentr commented on June 5, 2024

Increasing the inotify watches worked! ty!

from compiledaemon.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.