Skip to content

Commit fa446b7

Browse files
committed
allow reports to process across restarts
1 parent 1222fe0 commit fa446b7

File tree

8 files changed

+235
-200
lines changed

8 files changed

+235
-200
lines changed

server/src/main/java/password/pwm/ldap/LdapOperationsHelper.java

Lines changed: 8 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
import password.pwm.svc.stats.StatisticsManager;
6060
import password.pwm.util.PasswordData;
6161
import password.pwm.util.i18n.LocaleHelper;
62-
import password.pwm.util.java.JsonUtil;
62+
import password.pwm.util.java.JavaHelper;
6363
import password.pwm.util.java.StringUtil;
6464
import password.pwm.util.java.TimeDuration;
6565
import password.pwm.util.logging.PwmLogger;
@@ -864,12 +864,18 @@ public static Iterator<UserIdentity> readUsersFromLdapForPermissions(
864864
{
865865
final UserSearchEngine userSearchEngine = pwmApplication.getUserSearchEngine();
866866
final Queue<UserIdentity> resultSet = new LinkedList<>();
867+
final long searchTimeoutMs = JavaHelper.silentParseLong(
868+
pwmApplication.getConfig().readAppProperty( AppProperty.REPORTING_LDAP_SEARCH_TIMEOUT ),
869+
30_000 );
867870

868871
for ( final UserPermission userPermission : permissionList )
869872
{
870873
if ( resultSet.size() < maxResults )
871874
{
872-
final SearchConfiguration searchConfiguration = SearchConfiguration.fromPermission( userPermission );
875+
final SearchConfiguration searchConfiguration = SearchConfiguration.fromPermission( userPermission )
876+
.toBuilder()
877+
.searchTimeout( searchTimeoutMs )
878+
.build();
873879
final Map<UserIdentity, Map<String, String>> searchResults = userSearchEngine.performMultiUserSearch(
874880
searchConfiguration,
875881
maxResults - resultSet.size(),
@@ -897,65 +903,6 @@ public UserIdentity next( )
897903
};
898904
}
899905

900-
901-
public static Iterator<UserIdentity> readAllUsersFromLdap(
902-
final PwmApplication pwmApplication,
903-
final SessionLabel sessionLabel,
904-
final String searchFilter,
905-
final int maxResults
906-
)
907-
throws PwmUnrecoverableException, PwmOperationalException
908-
{
909-
final UserSearchEngine userSearchEngine = pwmApplication.getUserSearchEngine();
910-
911-
final SearchConfiguration searchConfiguration;
912-
{
913-
final SearchConfiguration.SearchConfigurationBuilder builder = SearchConfiguration.builder();
914-
915-
builder.enableValueEscaping( false );
916-
builder.searchTimeout( Long.parseLong( pwmApplication.getConfig().readAppProperty( AppProperty.REPORTING_LDAP_SEARCH_TIMEOUT ) ) );
917-
918-
if ( searchFilter == null )
919-
{
920-
builder.username( "*" );
921-
}
922-
else
923-
{
924-
builder.filter( searchFilter );
925-
}
926-
927-
searchConfiguration = builder.build();
928-
}
929-
930-
LOGGER.debug( sessionLabel, () -> "beginning user search using parameters: " + ( JsonUtil.serialize( searchConfiguration ) ) );
931-
932-
final Map<UserIdentity, Map<String, String>> searchResults = userSearchEngine.performMultiUserSearch(
933-
searchConfiguration,
934-
maxResults,
935-
Collections.emptyList(),
936-
sessionLabel
937-
938-
);
939-
LOGGER.debug( sessionLabel, () -> "user search found " + searchResults.size() + " users" );
940-
941-
final Queue<UserIdentity> tempQueue = new LinkedList<>( searchResults.keySet() );
942-
943-
return new Iterator<UserIdentity>()
944-
{
945-
@Override
946-
public boolean hasNext( )
947-
{
948-
return tempQueue.peek() != null;
949-
}
950-
951-
@Override
952-
public UserIdentity next( )
953-
{
954-
return tempQueue.poll();
955-
}
956-
};
957-
}
958-
959906
public static Instant readPasswordExpirationTime( final ChaiUser theUser )
960907
{
961908
try

server/src/main/java/password/pwm/ldap/search/SearchConfiguration.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
import com.novell.ldapchai.provider.ChaiProvider;
2424
import lombok.Builder;
25-
import lombok.Getter;
25+
import lombok.Value;
2626
import password.pwm.PwmConstants;
2727
import password.pwm.config.value.data.FormConfiguration;
2828
import password.pwm.config.value.data.UserPermission;
@@ -35,11 +35,10 @@
3535
import java.util.List;
3636
import java.util.Map;
3737

38-
@Builder
39-
@Getter
38+
@Value
39+
@Builder( toBuilder = true )
4040
public class SearchConfiguration implements Serializable
4141
{
42-
4342
private String filter;
4443
private String ldapProfile;
4544
private String username;

server/src/main/java/password/pwm/svc/report/ReportCsvUtility.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ private void outputRecordRow(
187187
csvPrinter.printRecord( csvRow );
188188
}
189189

190-
public ReportService.RecordIterator<UserCacheRecord> iterator( )
190+
public ClosableIterator<UserCacheRecord> iterator( )
191191
{
192192
return reportService.iterator();
193193
}

0 commit comments

Comments
 (0)