[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [eclipse-incubator-e4-dev] [resources] EFS IFileTree
|
Here is a different idea that might also
work:
1. Initiate breadth-first-search retrieval of IFileTree
data
2. While retrieving data in a stream, allow to send
a
blacklist of folders to the remote as
evaluate by a
local programmatic
filter
3. As soon as the remote receives the blacklist,
it
prunes the BFS tree that it's currently
working on
by the root nodes
received.
Sounds complex, but would allow for the most
efficient
evaluation of complex filters like "return folders
under
Team support only" even on a remote file
system.
Cheers,
--
Martin Oberhuber, Senior Member of Technical
Staff, Wind River
Target Management Project
Lead, DSDP PMC Member
The advantage of the Directory Stream approach is that
clients can
see / work on intermediate results before the traversal
is complete,
and they can cancel the Stream retrieval if the
intermediate
results don't match their
expectations.
I
agree that programmatic approaches like visitors or
arbitrary
coded filters are problematic when the receiver of the
query
is
remote (Java does support things like remote object
execution,
but
not all server-sides support Java...and local evaluation
of
the
filter might not always be a good fallback). LDAP filters
might be an interesting thing to explore, I haven't heard
about
these before but anything Standard seems like a good
thing
to
look at.
Here
is a different idea that might also work:
*
Initiate
Cheers,
--
Martin Oberhuber, Senior Member of Technical
Staff, Wind River
Target Management
Project Lead, DSDP PMC Member
IFileTree doesn't have a depth
because it was really intended to optimize the DEPTH_INFINITE case. For
DEPTH_ZERO or DEPTH_ONE, it doesn't provide much advantage. I agree though
that it could be interesting to support different scoping to pick up smaller
subtrees, or to have some termination condition. The purpose was really to
cut down on round-trips, so I'm not sure you'd get the same effect with a
visitor or directory stream approach. Perhaps filters could be passed in a
serialized form (like an LDAP filter), so that it can be interpreted on the
machine where the file system lives, to avoid passing unnecessary data over
the wire.
John
"Oberhuber, Martin"
<Martin.Oberhuber@xxxxxxxxxxxxx> Sent by:
eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx
10/20/2008 12:49 PM
Please respond
to E4 developer list
<eclipse-incubator-e4-dev@xxxxxxxxxxx> |
|
To
| "E4 developer list"
<eclipse-incubator-e4-dev@xxxxxxxxxxx>
|
cc
|
|
Subject
| RE: [eclipse-incubator-e4-dev]
[resources] EFS IFileTree |
|
Hi John,
One disadvantage of the IFileTree today is that the file
tree to be
returned must terminate at
some point, and not the slightest
amount
of information is returned if it does not terminate.
This makes it unusable for
file systems that can be endless
(like
the Internet), or even very very large with the user only
being interested in parts of the file tree. Even
refreshLocal
performs a
breadth-first-search and can be limited by the
depth to visit. fetchFileTree() does not support that.
One option for
improving this situation could be if the
fetchFileTree() method would not return a snapshot like
the IFileTree, but rather return a Stream of
IFileStore / IFileInfo
objects that the
client can cancel at any time. A
breadth-first-search algorithm for returning these nodes might
be preferred, though I'd also see some potential
for allowing
arbitrary ordering of
returned nodes with some concept of
allowing a node to be "incomplete" e.g. a folder node with
not all children returned yet.
In JSR 203, the
Path#newDirectoryStream()
[1] and
Files#walkFileTree() [2] methods go in this direction.
[1] http://openjdk.java.net/projects/nio/javadoc/java/nio/file/Path.html#newDirectoryStream(java.nio.file.DirectoryStream.Filter)
[2] http://openjdk.java.net/projects/nio/javadoc/java/nio/file/Files.html#walkFileTree(java.nio.file.Path,%20java.nio.file.FileVisitor)
Cheers,
--
Martin Oberhuber, Senior Member of Technical Staff,
Wind River
Target Management Project Lead,
DSDP PMC Member
http://www.eclipse.org/dsdp/tm
From:
eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx
[mailto:eclipse-incubator-e4-dev-bounces@xxxxxxxxxxx] On Behalf Of
John Arthorne
Sent: Friday, October 17, 2008 7:40
PM
To: E4 developer list
Subject:
[eclipse-incubator-e4-dev] [resources] EFS IFileTree
I forgot to mention
this during the meeting, so I just wanted to mention a little know EFS
interface called IFileTree. The idea of this interface was to allow for
batched interaction with an entire file sub-tree. This prevents the large
number of round-trips needed when a client needs to walk over an entire
subtree of a slow/remote file system. It allows you to get a snapshot of an
entire remote tree state in a single round-trip. In some experiments we did
back in the day, this dramatically sped up certain operations like
refreshLocal over a high latency remote tree. I mention it only because it's
probably an under-exploited concept that could perhaps be expanded upon to
improve performance in remote resource scenarios. I could imagine expanding
the idea to allow a client to queue up a whole batch of file changes, that
could be fired off in a single round-trip to the remote system for
processing.
John_______________________________________________
eclipse-incubator-e4-dev
mailing
list
eclipse-incubator-e4-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev