Remove long-dead LogsExportCursor and PersistedRangeLong

LogsExportCursor was only used by ExportLogsTaskServlet, which we removed a long time ago.  It's just dead code.  The PersistedRangeLong type was only written for use by LogsExportCursor, and since it hasn't picked up new users in 3+ years I don't think we need to keep it around.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=169264994
This commit is contained in:
nickfelt 2017-09-19 10:51:28 -07:00 committed by jianglai
parent 0994ce76c7
commit 67116c5fa1
8 changed files with 0 additions and 307 deletions

View file

@ -343,8 +343,6 @@ registry codebase:
* `Lock` -- Lock entities are used to control access to a shared resource such * `Lock` -- Lock entities are used to control access to a shared resource such
as an App Engine queue. Under ordinary circumstances, these locks will be as an App Engine queue. Under ordinary circumstances, these locks will be
cleaned up automatically, and should not accumulate. cleaned up automatically, and should not accumulate.
* `LogsExportCursor` -- This is a single entity which maintains the state of
log export.
* `MR-*` -- These entities are generated by the App Engine MapReduce library * `MR-*` -- These entities are generated by the App Engine MapReduce library
in the course of running MapReduces. in the course of running MapReduces.
* `Modification` -- A Modification is a special type of billing event which * `Modification` -- A Modification is a special type of billing event which

View file

@ -29,7 +29,6 @@ import google.registry.model.domain.DomainApplication;
import google.registry.model.domain.DomainBase; import google.registry.model.domain.DomainBase;
import google.registry.model.domain.DomainResource; import google.registry.model.domain.DomainResource;
import google.registry.model.domain.LrpTokenEntity; import google.registry.model.domain.LrpTokenEntity;
import google.registry.model.export.LogsExportCursor;
import google.registry.model.host.HostResource; import google.registry.model.host.HostResource;
import google.registry.model.index.DomainApplicationIndex; import google.registry.model.index.DomainApplicationIndex;
import google.registry.model.index.EppResourceIndex; import google.registry.model.index.EppResourceIndex;
@ -95,7 +94,6 @@ public final class EntityClasses {
KmsSecret.class, KmsSecret.class,
KmsSecretRevision.class, KmsSecretRevision.class,
Lock.class, Lock.class,
LogsExportCursor.class,
LrpTokenEntity.class, LrpTokenEntity.class,
PollMessage.class, PollMessage.class,
PollMessage.Autorenew.class, PollMessage.Autorenew.class,

View file

@ -1,55 +0,0 @@
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package google.registry.model.common;
import com.google.common.collect.BoundType;
import com.google.common.collect.Range;
import com.googlecode.objectify.annotation.Embed;
import google.registry.model.ImmutableObject;
/** An object that's equivalent to a {@code Range<Long>} that can be persisted to Datastore. */
@Embed
public class PersistedRangeLong extends ImmutableObject {
private Long lowerBound = null;
private BoundType lowerBoundType = null;
private Long upperBound = null;
private BoundType upperBoundType = null;
public Range<Long> asRange() {
Range<Long> range = Range.all();
if (lowerBound != null) {
range = range.intersection(Range.downTo(lowerBound, lowerBoundType));
}
if (upperBound != null) {
range = range.intersection(Range.upTo(upperBound, upperBoundType));
}
return range;
}
public static PersistedRangeLong create(Range<Long> range) {
PersistedRangeLong instance = new PersistedRangeLong();
if (range.hasLowerBound()) {
instance.lowerBound = range.lowerEndpoint();
instance.lowerBoundType = range.lowerBoundType();
}
if (range.hasUpperBound()) {
instance.upperBound = range.upperEndpoint();
instance.upperBoundType = range.upperBoundType();
}
return instance;
}
}

View file

@ -1,80 +0,0 @@
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package google.registry.model.export;
import static google.registry.util.CollectionUtils.nullToEmptyImmutableCopy;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.googlecode.objectify.annotation.Entity;
import google.registry.model.Buildable;
import google.registry.model.common.CrossTldSingleton;
import google.registry.model.common.PersistedRangeLong;
import java.util.List;
import java.util.Set;
/** A saved cursor of exported log records so far. */
@Entity
public class LogsExportCursor extends CrossTldSingleton implements Buildable {
/**
* A set of timestamp ranges (expressesd in microseconds since the epoch) that have been exported
* to GCS.
*/
Set<PersistedRangeLong> exportedRanges;
/**
* A list of filenames that are pending import into bigquery. Files may not have been imported
* into bigquery on previous iterations if there are gaps in the exported ranges.
*/
List<String> filesPendingImport;
public ImmutableSet<PersistedRangeLong> getExportedRanges() {
return nullToEmptyImmutableCopy(exportedRanges);
}
public ImmutableList<String> getFilesPendingImport() {
return nullToEmptyImmutableCopy(filesPendingImport);
}
@Override
public Builder asBuilder() {
return new Builder(clone(this));
}
/** A builder for constructing {@link LogsExportCursor} objects, since they are immutable. */
public static class Builder extends Buildable.Builder<LogsExportCursor> {
public Builder() {}
private Builder(LogsExportCursor instance) {
super(instance);
}
public Builder setExportedRanges(ImmutableSet<PersistedRangeLong> exportedRanges) {
getInstance().exportedRanges = exportedRanges;
return this;
}
public Builder setFilesPendingImport(ImmutableList<String> filesPendingImport) {
getInstance().filesPendingImport = filesPendingImport;
return this;
}
@Override
public LogsExportCursor build() {
return super.build();
}
}
}

View file

@ -12,7 +12,6 @@ HistoryEntry
HostResource HostResource
KmsSecret KmsSecret
KmsSecretRevision KmsSecretRevision
LogsExportCursor
LrpTokenEntity LrpTokenEntity
Modification Modification
OneTime OneTime

View file

@ -1,91 +0,0 @@
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package google.registry.model.common;
import static com.google.common.truth.Truth.assertThat;
import com.google.common.collect.Range;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/** Unit tests for {@link PersistedRangeLong}. */
@RunWith(JUnit4.class)
public class PersistedRangeLongTest {
private void doConversionTest(Range<Long> range) {
assertThat(PersistedRangeLong.create(range).asRange()).isEqualTo(range);
}
@Test
public void all() {
doConversionTest(Range.<Long>all());
}
@Test
public void lessThan() {
doConversionTest(Range.<Long>lessThan(10L));
}
@Test
public void atMost() {
doConversionTest(Range.<Long>atMost(10L));
}
@Test
public void greaterThan() {
doConversionTest(Range.<Long>greaterThan(10L));
}
@Test
public void atLeast() {
doConversionTest(Range.<Long>atLeast(10L));
}
@Test
public void open() {
doConversionTest(Range.<Long>open(5L, 10L));
}
@Test
public void closed() {
doConversionTest(Range.<Long>closed(5L, 10L));
}
@Test
public void openClosed() {
doConversionTest(Range.<Long>openClosed(5L, 10L));
}
@Test
public void closedOpen() {
doConversionTest(Range.<Long>closedOpen(5L, 10L));
}
@Test
public void singleton() {
doConversionTest(Range.<Long>singleton(5L));
}
@Test
public void openClosedEmpty() {
doConversionTest(Range.<Long>openClosed(5L, 5L));
}
@Test
public void closedOpenEmpty() {
doConversionTest(Range.<Long>closedOpen(5L, 5L));
}
}

View file

@ -1,64 +0,0 @@
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package google.registry.model.export;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.testing.DatastoreHelper.persistResource;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Range;
import google.registry.model.EntityTestCase;
import google.registry.model.common.PersistedRangeLong;
import org.junit.Before;
import org.junit.Test;
/** Unit tests for {@link LogsExportCursor}. */
public class LogsExportCursorTest extends EntityTestCase {
LogsExportCursor logsExportCursor;
@Before
public void setUp() throws Exception {
logsExportCursor = new LogsExportCursor.Builder()
.setExportedRanges(ImmutableSet.of(
PersistedRangeLong.create(Range.<Long>all()),
PersistedRangeLong.create(Range.<Long>lessThan(10L)),
PersistedRangeLong.create(Range.<Long>atMost(10L)),
PersistedRangeLong.create(Range.<Long>greaterThan(10L)),
PersistedRangeLong.create(Range.<Long>atLeast(10L)),
PersistedRangeLong.create(Range.<Long>open(5L, 10L)),
PersistedRangeLong.create(Range.<Long>closed(5L, 10L)),
PersistedRangeLong.create(Range.<Long>openClosed(5L, 10L)),
PersistedRangeLong.create(Range.<Long>closedOpen(5L, 10L))))
.setFilesPendingImport(ImmutableList.of(
"gs://foo/bar",
"gs://foo/baz",
"gs://foo/bash"))
.build();
persistResource(logsExportCursor);
}
@Test
public void testPersistence() throws Exception {
assertThat(ofy().load().entity(logsExportCursor).now()).isEqualTo(logsExportCursor);
}
@Test
public void testIndexing() throws Exception {
verifyIndexing(logsExportCursor);
}
}

View file

@ -117,12 +117,6 @@ class google.registry.model.common.GaeUserIdConverter {
@Id long id; @Id long id;
com.google.appengine.api.users.User user; com.google.appengine.api.users.User user;
} }
class google.registry.model.common.PersistedRangeLong {
com.google.common.collect.BoundType lowerBoundType;
com.google.common.collect.BoundType upperBoundType;
java.lang.Long lowerBound;
java.lang.Long upperBound;
}
class google.registry.model.common.TimeOfYear { class google.registry.model.common.TimeOfYear {
java.lang.String timeString; java.lang.String timeString;
} }
@ -371,12 +365,6 @@ class google.registry.model.eppcommon.Trid {
java.lang.String clientTransactionId; java.lang.String clientTransactionId;
java.lang.String serverTransactionId; java.lang.String serverTransactionId;
} }
class google.registry.model.export.LogsExportCursor {
@Id long id;
@Parent com.googlecode.objectify.Key<google.registry.model.common.EntityGroupRoot> parent;
java.util.List<java.lang.String> filesPendingImport;
java.util.Set<google.registry.model.common.PersistedRangeLong> exportedRanges;
}
class google.registry.model.host.HostResource { class google.registry.model.host.HostResource {
@Id java.lang.String repoId; @Id java.lang.String repoId;
com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogManifest>> revisions; com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogManifest>> revisions;