Skip to content

Conversation

imsodin
Copy link
Member

@imsodin imsodin commented Dec 18, 2020

With fs debug logging we print information about what called the fs method. However for case- and mtime-fileysstems, this information is entirely useless, as it just points at the overriding method in those wrappers (e.g. chmod just says it was called by chmod). To prevent that I added a utility function that ensures proper wrapping order:

// wrapFilesystem should always be used when wrapping a Filesystem.
// It ensures proper wrapping order, which right now means:
// `logFilesystem` needs to be the outermost wrapper for caller lookup.
func wrapFilesystem(fs Filesystem, wrapFn func(Filesystem) Filesystem) Filesystem {

calmh
calmh previously approved these changes Dec 21, 2020
Copy link
Member

@calmh calmh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM unless you wanna tweak

Comment on lines +263 to +265
// wrapFilesystem should always be used when wrapping a Filesystem.
// It ensures proper wrapping order, which right now means:
// `logFilesystem` needs to be the outermost wrapper for caller lookup.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have two different wrapping orders of logfs and walkfs, depending on whether we want to debug above or below walkfs... Probably that does not matter, and maybe we should remove the walkfs trace option as this is potentially confusing

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having both fs and walkfs has merits: The former will just print one debug line that it will start walking now, the latter will also print every filesystem operation that occurs while walking - I think I remember I needed that huge walking verbosity once. And the unwrapping added in this PR is correct for both cases: It's appropriate for the filesystem calls originating in the walking code to give the fs walking code as the caller.

@@ -1192,3 +1192,31 @@ func TestEmptyPatterns(t *testing.T) {
}
}
}

func TestUnignoredParent(t *testing.T) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Random test case is random?

@calmh calmh merged commit a744dee into syncthing:main Dec 21, 2020
calmh added a commit to calmh/syncthing that referenced this pull request Dec 21, 2020
* main: (27 commits)
  lib/fs: Correct wrapping order for meaningful log-caller (syncthing#7209)
  all: Handle errors opening db/creating file-set (ref syncthing#5907) (syncthing#7150)
  cmd/relaypoolsrv: Allow validation of relay join requests by certificate (fixes syncthing#7196) (syncthing#7217)
  lib: Close underlying conn in protocol (fixes syncthing#7165) (syncthing#7212)
  lib/db: Prevent IndexID creation race (syncthing#7211)
  gui: Reflect change in untrusted in sharing tab (syncthing#7201)
  lib/db: Remove index ids when dropping folder (syncthing#7200)
  lib/model: Fix flaky test and add some scanning debug (syncthing#7214)
  lib: Consistently set suture logging (syncthing#7202)
  lib/model: Unflake TestIgnoreDeleteUnignore (syncthing#7208)
  gui: Apply changes to untrusted (ref syncthing#6443) (syncthing#7206)
  lib/config: Remove deprecated pending entries from config (ref syncthing#6443) (syncthing#7204)
  all: Store pending devices and folders in database (fixes syncthing#7178) (syncthing#6443)
  gui, man, authors: Update docs, translations, and contributors
  gui: Sort folders and devices in advanced config modal (syncthing#7192)
  model: Actually print folder description in "Overriding" log message
  gui: version.tags is an array, which is truthy when empty
  build: Switch to gopsutil's v3 module (syncthing#7191)
  build: Update notify (fixes syncthing#7076) (syncthing#7189)
  lib/api: Returns tags in version as list (syncthing#7190)
  ...
@imsodin imsodin deleted the fs/wrapOrder branch December 21, 2020 14:43
@calmh calmh added this to the v1.13.0 milestone Dec 21, 2020
hiqua pushed a commit to hiqua/syncthing that referenced this pull request Jan 11, 2021
tomasz1986 pushed a commit to tomasz1986/syncthing that referenced this pull request Mar 2, 2021
)

Signed-off-by: Tomasz Wilczyński <twilczynski@naver.com>
@st-review st-review added the frozen-due-to-age Issues closed and untouched for a long time, together with being locked for discussion label Dec 22, 2021
@syncthing syncthing locked and limited conversation to collaborators Dec 22, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
frozen-due-to-age Issues closed and untouched for a long time, together with being locked for discussion
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants