Skip to content

ADDED: CloseWrite event support#252

Closed
fkocik wants to merge 1 commit intofsnotify:masterfrom
fkocik:feature-event-close-write
Closed

ADDED: CloseWrite event support#252
fkocik wants to merge 1 commit intofsnotify:masterfrom
fkocik:feature-event-close-write

Conversation

@fkocik
Copy link
Copy Markdown

@fkocik fkocik commented Jun 23, 2018

Hello guys,

What does this pull request do?

When using fsnotify to be notified after big file writing under Linux, it is difficult to determine if writing process is terminated because inotify send WRITE event on each write system call.

The goal of this patch is to introduce a new sort of event named CloseWrite that match IN_CLOSE_WRITE semantic (https://www.systutorials.com/docs/linux/man/7-inotify/) and can be usefull when reading big files that must be completely written before access (such as zip files).

Where should the reviewer start?

As a Linux addict, I don't know how to implement Windows and OS-X ports of this patch so I just added CloseWrite operation in fsnotify.go and update inotify.go for Linux implementation.

So, the new operation is does not work on other OSes for now.

How should this be manually tested?

Under Linux using fsnotify.CloseWrite as event operation mask allow to be notified only once on big file writing, when write action is finished.

Regards.

@radu-munteanu
Copy link
Copy Markdown

This pull won't get through as it's not cross-platform. This has been already discussed a few times.

Please check the references below:
#235 #202 #191 #173 #22

@nhooyr nhooyr closed this Jul 9, 2018
@nhooyr
Copy link
Copy Markdown
Contributor

nhooyr commented Jul 9, 2018

Thank you for the PR.

Unfortunately, without cross platform support, it cannot get in.

@imyuliz
Copy link
Copy Markdown

imyuliz commented Aug 15, 2018

very good, That's exactly what I want.

mssonicbld added a commit to mssonicbld/sonic-gnmi that referenced this pull request Jul 8, 2025
<!--
     Please make sure you've read and understood our contributing guidelines:
     https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

     ** Make sure all your commits include a signature generated with `git commit -s` **

     If this is a bug fix, make sure your description includes "fixes #xxxx", or
     "closes #xxxx" or "resolves #xxxx"

     Please provide the following information:
-->

#### Why I did it

MS ADO: 33377547

If we have a slow writer to a cert file that is monitored such that they truncate the file, and write bytes at a time, we will see excessive amount of WRITE events such that our server will try to reload on each one. With CloseWrite supported, once a writer has finished writing to the file and closed the file we will then try the reload. We also add logic to distinguish between CREATE and IN_MOVED_TO events such that we will reload on IN_MOVED_TO but not CREATE events.

#### How I did it

1) Added a patch for fsnotify to support CLOSE_WRITE events and distinguish between CREATE and IN_MOVED_TO events
2) Change telemetry server to monitor for CLOSE_WRITE instead of just WRITE events and monitor IN_MOVED_TO instead of CREATE events.

Patched is based off fsnotify/fsnotify#252

#### How to verify it

Manual test, UT

#### Which release branch to backport (provide reason below if selected)

<!--
- Note we only backport fixes to a release branch, *not* features!
- Please also provide a reason for the backporting below.
- e.g.
- [x] 202006
-->

- [ ] 201811
- [ ] 201911
- [ ] 202006
- [ ] 202012
- [ ] 202106
- [ ] 202111

#### Description for the changelog
<!--
Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->

#### Link to config_db schema for YANG module changes
<!--
Provide a link to config_db schema for the table for which YANG model
is defined
Link should point to correct section on https://github.com/Azure/SONiC/wiki/Configuration.
-->

#### A picture of a cute animal (not mandatory but encouraged)
mssonicbld added a commit to sonic-net/sonic-gnmi that referenced this pull request Jul 11, 2025
…nt (#441)

<!--
 Please make sure you've read and understood our contributing guidelines:
 https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

 failure_prs.log skip_prs.log Make sure all your commits include a signature generated with `git commit -s` **

 If this is a bug fix, make sure your description includes "fixes #xxxx", or
 "closes #xxxx" or "resolves #xxxx"

 Please provide the following information:
-->

#### Why I did it

MS ADO: 33377547

If we have a slow writer to a cert file that is monitored such that they truncate the file, and write bytes at a time, we will see excessive amount of WRITE events such that our server will try to reload on each one. With CloseWrite supported, once a writer has finished writing to the file and closed the file we will then try the reload. We also add logic to distinguish between CREATE and IN_MOVED_TO events such that we will reload on IN_MOVED_TO but not CREATE events.

#### How I did it

1) Added a patch for fsnotify to support CLOSE_WRITE events and distinguish between CREATE and IN_MOVED_TO events
2) Change telemetry server to monitor for CLOSE_WRITE instead of just WRITE events and monitor IN_MOVED_TO instead of CREATE events.

Patched is based off fsnotify/fsnotify#252

#### How to verify it

Manual test, UT

#### Which release branch to backport (provide reason below if selected)

<!--
- Note we only backport fixes to a release branch, *not* features!
- Please also provide a reason for the backporting below.
- e.g.
- [x] 202006
-->

- [ ] 201811
- [ ] 201911
- [ ] 202006
- [ ] 202012
- [ ] 202106
- [ ] 202111

#### Description for the changelog
<!--
Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->

#### Link to config_db schema for YANG module changes
<!--
Provide a link to config_db schema for the table for which YANG model
is defined
Link should point to correct section on https://github.com/Azure/SONiC/wiki/Configuration.
-->

#### A picture of a cute animal (not mandatory but encouraged)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants