> On 七月 25, 2016, 1:45 p.m., Attila Simon wrote:
> > Hi,
> > 
> > Your change interfears with a caching mechanism. I believe the best way to 
> > describe this interference is this test below. The problem in a nutshell is 
> > when a wildcard is specified then the parent directory used by file 
> > matching is not the immediate parent but the directory high above. Thus its 
> > last modification time won't be updated when a new file was added. Only 
> > mtime of dir1 is updated when file2.txt is added but caching is initialized 
> > by fg1 directory so it only monitors that for changes. I think either a 
> > documentation should state that when using wildcards then caching won't 
> > work or even better an assertation should check this combination at 
> > startup. (Making cache work with wildcard would be the best).
> > 
> > 
> >   @Test
> >   public void testWildcardsDirFilteringCache() throws IOException, 
> > InterruptedException {
> >     //first iteration everything is working as expected
> >     File f1 = new File(tmpDir.getAbsolutePath() + "/fg1/dir1/file1.txt");
> >     Files.createParentDirs(f1);
> >     Files.write("file1\n", f1, Charsets.UTF_8);
> > 
> >     Context context = new Context();
> >     context.put(POSITION_FILE, posFilePath);
> >     context.put(FILE_GROUPS, "fg1");
> >     context.put(FILE_GROUPS_PREFIX + "fg1", tmpDir.getAbsolutePath() + 
> > "/fg1/*/file.*");
> > 
> >     Configurables.configure(source, context);
> >     source.start();
> >     source.process();
> >     Transaction txn = channel.getTransaction();
> >     txn.begin();
> >     List<String> out = Lists.newArrayList();
> >     for (int i = 0; i < 2; i++) {
> >       Event e = channel.take();
> >       if (e != null) {
> >         out.add(TestTaildirEventReader.bodyAsString(e));
> >       }
> >     }
> >     txn.commit();
> >     txn.close();
> > 
> >     // empty iterations simulating that time is passing by
> >     Thread.sleep(1000);
> >     source.process();
> >     Thread.sleep(1000);
> >     
> >     //file was created after a while it should be picked up as well
> >     File f2 = new File(tmpDir.getAbsolutePath() + "/fg1/dir1/file2.txt");
> >     Files.write("file2\n", f2, Charsets.UTF_8);
> > 
> >     source.process();
> >     txn = channel.getTransaction();
> >     txn.begin();
> >     for (int i = 0; i < 2; i++) {
> >       Event e = channel.take();
> >       if (e != null) {
> >         out.add(TestTaildirEventReader.bodyAsString(e));
> >       }
> >     }
> >     txn.commit();
> >     txn.close();
> >     
> >     assertEquals(2, out.size()); //fails as file2.txt won't appear in the 
> > channel ever
> >     assertTrue(out.contains("file1"));
> >     assertTrue(out.contains("file2"));
> >   }

Thanks for your review. I will modify the code asap.


- qiao


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/50378/#review143374
-----------------------------------------------------------


On 七月 24, 2016, 10:37 a.m., qiao wen wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/50378/
> -----------------------------------------------------------
> 
> (Updated 七月 24, 2016, 10:37 a.m.)
> 
> 
> Review request for Flume.
> 
> 
> Repository: flume-git
> 
> 
> Description
> -------
> 
> In our log management project, we wan't to track many log files like this:
> /app/dir1/log.*
> /app/dir2/log.*
> ...
> /app/dirn/log.*
> But TaildirSource can't support wildcards in filegroup directory name. The 
> following config is expected:
> a1.sources.r1.filegroups.fg = /app/*/log.*
> 
> 
> Diffs
> -----
> 
>   flume-ng-doc/sphinx/FlumeUserGuide.rst 1334500 
>   
> flume-ng-sources/flume-taildir-source/src/main/java/org/apache/flume/source/taildir/TaildirMatcher.java
>  ad9f720 
>   
> flume-ng-sources/flume-taildir-source/src/test/java/org/apache/flume/source/taildir/TestTaildirSource.java
>  097ee0b 
> 
> Diff: https://reviews.apache.org/r/50378/diff/
> 
> 
> Testing
> -------
> 
> All tests in TestTaildirSource passed.
> 
> 
> Thanks,
> 
> qiao wen
> 
>

Reply via email to