分发索引时出现间歇性问题 :( 所有服务器都是 Windows Server 2008。
我有两台服务器要分发到,其中一台因以下错误而失败了两次:
INFO: [MDEXHost1] Starting shell utility 'move_dgraph-input_to_dgraph-input-old'.
10-Jun-2015 06:08:36 com.endeca.soleng.eac.toolkit.script.Script runBeanShellScript
SEVERE: Utility 'move_dgraph-input_to_dgraph-input-old' failed.
通过进一步挖掘,我在 PlatformServices\workspace\logs\shell 文件夹的日志文件中发现了这个错误:
Failed to move D:\Firebird\config\script\..\..\.\data\dgraphs\Dgraph1\dgraph_input to
D:\Firebird\config\script\..\..\.\data\dgraphs\Dgraph1\dgraph_input_old: No such file or directory at -e line 1.
服务器的状态是有一个 dgraph_input_new 文件夹,但它正在努力创建 dgraph_input_old 文件夹。dgraph_input 文件夹确实存在,因此“没有这样的文件或目录”很有趣。
服务器有足够的磁盘空间用于操作,并且由于它是间歇性的,我不认为它是文件/文件夹权限(否则它会一直失败)。我什至要求对这些文件夹禁用即时病毒扫描,以防我们的病毒扫描程序锁定文件/文件夹。
我正在努力想出解决这个问题的方法,HALP!
编辑:forge 进程确实停止了 dgraph,但 TomCat6 进程仍在运行。这正常吗?TomCat 会锁定文件夹吗?
编辑:移动文件夹的任务有点像这样的 Perl:
perl.exe -e "use strict; use File::Spec; use File::Copy; use File::Glob qw/:glob/;my $source = 'D:\Firebird\config\script\..\..\.\data\dgraphs\Dgraph1\dgraph_input'; $source =~ s/[\\\/]+$//;my @sources = bsd_glob($source); foreach my $file (@sources) {my @fromPath = File::Spec->splitdir($file); if (scalar @fromPath eq 0) { die \"Failed to split path: $!\"; } my $fromRelative = @fromPath[scalar @fromPath - 1];my $toFile = 'D:\Firebird\config\script\..\..\.\data\dgraphs\Dgraph1\dgraph_input_old'; if ( -d $toFile ) { $toFile =File::Spec->catdir($toFile, $fromRelative); } my $res = move($file, $toFile);if (! $res) { die \"Failed to move $file to$toFile: $!\"; }}"
编辑:这似乎是一个简单的权限问题,如果不将自己提升为管理员,我无法重命名文件夹。该服务以管理员组中的用户身份运行。仅将此文件夹设为管理员会发生什么情况?