Planned maintenance is scheduled for the week of June 15th - the exact date and time will be announced soon.
See More Details
Ask Questions and Find Answers
Important:
Ask is now read-only. You can review any existing questions and answers, but not add anything new.
But - don't panic! While ask is no more, we've replaced it with discuss - the new Liferay Discussion Forum! Read more here here or just visit the site here:
discuss.liferay.com
Nie znaleziono pliku (File not found)
Mam mały problemik, który denerwuje i uniemożliwia indeksowanie plików.
Wyrzuca mi w logu 'file not found exception' oraz ścieżkę do pliku.
Plik faktycznie nie istnieje na zasobie, ale w bazie (PostgreSQL) informacja o nim nadal istnieje.
Jak to ładnie wyczyścić, by nie grzebać się po bazie? Zakładam, że może to nie być jedyny a pierwszy plik nieodnaleziony przez portal.
Wyrzuca mi w logu 'file not found exception' oraz ścieżkę do pliku.
Plik faktycznie nie istnieje na zasobie, ale w bazie (PostgreSQL) informacja o nim nadal istnieje.
Jak to ładnie wyczyścić, by nie grzebać się po bazie? Zakładam, że może to nie być jedyny a pierwszy plik nieodnaleziony przez portal.
Tak dla porządku
Podaj proszę wersja Liferay, bazy oraz z jakiego storage hook korzystasz (wartość property "dl.store.impl").
Cześć,
Przepraszam za brak danych podstawowych, oto one:
Liferay=6.2.1
dl.store.impl=com.liferay.portlet.documentlibrary.store.FileSystemStore
Pamiętam, że jak przejmowałem ten portal po poprzednim adminie to wyskoczył błąd dwóch folderów - nie dało się ich otworzyć, skasować - no w skrócie mówić nic nie można było zrobić. Jakimś cudem udało mi się wtedy przenieść ich zawartość (z poziomu Liferaya) do nowych folderów a te błędne skasować. Obawiam się, że być może jest to pokłosie tamtej akcji.
Na dysku te dokumenty nie istnieją.
Przepraszam za brak danych podstawowych, oto one:
Liferay=6.2.1
dl.store.impl=com.liferay.portlet.documentlibrary.store.FileSystemStore
Pamiętam, że jak przejmowałem ten portal po poprzednim adminie to wyskoczył błąd dwóch folderów - nie dało się ich otworzyć, skasować - no w skrócie mówić nic nie można było zrobić. Jakimś cudem udało mi się wtedy przenieść ich zawartość (z poziomu Liferaya) do nowych folderów a te błędne skasować. Obawiam się, że być może jest to pokłosie tamtej akcji.
Na dysku te dokumenty nie istnieją.
jeśli nie wykluczasz ręcznych akcji kiedyś na dysku, to jedyne co mi przychodzi do głowy to napisanie prostego kawałka javy, który przeiteruje po wszystkich plikach i usunie z bazy te, których i tak nie ma w repozytorium (u Ciebie na dysku).
Problem polega na tym, że ja Javy praktycznie nie znam (dopiero się uczę). Może istnieje jakaś inna możliwość? Na przykład jakiś portlet bądź dodatek do Liferaya?
Sorki ze tak późno ale nie miałem czasu wcześniej. Na szybko napisałem taki groovy script którego możesz uruchomić z Control Panel > Server Administration > Script i powie Ci jakie pliki z DL nie może znaleźć.
Kluczowe info tu to napisany na szybko - NIE uruchamiaj go na produkcji. Nie testowałem go na więcej niż 10 rekordów więc możliwe że będziesz miał OOM przy dużej bazie lub inne problemy. Potraktuj go jako wskazówka co można zrobić a nie jako gotowe narzędzie.
Kluczowe info tu to napisany na szybko - NIE uruchamiaj go na produkcji. Nie testowałem go na więcej niż 10 rekordów więc możliwe że będziesz miał OOM przy dużej bazie lub inne problemy. Potraktuj go jako wskazówka co można zrobić a nie jako gotowe narzędzie.
import com.liferay.portlet.documentlibrary.model.DLFileEntry;
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
import com.liferay.portlet.documentlibrary.store.DLStoreUtil;
fileEntries = DLFileEntryLocalServiceUtil.getFileEntries(-1, -1);
for (fileEntry in fileEntries) {
try {
File f = DLStoreUtil.getFile(fileEntry.getCompanyId(), fileEntry.getDataRepositoryId(), fileEntry.getName(), null);
if (!f.exists()) {
println "File '" + f.getAbsolutePath() + "' does not exists! The reference was found in " + fileEntry;
}
} catch (Exception e) {
println "Excepton while checking file for " + fileEntry + ": " + e;
}
}
println "Done checking files!"
Krzysztof Gołębiowski, modified 11 Years ago.
Liferay Master
Posts: 549
Join Date: 6/25/11
Recent Posts
Ja tylko dorzucę że do skrypty w groovym (i nie tylko) testuje się dość ciężko na standardowym formularzu w Panelu Sterowania. Ja sam korzystam z jednej z marketowych aplikacji: https://www.liferay.com/marketplace/-/mp/application/25618082.
KG
KG
Community
Company
Feedback