Page MenuHomePhabricator
Feed Advanced Search

Apr 28 2022

epriestley added a revision to T13556: Setting "phd.trace" may cause TTY testing with "posix_isatty()" against closed pipes: D21794: Mostly remove "STDERR" and "STDOUT" constants from Arcanist.
Apr 28 2022, 10:25 PM · Daemons
epriestley added a comment to T13556: Setting "phd.trace" may cause TTY testing with "posix_isatty()" against closed pipes.

Another open question is: before we call posix_isatty(STDOUT), how do we test whether STDOUT is a valid handle?

Apr 28 2022, 10:23 PM · Daemons

Apr 20 2022

epriestley closed T13555: In "ExecFuture", "proc_get_status()" may be passed NULL, possibly leading to a daemon stall as Resolved.

I believe the above changes resolved this, and it hasn't cropped up again.

Apr 20 2022, 9:03 PM · Daemons
epriestley closed T13572: Daemon overseers may have a slow memory leak, possibly in FuturePool as Resolved.

I believe D21466 resolved this, since it hasn't cropped up again even though daemon runtimes between restarts have been very long at various periods in the last year.

Apr 20 2022, 7:22 PM · Daemons

Apr 19 2022

epriestley closed T13579: Overseer may fatal when trying to write to "pid" property in "annihilateProcessGroup()" as Resolved.

This was resolved by D21452. PHI1880 has some unrelated additional plans.

Apr 19 2022, 9:31 PM · Daemons

Mar 10 2021

epriestley closed T13625: Daemons may make commit-related API calls as users without privileges as Resolved.

Although I didn't look particularly hard, I can't immediately find any more evidence that this is occurring in production.

Mar 10 2021, 6:26 PM · Diffusion, Daemons

Mar 2 2021

epriestley updated the task description for T13625: Daemons may make commit-related API calls as users without privileges.
Mar 2 2021, 11:29 PM · Diffusion, Daemons

Mar 1 2021

epriestley added a comment to T13625: Daemons may make commit-related API calls as users without privileges.

When we are importing a commit, we often don't have any legitimate user to act as: the commit may come from an observed repository (so we never authenticated a pusher), and the "Author" and "Committer" strings are arbitrary and untrusted in Git and Mercurial.

Mar 1 2021, 7:09 PM · Diffusion, Daemons
epriestley added a revision to T13625: Daemons may make commit-related API calls as users without privileges: D21582: When updating revisions in responset to commits, use the omnipotent viewer to pull diffs.
Mar 1 2021, 7:00 PM · Diffusion, Daemons
epriestley added a comment to T13625: Daemons may make commit-related API calls as users without privileges.

All three of these are almost certainly diffusion.rawdiffquery, I think the first one just predated D21463 reaching production so it didn't show the method.

Mar 1 2021, 6:15 PM · Diffusion, Daemons

Feb 27 2021

epriestley updated the task description for T13625: Daemons may make commit-related API calls as users without privileges.
Feb 27 2021, 7:41 PM · Diffusion, Daemons
epriestley triaged T13625: Daemons may make commit-related API calls as users without privileges as Normal priority.
Feb 27 2021, 7:38 PM · Diffusion, Daemons

Feb 24 2021

epriestley triaged T13619: Provide an administrative tool to adjust TriggerClock configuration as Low priority.
Feb 24 2021, 10:13 PM · Daemons, Phacility

Feb 2 2021

epriestley closed T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT" as Resolved.

Update the daemon UI to break tasks down by object/container.

Feb 2 2021, 10:37 PM · Daemons, Diffusion
epriestley added a comment to T13561: Allow the daemons to generate tasks dynamically at runtime.

See T13591. Tasks now (may) have a containerPHID, and whatever daemon console changes are made in service of dynamic generation should also expose container objects.

Feb 2 2021, 10:35 PM · Daemons
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21536: Add basic documentation for using "bin/worker" to manage imports of large repositories.
Feb 2 2021, 9:38 PM · Daemons, Diffusion
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21535: Add "bin/worker delay" and "bin/worker priority" utilities for managing task queues.
Feb 2 2021, 12:28 AM · Daemons, Diffusion

Feb 1 2021

epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21534: Add more selectors to existing "bin/worker" commands.
Feb 1 2021, 9:53 PM · Daemons, Diffusion
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21533: Internally, align commit processing tasks around PHIDs, not IDs.
Feb 1 2021, 8:07 PM · Daemons, Diffusion
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21532: Improve consistency in use of "via", "objectPHID", and "containerPHID" parameters in repository workers.
Feb 1 2021, 7:44 PM · Daemons, Diffusion

Jan 29 2021

epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21531: Add support for a "containerPHID" in the worker queue.
Jan 29 2021, 12:33 AM · Daemons, Diffusion
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21529: Introduce storage patch "phases" to allow index-rebuilding patches to execute after worker queue schema changes.
Jan 29 2021, 12:23 AM · Daemons, Diffusion

Jan 23 2021

epriestley added a comment to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT".

After D21518:

Jan 23 2021, 3:51 AM · Daemons, Diffusion
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21518: Correct some issues around IMPORTED_PERMANENT in RefEngine.
Jan 23 2021, 12:38 AM · Daemons, Diffusion
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21517: Support an "--active" flag for selecting active tasks.
Jan 23 2021, 12:10 AM · Daemons, Diffusion

Jan 22 2021

epriestley added a comment to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT".

These parts seem likely resolved once I convince myself the patches so far actually work:

Jan 22 2021, 11:57 PM · Daemons, Diffusion
epriestley added a comment to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT".

I have a change to add containerPHID locally, but it ends up having relatively high complexity because several other patches (including 20190909.herald.01.rebuild.php) call PhabricatorRebuildIndexesWorker::rebuildObjectsWithQuery(...), which does not work if executed in sequence prior to a worker queue schema change.

Jan 22 2021, 11:47 PM · Daemons, Diffusion
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21516: Lift logic for queueing commit import tasks into RepositoryEngine.
Jan 22 2021, 10:50 PM · Daemons, Diffusion
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21515: Separate "shouldPublishRef()" from "isPermanentRef()" and set "IMPORTED_PERMANENT" more narrowly.
Jan 22 2021, 10:09 PM · Daemons, Diffusion
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21514: Rename "IMPORTED_CLOSEABLE" to "IMPORTED_PERMANENT" to clarify the meaning of the flag.
Jan 22 2021, 9:41 PM · Daemons, Diffusion
epriestley added a comment to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT".

This also relates slightly to T13580, but I believe the two issues are addressable independently.

Jan 22 2021, 9:24 PM · Daemons, Diffusion
epriestley added a comment to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT".

However, I'd like to have a better understanding of how we're reaching this state, and I'm not satisfied that these repositories are going down the "natural" pathway (of changing ref definitions after the import starts) and suspect there is some more complicated interaction at play here.

Jan 22 2021, 9:18 PM · Daemons, Diffusion
epriestley added a revision to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": D21513: Correct the behavior of "bin/repository discover --repair".
Jan 22 2021, 8:25 PM · Daemons, Diffusion
epriestley added a comment to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT".

I'm hoping to land at least a narrow fix for this today to support an import in PHI1979 tomorrow. However, I'd like to have a better understanding of how we're reaching this state, and I'm not satisfied that these repositories are going down the "natural" pathway (of changing ref definitions after the import starts) and suspect there is some more complicated interaction at play here.

Jan 22 2021, 8:23 PM · Daemons, Diffusion
epriestley updated the task description for T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT".
Jan 22 2021, 6:47 PM · Daemons, Diffusion
epriestley updated the task description for T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT".
Jan 22 2021, 6:45 PM · Daemons, Diffusion
epriestley added a project to T13591: Importing repositories may incorrectly queue some tasks at "PRIORITY_COMMIT": Daemons.
Jan 22 2021, 6:05 PM · Daemons, Diffusion

Oct 26 2020

sshannin added a comment to T4627: PhabricatorTaskmasterDaemon 100% CPU load.

I know it's an old thread, but I am encountering what is, as far as I can tell, exactly the same issue. I'm on the latest version of trunk (~Oct 26) with php 5.5.9 on Linux 3.13.0. I also observed the issue on the May 30 version.

Oct 26 2020, 11:17 PM · Daemons

Oct 16 2020

epriestley added a revision to T13572: Daemon overseers may have a slow memory leak, possibly in FuturePool: D21478: Fix a typo of "previously" in FutureIterator.
Oct 16 2020, 7:31 PM · Daemons

Sep 17 2020

epriestley added a comment to T13572: Daemon overseers may have a slow memory leak, possibly in FuturePool.

This synthetic script demonstrates the conceptual problem with FutureIterator:

Sep 17 2020, 7:49 PM · Daemons

Sep 16 2020

epriestley closed T13569: When running worker tasks in-process, subtasks which fail incorrectly cause the parent tasks to fail as Resolved by committing rP737e7c85412c: When an in-process worker subtask fails permanently, don't fatal the whole….
Sep 16 2020, 12:37 AM · Daemons

Sep 8 2020

epriestley added a revision to T13569: When running worker tasks in-process, subtasks which fail incorrectly cause the parent tasks to fail: D21459: When an in-process worker subtask fails permanently, don't fatal the whole process.
Sep 8 2020, 8:15 PM · Daemons

Sep 4 2020

epriestley added a revision to T13579: Overseer may fatal when trying to write to "pid" property in "annihilateProcessGroup()": D21452: Remove obsolete write to "pid" property in "annihilateProcessGroup()" in Daemon Overseer.
Sep 4 2020, 11:39 PM · Daemons
epriestley triaged T13579: Overseer may fatal when trying to write to "pid" property in "annihilateProcessGroup()" as Normal priority.
Sep 4 2020, 11:38 PM · Daemons

Aug 17 2020

epriestley triaged T13572: Daemon overseers may have a slow memory leak, possibly in FuturePool as Low priority.
Aug 17 2020, 3:17 PM · Daemons

Aug 12 2020

epriestley triaged T13569: When running worker tasks in-process, subtasks which fail incorrectly cause the parent tasks to fail as Wishlist priority.
Aug 12 2020, 8:32 PM · Daemons

Aug 11 2020

epriestley updated the task description for T13561: Allow the daemons to generate tasks dynamically at runtime.
Aug 11 2020, 3:26 PM · Daemons
epriestley triaged T13561: Allow the daemons to generate tasks dynamically at runtime as Normal priority.
Aug 11 2020, 3:15 PM · Daemons

Jul 24 2020

epriestley added a comment to T13556: Setting "phd.trace" may cause TTY testing with "posix_isatty()" against closed pipes.

In D21426, I removed phd.trace and phd.verbose.

Jul 24 2020, 12:18 AM · Daemons

Jul 23 2020

epriestley added a revision to T13556: Setting "phd.trace" may cause TTY testing with "posix_isatty()" against closed pipes: D21426: Remove ancient "phd.trace" and "phd.verbose" configuration options.
Jul 23 2020, 7:22 PM · Daemons
epriestley claimed T13556: Setting "phd.trace" may cause TTY testing with "posix_isatty()" against closed pipes.
Jul 23 2020, 6:05 PM · Daemons
epriestley triaged T13556: Setting "phd.trace" may cause TTY testing with "posix_isatty()" against closed pipes as Wishlist priority.
Jul 23 2020, 6:05 PM · Daemons
epriestley added a revision to T13555: In "ExecFuture", "proc_get_status()" may be passed NULL, possibly leading to a daemon stall: D21425: Streamline handling of Futures and PIDs in daemons.
Jul 23 2020, 5:40 PM · Daemons
epriestley added a comment to T13555: In "ExecFuture", "proc_get_status()" may be passed NULL, possibly leading to a daemon stall.

The call sequence here is approximately:

Jul 23 2020, 5:11 PM · Daemons
epriestley added a revision to T13555: In "ExecFuture", "proc_get_status()" may be passed NULL, possibly leading to a daemon stall: D21424: Manage PIDs more carefully in DaemonHandle.
Jul 23 2020, 5:09 PM · Daemons
epriestley added a revision to T13555: In "ExecFuture", "proc_get_status()" may be passed NULL, possibly leading to a daemon stall: D21423: Give Futures clearer start/end and exception semantics.
Jul 23 2020, 5:07 PM · Daemons
epriestley triaged T13555: In "ExecFuture", "proc_get_status()" may be passed NULL, possibly leading to a daemon stall as Normal priority.
Jul 23 2020, 2:58 PM · Daemons

Jul 9 2020

epriestley closed T13369: When a large number of commits are pushed to a repository, import them at lower priority as Resolved.

This appears stable.

Jul 9 2020, 9:36 PM · Daemons, Diffusion

Aug 12 2019

epriestley closed T13374: Daemons summary table is missing a cell in the "Temporary Failures" row as Resolved by committing rPc092492a53e0: Fix missing display cell in daemon summary table.
Aug 12 2019, 7:46 PM · Daemons
epriestley added a revision to T13369: When a large number of commits are pushed to a repository, import them at lower priority: D20712: When many commits are discovered at once, import them at lower priority.
Aug 12 2019, 7:09 PM · Daemons, Diffusion
epriestley added a revision to T13374: Daemons summary table is missing a cell in the "Temporary Failures" row: D20710: Fix missing display cell in daemon summary table.
Aug 12 2019, 6:12 PM · Daemons

Aug 11 2019

epriestley triaged T13374: Daemons summary table is missing a cell in the "Temporary Failures" row as Low priority.
Aug 11 2019, 8:24 PM · Daemons

Aug 7 2019

epriestley triaged T13369: When a large number of commits are pushed to a repository, import them at lower priority as Low priority.
Aug 7 2019, 5:03 PM · Daemons, Diffusion

Jun 29 2019

epriestley closed T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date as Resolved.

This stuff is all deployed, now.

Jun 29 2019, 6:56 PM · Daemons, Phacility

Jun 26 2019

epriestley added a comment to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date.

cd provides "at least once" delivery guarantees.

Jun 26 2019, 1:44 AM · Daemons, Phacility
amckinley added a comment to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date.

cd provides "at least once" delivery guarantees.

Jun 26 2019, 12:13 AM · Daemons, Phacility

Jun 25 2019

epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: D20620: When matching process titles, don't attempt a match if we're out of "argv" parts.
Jun 25 2019, 10:21 PM · Daemons, Phacility
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: D20616: Make "PhutilProcessQuery" detection of overseer processes more robust.
Jun 25 2019, 12:51 AM · Daemons, Phacility

Jun 24 2019

epriestley closed T11037: `bin/phd status` is misleading about local / remote daemons as Resolved by committing rP08b9e70bea5c: Make "bin/phd status" report local daemons from the process list, not a mess of….
Jun 24 2019, 6:26 PM · Daemons, Restricted Project

Jun 20 2019

epriestley added a comment to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date.

I just ran into this for the first time:

Jun 20 2019, 11:04 PM · Daemons, Phacility
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: Restricted Differential Revision.
Jun 20 2019, 10:44 PM · Daemons, Phacility
epriestley added a comment to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date.

I've also never seen anyone use kill -TERM `cat /path/to/pidfile` in real life over some flavor of pkill, which is basically the same thing as "pattern match the process titles".

Jun 20 2019, 10:36 PM · Daemons, Phacility
epriestley added a comment to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date.

provided I'm not missing some secret reason to retain PID files.

Jun 20 2019, 10:34 PM · Daemons, Phacility
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: Restricted Differential Revision.
Jun 20 2019, 10:33 PM · Daemons, Phacility
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: D20608: Remove "phd.pid-directory" configuration and stop passing "piddir" to daemons.
Jun 20 2019, 10:11 PM · Daemons, Phacility
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: D20607: Stop writing PID files in daemons.
Jun 20 2019, 10:05 PM · Daemons, Phacility
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: D20606: Make "phd start" and "phd reload" use the process list, not PID files.
Jun 20 2019, 9:57 PM · Daemons, Phacility
epriestley added a comment to T11037: `bin/phd status` is misleading about local / remote daemons.

I've marked D20604 as resolving this; it does so by making bin/phd status report local process status only. I strongly suspect that this is probably a better / less confusing behavior.

Jun 20 2019, 9:37 PM · Daemons, Restricted Project
epriestley added a revision to T11037: `bin/phd status` is misleading about local / remote daemons: D20604: Make "bin/phd status" report local daemons from the process list, not a mess of local/remote information.
Jun 20 2019, 9:36 PM · Daemons, Restricted Project
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: D20604: Make "bin/phd status" report local daemons from the process list, not a mess of local/remote information.
Jun 20 2019, 9:36 PM · Daemons, Phacility
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: D20603: Remove "PhutilDaemonOverseer->findRunningDaemons()".
Jun 20 2019, 9:25 PM · Daemons, Phacility
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: D20602: Deprecate "bin/phd ... --gently" and update documentation.
Jun 20 2019, 9:23 PM · Daemons, Phacility
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: D20601: Drive "phd stop" entirely from the process list, not PID files on disk.
Jun 20 2019, 9:14 PM · Daemons, Phacility
epriestley added a revision to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date: D20600: Formalize a "Query" class for looking at the process list.
Jun 20 2019, 9:03 PM · Daemons, Phacility
epriestley added a comment to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date.

I have a patch for this which basically says "don't try to kill any process which doesn't look like a daemon process".

Jun 20 2019, 8:04 PM · Daemons, Phacility
epriestley added a comment to T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date.

This is probably somewhat entangled with T13253 and/or T11037 and this whole thing is kind of a mess.

Jun 20 2019, 7:32 PM · Daemons, Phacility
epriestley added a comment to T12543: `phd` can't handle PID properly when there are multiple phabricator daemons..

We've run instances in the Phacility cluster for a long time now, but this is generally not something we really support or plan to support since there's no real customer interest in instancing Phabricator.

Jun 20 2019, 7:25 PM · Daemons, Bug Report
epriestley created T13321: "bin/phd" may try to kill processes it does not own if the daemon PID logfiles on disk are out of date.
Jun 20 2019, 3:20 PM · Daemons, Phacility

Apr 15 2019

epriestley moved T9170: parsing giganto-normous commits causes admin headaches from Backlog to Far Future on the Diffusion board.
Apr 15 2019, 4:03 PM · Restricted Project, Daemons, Diffusion

Mar 5 2019

epriestley added a revision to T13253: Plans: Daemon Status Reporting: D20246: Give "bin/worker" flags to repeat and retry tasks.
Mar 5 2019, 1:36 AM · Plans, Daemons

Mar 2 2019

epriestley added a comment to T13253: Plans: Daemon Status Reporting.

Some old migrations call PhabricatorSearchWorker::queueDocumentForIndexing(). This no longer works after D20200 because the PHP implementation expects a dateCreated column to exist, but it won't exist until 20190220.daemon_worker.completed.02.sql runs.

Mar 2 2019, 2:04 PM · Plans, Daemons

Feb 20 2019

amckinley closed T5401: Record total time in queue for tasks as Resolved.
Feb 20 2019, 10:56 PM · Daemons
amckinley added a revision to T5401: Record total time in queue for tasks: D20200: Track total time from task creation to task archival.
Feb 20 2019, 7:18 PM · Daemons
epriestley added a comment to T13253: Plans: Daemon Status Reporting.

I'm looking at these storage/backend changes:

Feb 20 2019, 6:05 PM · Plans, Daemons
epriestley added a revision to T13253: Plans: Daemon Status Reporting: D20199: Remove some ancient daemon log code.
Feb 20 2019, 5:34 PM · Plans, Daemons

Feb 19 2019

epriestley closed T12425: User-initiated search reindex tasks can end up stuck behind import tasks in the daemon queue as Resolved by committing rP312ba3071485: Don't report search indexing errors to the daemon log except from "bin/search….
Feb 19 2019, 7:17 PM · Customer Impact, Daemons, Search, Diffusion

Feb 16 2019

epriestley closed T6615: Worker task table has some remaining awkward keys as Resolved by committing rP4b10bc2b643d: Correct schema irregularities (including weird keys) with worker task tables.
Feb 16 2019, 3:17 AM · Infrastructure, Daemons

Feb 15 2019

epriestley claimed T13052: Differentiate "Waiting" from "Restarting after an error" on the daemon console.
Feb 15 2019, 1:35 PM · Daemons
epriestley added a revision to T12425: User-initiated search reindex tasks can end up stuck behind import tasks in the daemon queue: D20178: Don't report search indexing errors to the daemon log except from "bin/search index".
Feb 15 2019, 1:30 PM · Customer Impact, Daemons, Search, Diffusion
epriestley added a revision to T12425: User-initiated search reindex tasks can end up stuck behind import tasks in the daemon queue: D20177: Queue search indexing tasks at a new PRIORITY_INDEX, not PRIORITY_IMPORT.
Feb 15 2019, 1:09 PM · Customer Impact, Daemons, Search, Diffusion