# What changed in concurrent-log-handler

> 12 changes in concurrent-log-handler 0.9 from its official release notes, upgrade guides and advisories: 1 breaking, 1 security, 1 new APIs and options. Each one cited. Sources checked 2026-10-27. HTML: https://unstale.sh/pypi/concurrent-log-handler/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## concurrent-log-handler 0.9

### Breaking changes

- The handler creates the log file on first write rather than in its constructor; the delay argument is ignored. (0.9.30) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.30)

### Security

- When chmod or owner is configured, files are now pre-created with the correct permissions so other processes do not see them with intermediate permissions. (0.9.30) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.30)

### New APIs and options

- Adds a hook to customize ConcurrentTimedRotatingFileHandler before its first rollover. (0.9.29) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.29)

### Performance

- Fixes a Windows performance issue. (0.9.31) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.31)
- A duplicate stale-file check was removed from each write, cutting time per write by about 13% on a local disk when maxBytes is set. (0.9.30) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.30)

### Behavior and default changes

- The handler skips chmod and chown when a file already has the configured mode and owner, and treats failures as non-fatal, preventing writes from failing for files owned by another user. (0.9.30) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.30)
- Both handlers keep an uncompressed rotated file after gzip fails, rather than deleting it or overwriting it during a later rotation. (0.9.30) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.30)

### Fixes and other changes

- Configured chmod and owner settings now apply to rotated `.gz` files. (0.9.30) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.30)
- After fork, the child resets the handler's thread lock and clears inherited lock state, preventing hangs on logging and premature release of the parent's file lock. (0.9.30) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.30)
- Python 3.15 is now supported. (0.9.30) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.30)
- Rotated `.gz` files now use the configured umask instead of the process default umask. (0.9.30) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.30)
- Handlers inherited by child processes now reopen the lock file for independent lock isolation, and an in-process threading lock prevents threads from bypassing flock() serialization. (0.9.29) — [release notes](https://github.com/Preston-Landers/concurrent-log-handler/releases/tag/0.9.29)
