[GNOME VFS] 5 second timeout thing ...

Michael Meeks <[email protected]>
Newsgroups gmane.comp.gnome.vfs
Message-ID <[email protected]>
Hi guys,

	I think there's a mis-behaving timeout effect in gnome-vfs, it seems
that nautilus monitors the mime database for changes, and re-renders all
it's windows on change. If this re-rendering process takes ~5 seconds [
as it can with my huge directory ], then the net effect is that every
gnome-vfs call re-parses the entire mime database, and renders all the
windows.

	This is not optimal ;-) it could even be the cause of the non-linearity
on large directories we see. So ... I'm wondering why there is a timeout
there ? and why we re-parse without statting to see if we need to first
?

	Regards,

		Michael.

PS. the trace looks something like this, the analyis is mostly
guesswork:

#0  0x40861ae9 in g_hash_table_lookup (hash_table=0x81e7be0,
key=0x85d8330) at ghash.c:192
#1  0x40cc41ea in do_is_local (method=0x40cc7960, uri=0x83d1d98) at
file-method.c:897
#2  0x406b42c1 in gnome_vfs_uri_is_local (uri=0x83d1d98) at
gnome-vfs-uri.c:1149
#3  0x4005a289 in nautilus_directory_is_local (directory=0x86b49a8) at
nautilus-directory.c:523
#4  0x4006995c in nautilus_file_is_local (file=0x8fbf9c8) at
nautilus-file.c:1173
#5  0x400880ef in nautilus_icon_factory_get_icon_for_file
(file=0x8fbf9c8, modifier=0x400b850d "")
    at nautilus-icon-factory.c:1173
#6  0x080926a0 in fm_icon_container_get_icon_images
(container=0x8133e60, data=0x8fbf9c8, 
    modifier=0x400b850d "", emblem_icons=0xbfffde20) at
fm-icon-container.c:74
#7  0x4007eb97 in nautilus_icon_container_get_icon_images
(container=0x8133e60, data=0x8fbf9c8, 
    modifier=0x400b850d "", emblem_icons=0xbfffde20) at
nautilus-icon-container.c:3775
#8  0x4007ec9f in nautilus_icon_container_update_icon
(container=0x8133e60, icon=0xa8a2e30)
    at nautilus-icon-container.c:3816
#9  0x4007fefa in nautilus_icon_container_request_update_all
(container=0x8133e60)
    at nautilus-icon-container.c:4156
#10 0x40815cca in g_cclosure_marshal_VOID__VOID (closure=0x827e310,
return_value=0x0, n_param_values=1, 
    param_values=0xbfffe1f0, invocation_hint=0xbfffe0f8,
marshal_data=0x0) at gmarshal.c:77
#11 0x40800f7a in g_closure_invoke (closure=0x827e310, return_value=0x0,
n_param_values=1, 
    param_values=0xbfffe1f0, invocation_hint=0xbfffe0f8) at
gclosure.c:437
#12 0x40814e9f in signal_emit_unlocked_R (node=0x8203e58, detail=0,
instance=0x8201968, emission_return=0x0, 
    instance_and_params=0xbfffe1f0) at gsignal.c:2341
#13 0x4081363e in g_signal_emit_valist (instance=0x8201968,
signal_id=189, detail=0, var_args=0xbfffe37c)
    at gsignal.c:2100
#14 0x408138bb in g_signal_emit (instance=0x8201968, signal_id=189,
detail=0) at gsignal.c:2144
#15 0x400878c6 in mime_type_data_changed_callback (monitor=0x8202040,
user_data=0x0)
    at nautilus-icon-factory.c:904
#16 0x40815cca in g_cclosure_marshal_VOID__VOID (closure=0x8202160,
return_value=0x0, n_param_values=1, 
    param_values=0xbfffe680, invocation_hint=0xbfffe588,
marshal_data=0x0) at gmarshal.c:77
#17 0x40800f7a in g_closure_invoke (closure=0x8202160, return_value=0x0,
n_param_values=1, 
    param_values=0xbfffe680, invocation_hint=0xbfffe588) at
gclosure.c:437
#18 0x40814e9f in signal_emit_unlocked_R (node=0x8201cd8, detail=0,
instance=0x8202040, emission_return=0x0, 
    instance_and_params=0xbfffe680) at gsignal.c:2341
#19 0x4081363e in g_signal_emit_valist (instance=0x8202040,
signal_id=190, detail=0, var_args=0xbfffe80c)
    at gsignal.c:2100
#20 0x408138bb in g_signal_emit (instance=0x8202040, signal_id=190,
detail=0) at gsignal.c:2144
#21 0x406ac9cd in gnome_vfs_mime_monitor_emit_data_changed
(monitor=0x8202040) at gnome-vfs-mime-monitor.c:169
#22 0x406aa0d8 in gnome_vfs_mime_info_reload () at
gnome-vfs-mime-info.c:768
#23 0x406a9f4c in reload_if_needed () at gnome-vfs-mime-info.c:706
#24 0x406aa42d in get_value_real (mime_type=0x811a210 "x-directory/*",
key=0x406bbefc "deleted", 
    user_hash_table=0x80ee3a0, system_hash_table=0x80ed7c0) at
gnome-vfs-mime-info.c:914
#25 0x406aae43 in gnome_vfs_mime_get_registered_mime_type_key
(mime_type=0x811a210 "x-directory/*", 
    key=0x406bbefc "deleted") at gnome-vfs-mime-info.c:1489
#26 0x406aa2a7 in is_mime_type_deleted (mime_type=0x811a210
"x-directory/*") at gnome-vfs-mime-info.c:876
#27 0x406aa453 in get_value_real (mime_type=0x811a210 "x-directory/*", 
---Type <return> to continue, or q <return> to quit---
    key=0x406bbd40 "short_list_component_user_removals",
user_hash_table=0x80ed820, system_hash_table=0x80eda98)
    at gnome-vfs-mime-info.c:916
#28 0x406aa537 in gnome_vfs_mime_get_value (mime_type=0x811a210
"x-directory/*", 
    key=0x406bbd40 "short_list_component_user_removals") at
gnome-vfs-mime-info.c:968
#29 0x406a7ca9 in gnome_vfs_mime_get_short_list_components
(mime_type=0xaee7060 "x-directory/normal")
    at gnome-vfs-mime-handlers.c:685
#30 0x40094aac in nautilus_mime_get_short_list_components_for_file
(file=0x85d7710)
    at nautilus-mime-actions.c:587
#31 0x4009441c in nautilus_mime_get_default_component_sort_conditions
(file=0x85d7710, 
    default_component_string=0xaee6fe0
"OAFIID:Nautilus_File_Manager_Icon_View") at nautilus-mime-actions.c:287
#32 0x40094683 in nautilus_mime_get_default_component_for_file_internal
(file=0x85d7710, user_chosen=0x0)
    at nautilus-mime-actions.c:389
#33 0x400947a0 in nautilus_mime_get_default_component_for_file
(file=0x85d7710) at nautilus-mime-actions.c:435
#34 0x0805f2e1 in got_file_info_callback (file=0x85d7710,
callback_data=0xad78700)
    at nautilus-applicable-views.c:110
#35 0x40051949 in ready_callback_call (directory=0x826a538,
callback=0xad785c8)
    at nautilus-directory-async.c:1210
#36 0x40052c03 in call_ready_callbacks (directory=0x826a538) at
nautilus-directory-async.c:1797
#37 0x400555ee in nautilus_directory_async_state_changed
(directory=0x826a538) at nautilus-directory-async.c:3056
#38 0x40054d43 in link_info_done (directory=0x826a538, file=0x85d7710,
uri=0x0, name=0x0, icon=0x0)
    at nautilus-directory-async.c:2782
#39 0x40052921 in lacks_link_info (file=0x85d7710) at
nautilus-directory-async.c:1680
#40 0x4005295b in has_problem (directory=0x826a538, file=0x85d7710,
problem=0x4005287c <lacks_link_info>)
    at nautilus-directory-async.c:1701
#41 0x40052b2d in request_is_satisfied (directory=0x826a538,
file=0x85d7710, request=0xbfffec80)
    at nautilus-directory-async.c:1758
#42 0x40051d28 in nautilus_directory_check_if_ready_internal
(directory=0x826a538, file=0x85d7710, 
    file_attributes=0xaea2334) at nautilus-directory-async.c:1302
#43 0x400a2bbd in vfs_file_check_if_ready (file=0x85d7710,
file_attributes=0xaea2334) at nautilus-vfs-file.c:91
#44 0x40070f19 in nautilus_file_check_if_ready (file=0x85d7710,
file_attributes=0xaea2334)
    at nautilus-file.c:4810
#45 0x08074626 in background_metadata_changed_callback
(sidebar=0x81f88f0) at nautilus-sidebar.c:1607
#46 0x40815cca in g_cclosure_marshal_VOID__VOID (closure=0x82ee178,
return_value=0x0, n_param_values=1, 
    param_values=0xbffff020, invocation_hint=0xbfffef28,
marshal_data=0x0) at gmarshal.c:77
#47 0x40800f7a in g_closure_invoke (closure=0x82ee178, return_value=0x0,
n_param_values=1, 
    param_values=0xbffff020, invocation_hint=0xbfffef28) at
gclosure.c:437
#48 0x40814e9f in signal_emit_unlocked_R (node=0x81e92a0, detail=0,
instance=0x85d7710, emission_return=0x0, 
    instance_and_params=0xbffff020) at gsignal.c:2341
#49 0x4081363e in g_signal_emit_valist (instance=0x85d7710,
signal_id=180, detail=0, var_args=0xbffff1ac)
    at gsignal.c:2100
#50 0x408138bb in g_signal_emit (instance=0x85d7710, signal_id=180,
detail=0) at gsignal.c:2144
#51 0x40070c34 in nautilus_file_emit_changed (file=0x85d7710) at
nautilus-file.c:4740
#52 0x4005ad6d in nautilus_directory_emit_change_signals
(directory=0x826a538, changed_files=0xbffff210)
    at nautilus-directory.c:743
---Type <return> to continue, or q <return> to quit---
#53 0x400709fc in nautilus_file_changed (file=0x85d7710) at
nautilus-file.c:4686
#54 0x400549ab in get_info_callback (handle=0x60, results=0xad774a0,
callback_data=0x826a538)
    at nautilus-directory-async.c:2682
#55 0x406a49fc in dispatch_get_file_info_callback
(notify_result=0xad78a98) at gnome-vfs-job.c:269
#56 0x406a4f45 in dispatch_job_callback (data=0xad78a98) at
gnome-vfs-job.c:550
#57 0x4086cd40 in g_idle_dispatch (source=0xad78b88, callback=0x406a4e08
<dispatch_job_callback>, 
    user_data=0xad78a98) at gmain.c:3129
#58 0x4086a6fe in g_main_dispatch (context=0x80cbf90) at gmain.c:1617
#59 0x4086b515 in g_main_context_dispatch (context=0x80cbf90) at
gmain.c:2161
#60 0x4086b8a8 in g_main_context_iterate (context=0x80cbf90, block=1,
dispatch=1, self=0x80be2a8) at gmain.c:2242
#61 0x4086bf4e in g_main_loop_run (loop=0x8240a48) at gmain.c:2462
#62 0x403d64bf in gtk_main () at gtkmain.c:936
#63 0x08066475 in main (argc=1, argv=0xbffff664) at nautilus-main.c:263
#64 0x409de316 in __libc_start_main (main=0x8065fb8 <main>, argc=1,
ubp_av=0xbffff664, init=0x8059fc0 <_init>, 
    fini=0x80a0c70 <_fini>, rtld_fini=0x4000d2fc <_dl_fini>,
stack_end=0xbffff65c)
    at ../sysdeps/generic/libc-start.c:129


-- 
 [email protected]  <><, Pseudo Engineer, itinerant idiot


_______________________________________________
gnome-vfs maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/gnome-vfs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.