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
as an App Engine queue. Under ordinary circumstances, these locks will be
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
in the course of running MapReduces.
* `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.DomainResource;
import google.registry.model.domain.LrpTokenEntity;
import google.registry.model.export.LogsExportCursor;
import google.registry.model.host.HostResource;
import google.registry.model.index.DomainApplicationIndex;
import google.registry.model.index.EppResourceIndex;
@ -95,7 +94,6 @@ public final class EntityClasses {
KmsSecret.class,
KmsSecretRevision.class,
Lock.class,
LogsExportCursor.class,
LrpTokenEntity.class,
PollMessage.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
KmsSecret
KmsSecretRevision
LogsExportCursor
LrpTokenEntity
Modification
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;
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 {
java.lang.String timeString;
}
@ -371,12 +365,6 @@ class google.registry.model.eppcommon.Trid {
java.lang.String clientTransactionId;
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 {
@Id java.lang.String repoId;
com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, com.googlecode.objectify.Key<google.registry.model.ofy.CommitLogManifest>> revisions;